<?php
   include_once('funciones_generales_session.php');
   @ini_set('session.cookie_httponly', 1);
   @ini_set('session.use_only_cookies', 1);
   @ini_set('session.cookie_secure', 0);
   @session_start() ;
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil']          = "conn_mysql";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_prod']       = "";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_conf']       = "";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imagens']    = "";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp']  = "";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_cache']      = "";
   $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_doc']        = "";
    //check publication with the prod
    $NM_dir_atual = getcwd();
    if (empty($NM_dir_atual))
    {
        $str_path_sys          = (isset($_SERVER['SCRIPT_FILENAME'])) ? $_SERVER['SCRIPT_FILENAME'] : $_SERVER['ORIG_PATH_TRANSLATED'];
        $str_path_sys          = str_replace("\\", '/', $str_path_sys);
    }
    else
    {
        $sc_nm_arquivo         = explode("/", $_SERVER['PHP_SELF']);
        $str_path_sys          = str_replace("\\", "/", getcwd()) . "/" . $sc_nm_arquivo[count($sc_nm_arquivo)-1];
    }
    $str_path_apl_url = $_SERVER['PHP_SELF'];
    $str_path_apl_url = str_replace("\\", '/', $str_path_apl_url);
    $str_path_apl_url = substr($str_path_apl_url, 0, strrpos($str_path_apl_url, "/"));
    $str_path_apl_url = substr($str_path_apl_url, 0, strrpos($str_path_apl_url, "/")+1);
    $str_path_apl_dir = substr($str_path_sys, 0, strrpos($str_path_sys, "/"));
    $str_path_apl_dir = substr($str_path_apl_dir, 0, strrpos($str_path_apl_dir, "/")+1);
    //check prod
    if(empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_path_prod']))
    {
            /*check prod*/$_SESSION['scriptcase']['funciones_generales']['glo_nm_path_prod'] = $str_path_apl_url . "_lib/prod";
    }
    //check img
    if(empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imagens']))
    {
            /*check img*/$_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imagens'] = $str_path_apl_url . "_lib/file/img";
    }
    //check tmp
    if(empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp']))
    {
            /*check tmp*/$_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp'] = $str_path_apl_url . "_lib/tmp";
    }
    //check cache
    if(empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_path_cache']))
    {
            /*check tmp*/$_SESSION['scriptcase']['funciones_generales']['glo_nm_path_cache'] = $str_path_apl_dir . "_lib/file/cache";
    }
    //check doc
    if(empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_path_doc']))
    {
            /*check doc*/$_SESSION['scriptcase']['funciones_generales']['glo_nm_path_doc'] = $str_path_apl_dir . "_lib/file/doc";
    }
    //end check publication with the prod
//
class funciones_generales_ini
{
   var $nm_cod_apl;
   var $nm_nome_apl;
   var $nm_seguranca;
   var $nm_grupo;
   var $nm_autor;
   var $nm_versao_sc;
   var $nm_tp_lic_sc;
   var $nm_dt_criacao;
   var $nm_hr_criacao;
   var $nm_autor_alt;
   var $nm_dt_ult_alt;
   var $nm_hr_ult_alt;
   var $nm_timestamp;
   var $nm_app_version;
   var $cor_link_dados;
   var $root;
   var $server;
   var $java_protocol;
   var $server_pdf;
   var $Arr_result;
   var $sc_protocolo;
   var $path_prod;
   var $path_link;
   var $path_aplicacao;
   var $path_embutida;
   var $path_botoes;
   var $path_img_global;
   var $path_img_modelo;
   var $path_icones;
   var $path_imagens;
   var $path_imag_cab;
   var $path_imag_temp;
   var $path_libs;
   var $path_doc;
   var $str_lang;
   var $str_conf_reg;
   var $str_schema_all;
   var $Str_btn_grid;
   var $str_google_fonts;
   var $path_cep;
   var $path_secure;
   var $path_js;
   var $path_help;
   var $path_adodb;
   var $path_grafico;
   var $path_atual;
   var $Gd_missing;
   var $sc_site_ssl;
   var $Qtd_reg_ajax_grid;
   var $nm_falta_var;
   var $nm_falta_var_db;
   var $nm_tpbanco;
   var $nm_servidor;
   var $nm_usuario;
   var $nm_senha;
   var $nm_database_encoding;
   var $nm_arr_db_extra_args = array();
   var $nm_con_db2 = array();
   var $nm_con_persistente;
   var $nm_con_use_schema;
   var $nm_tabela;
   var $nm_ger_css_emb;
   var $sc_tem_trans_banco;
   var $nm_bases_all;
   var $nm_bases_access;
   var $nm_bases_db2;
   var $nm_bases_ibase;
   var $nm_bases_informix;
   var $nm_bases_mssql;
   var $nm_bases_mysql;
   var $nm_bases_postgres;
   var $nm_bases_oracle;
   var $nm_bases_sqlite;
   var $nm_bases_sybase;
   var $nm_bases_vfp;
   var $nm_bases_odbc;
   var $nm_bases_progress;
   var $sc_page;
   var $sc_lig_md5 = array();
   var $sc_lig_target = array();
   var $sc_export_ajax = false;
   var $sc_export_ajax_img = false;
   var $force_db_utf8 = false;
//
   function init($Tp_init = "")
   {
       global
             $nm_url_saida, $nm_apl_dependente, $script_case_init, $nmgp_opcao;

      if (!function_exists("sc_check_mobile"))
      {
          include_once("../_lib/lib/php/nm_check_mobile.php");
      }
          include_once("../_lib/lib/php/fix.php");
      $_SESSION['scriptcase']['proc_mobile'] = sc_check_mobile();
        if (isset($_GET['_sc_force_mobile'])) {
            $_SESSION['scriptcase']['force_mobile'] = 'Y' == $_GET['_sc_force_mobile'];
        }
        if (isset($_SESSION['scriptcase']['force_mobile'])) {
            $_SESSION['scriptcase']['proc_mobile'] = $_SESSION['scriptcase']['force_mobile'];
        }
      @ini_set('magic_quotes_runtime', 0);
      $this->sc_page = $script_case_init;
      $_SESSION['scriptcase']['sc_num_page'] = $script_case_init;
      $_SESSION['scriptcase']['sc_cnt_sql']  = 0;
      $this->sc_charset['UTF-8'] = 'utf-8';
      $this->sc_charset['ISO-2022-JP'] = 'iso-2022-jp';
      $this->sc_charset['ISO-2022-KR'] = 'iso-2022-kr';
      $this->sc_charset['ISO-8859-1'] = 'iso-8859-1';
      $this->sc_charset['ISO-8859-2'] = 'iso-8859-2';
      $this->sc_charset['ISO-8859-3'] = 'iso-8859-3';
      $this->sc_charset['ISO-8859-4'] = 'iso-8859-4';
      $this->sc_charset['ISO-8859-5'] = 'iso-8859-5';
      $this->sc_charset['ISO-8859-6'] = 'iso-8859-6';
      $this->sc_charset['ISO-8859-7'] = 'iso-8859-7';
      $this->sc_charset['ISO-8859-8'] = 'iso-8859-8';
      $this->sc_charset['ISO-8859-8-I'] = 'iso-8859-8-i';
      $this->sc_charset['ISO-8859-9'] = 'iso-8859-9';
      $this->sc_charset['ISO-8859-10'] = 'iso-8859-10';
      $this->sc_charset['ISO-8859-13'] = 'iso-8859-13';
      $this->sc_charset['ISO-8859-14'] = 'iso-8859-14';
      $this->sc_charset['ISO-8859-15'] = 'iso-8859-15';
      $this->sc_charset['WINDOWS-1250'] = 'windows-1250';
      $this->sc_charset['WINDOWS-1251'] = 'windows-1251';
      $this->sc_charset['WINDOWS-1252'] = 'windows-1252';
      $this->sc_charset['TIS-620'] = 'tis-620';
      $this->sc_charset['WINDOWS-1253'] = 'windows-1253';
      $this->sc_charset['WINDOWS-1254'] = 'windows-1254';
      $this->sc_charset['WINDOWS-1255'] = 'windows-1255';
      $this->sc_charset['WINDOWS-1256'] = 'windows-1256';
      $this->sc_charset['WINDOWS-1257'] = 'windows-1257';
      $this->sc_charset['KOI8-R'] = 'koi8-r';
      $this->sc_charset['BIG-5'] = 'big5';
      $this->sc_charset['EUC-CN'] = 'EUC-CN';
      $this->sc_charset['GB18030'] = 'GB18030';
      $this->sc_charset['GB2312'] = 'gb2312';
      $this->sc_charset['EUC-JP'] = 'euc-jp';
      $this->sc_charset['SJIS'] = 'shift-jis';
      $this->sc_charset['EUC-KR'] = 'euc-kr';
      $_SESSION['scriptcase']['charset_entities']['UTF-8'] = 'UTF-8';
      $_SESSION['scriptcase']['charset_entities']['ISO-8859-1'] = 'ISO-8859-1';
      $_SESSION['scriptcase']['charset_entities']['ISO-8859-5'] = 'ISO-8859-5';
      $_SESSION['scriptcase']['charset_entities']['ISO-8859-15'] = 'ISO-8859-15';
      $_SESSION['scriptcase']['charset_entities']['WINDOWS-1251'] = 'cp1251';
      $_SESSION['scriptcase']['charset_entities']['WINDOWS-1252'] = 'cp1252';
      $_SESSION['scriptcase']['charset_entities']['BIG-5'] = 'BIG5';
      $_SESSION['scriptcase']['charset_entities']['EUC-CN'] = 'GB2312';
      $_SESSION['scriptcase']['charset_entities']['GB2312'] = 'GB2312';
      $_SESSION['scriptcase']['charset_entities']['SJIS'] = 'Shift_JIS';
      $_SESSION['scriptcase']['charset_entities']['EUC-JP'] = 'EUC-JP';
      $_SESSION['scriptcase']['charset_entities']['KOI8-R'] = 'KOI8-R';
      $_SESSION['scriptcase']['trial_version'] = 'N';
      $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['decimal_db'] = "."; 
      $this->nm_cod_apl      = "funciones_generales"; 
      $this->nm_nome_apl     = ""; 
      $this->nm_seguranca    = ""; 
      $this->nm_grupo        = "Grant"; 
      $this->nm_grupo_versao = "3"; 
      $this->nm_autor        = "oquiros"; 
      $this->nm_script_by    = "netmake";
      $this->nm_script_type  = "PHP";
      $this->nm_versao_sc    = "v9"; 
      $this->nm_tp_lic_sc    = "ep_bronze"; 
      $this->nm_dt_criacao   = "20220514"; 
      $this->nm_hr_criacao   = "103759"; 
      $this->nm_autor_alt    = "oquiros"; 
      $this->nm_dt_ult_alt   = "20260507"; 
      $this->nm_hr_ult_alt   = "085432"; 
      $this->Apl_paginacao   = "PARCIAL"; 
      $temp_bug_list         = explode(" ", microtime()); 
      list($NM_usec, $NM_sec) = $temp_bug_list; 
      $this->nm_timestamp    = (float) $NM_sec; 
      $this->nm_app_version  = "1.9.1";
// 
// 
      $NM_dir_atual = getcwd();
      if (empty($NM_dir_atual))
      {
          $str_path_sys          = (isset($_SERVER['SCRIPT_FILENAME'])) ? $_SERVER['SCRIPT_FILENAME'] : $_SERVER['ORIG_PATH_TRANSLATED'];
          $str_path_sys          = str_replace("\\", '/', $str_path_sys);
      }
      else
      {
          $sc_nm_arquivo         = explode("/", $_SERVER['PHP_SELF']);
          $str_path_sys          = str_replace("\\", "/", getcwd()) . "/" . $sc_nm_arquivo[count($sc_nm_arquivo)-1];
      }
      $this->sc_site_ssl     = $this->appIsSsl();
      $this->sc_protocolo    = $this->sc_site_ssl ? 'https://' : 'http://';
      $this->sc_protocolo    = "";
      $this->path_prod       = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_prod'];
      $this->path_conf       = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_conf'];
      $this->path_imagens    = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imagens'];
      $this->path_imag_temp  = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp'];
      $this->path_cache  = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_cache'];
      $this->path_doc        = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_doc'];
      if (!isset($_SESSION['scriptcase']['str_lang']) || empty($_SESSION['scriptcase']['str_lang']))
      {
          $_SESSION['scriptcase']['str_lang'] = "es";
      }
      if (!isset($_SESSION['scriptcase']['str_conf_reg']) || empty($_SESSION['scriptcase']['str_conf_reg']))
      {
          $_SESSION['scriptcase']['str_conf_reg'] = "es_es";
      }
      $this->str_lang        = $_SESSION['scriptcase']['str_lang'];
      $this->str_conf_reg    = $_SESSION['scriptcase']['str_conf_reg'];
      if (!isset($_SESSION['scriptcase']['funciones_generales']['save_session']['save_grid_state_session']))
      { 
          $_SESSION['scriptcase']['funciones_generales']['save_session']['save_grid_state_session'] = false;
          $_SESSION['scriptcase']['funciones_generales']['save_session']['data'] = '';
      } 
      $this->str_schema_all    = (isset($_SESSION['scriptcase']['str_schema_all']) && !empty($_SESSION['scriptcase']['str_schema_all'])) ? $_SESSION['scriptcase']['str_schema_all'] : "Sc7_Blue/Sc7_Blue";
      if (isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['sub_cons_schema_all']))
      { 
         $this->str_schema_all    = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['sub_cons_schema_all'];
         $this->str_schema_filter = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['sub_cons_schema_filter'];
      } 
      $_SESSION['scriptcase']['erro']['str_schema'] = $this->str_schema_all . "_error.css";
      $_SESSION['scriptcase']['erro']['str_lang']   = $this->str_lang;
      $this->server          = (!isset($_SERVER['HTTP_HOST'])) ? $_SERVER['SERVER_NAME'] : $_SERVER['HTTP_HOST'];
      if (!isset($_SERVER['HTTP_HOST']) && isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != 80 && !$this->sc_site_ssl )
      {
          $this->server         .= ":" . $_SERVER['SERVER_PORT'];
      }
      $this->java_protocol   = ($this->sc_site_ssl) ? 'https://' : 'http://';
      $this->server_pdf      = $this->java_protocol . $this->server;
      $this->server          = "";
      $str_path_web          = $_SERVER['PHP_SELF'];
      $str_path_web          = str_replace("\\", '/', $str_path_web);
      $str_path_web          = str_replace('//', '/', $str_path_web);
      $this->root            = substr($str_path_sys, 0, -1 * strlen($str_path_web));
      $this->path_aplicacao  = substr($str_path_sys, 0, strrpos($str_path_sys, '/'));
      $this->path_aplicacao  = substr($this->path_aplicacao, 0, strrpos($this->path_aplicacao, '/')) . '/funciones_generales';
      $this->path_embutida   = substr($this->path_aplicacao, 0, strrpos($this->path_aplicacao, '/') + 1);
      $this->path_aplicacao .= '/';
      $this->path_link       = substr($str_path_web, 0, strrpos($str_path_web, '/'));
      $this->path_link       = substr($this->path_link, 0, strrpos($this->path_link, '/')) . '/';
      $this->path_botoes     = $this->path_link . "_lib/img";
      $this->path_img_global = $this->path_link . "_lib/img";
      $this->path_img_modelo = $this->path_link . "_lib/img";
      $this->path_icones     = $this->path_link . "_lib/img";
      $this->path_imag_cab   = $this->path_link . "_lib/img";
      $this->path_help       = $this->path_link . "_lib/webhelp/";
      $this->path_font       = $this->root . $this->path_link . "_lib/font/";
      $this->path_btn        = $this->root . $this->path_link . "_lib/buttons/";
      $this->path_css        = $this->root . $this->path_link . "_lib/css/";
      $this->path_lib_php    = $this->root . $this->path_link . "_lib/lib/php";
      $this->path_lib_js     = $this->root . $this->path_link . "_lib/lib/js";
      $pos_path = strrpos($this->path_prod, "/");
      $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['path_grid_sv'] = $this->root . substr($this->path_prod, 0, $pos_path) . "/conf/grid_sv/";
      $this->path_lang       = "../_lib/lang/";
      $this->path_lang_js    = "../_lib/js/";
      $this->path_chart_theme = $this->root . $this->path_link . "_lib/chart/";
      $this->path_cep        = $this->path_prod . "/cep";
      $this->path_cor        = $this->path_prod . "/cor";
      $this->path_js         = $this->path_prod . "/lib/js";
      $this->path_libs       = $this->root . $this->path_prod . "/lib/php";
      $this->path_third      = $this->root . $this->path_prod . "/third";
      $this->path_adodb      = $this->root . $this->path_prod . "/third/adodb";
      $_SESSION['scriptcase']['dir_temp'] = $this->root . $this->path_imag_temp;
      $this->Cmp_Sql_Time     = array();

      include("../_lib/css/" . $this->str_schema_all . "_grid.php");
      $temp_Str_btn_grid    = trim($str_button) . "/" . trim($str_button) . $_SESSION['scriptcase']['reg_conf']['css_dir'] . ".php";
      include($this->path_btn . $temp_Str_btn_grid);
      $this->css_help_tooltip_faicon = isset($css_help_tooltip_faicon) && '' != trim($css_help_tooltip_faicon) ? trim($css_help_tooltip_faicon) : "fa fa-question-circle";
      $this->css_schema_info_tooltiptheme = isset($css_schema_info_tooltiptheme) && '' != trim($css_schema_info_tooltiptheme)  ? trim($css_schema_info_tooltiptheme) : "";
      $this->tippy_themes = [];
      $this->tippy_theme_default = '';
      if ('' != $this->css_schema_info_tooltiptheme) {
          $this->scGetTippyCssTheme($this->tippy_themes, $this->css_schema_info_tooltiptheme);
          $this->tippy_theme_default = $this->css_schema_info_tooltiptheme;
      }

      if (isset($_SESSION['scriptcase']['funciones_generales']['session_timeout']['lang'])) {
          $this->str_lang = $_SESSION['scriptcase']['funciones_generales']['session_timeout']['lang'];
      }
      elseif (!isset($_SESSION['scriptcase']['funciones_generales']['actual_lang']) || $_SESSION['scriptcase']['funciones_generales']['actual_lang'] != $this->str_lang) {
          $_SESSION['scriptcase']['funciones_generales']['actual_lang'] = $this->str_lang;
          setcookie('sc_actual_lang_Grant',$this->str_lang,'0','/', '', ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
      }
      $_SESSION['scriptcase']['fusioncharts_new'] = true;
      if (!isset($_SESSION['scriptcase']['phantomjs_charts']))
      {
          $_SESSION['scriptcase']['phantomjs_charts'] = @is_dir($this->path_third . '/phantomjs');
      }
      if (isset($_SESSION['scriptcase']['phantomjs_charts']))
      {
          $aTmpOS = $this->getRunningOS();
          $_SESSION['scriptcase']['phantomjs_charts'] = @is_dir($this->path_third . '/phantomjs/' . $aTmpOS['os']);
      }
      if (!class_exists('Services_JSON'))
      {
          include_once("funciones_generales_json.php");
      }
      $this->SC_Link_View = (isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Link_View'])) ? $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Link_View'] : false;
      if (isset($_GET['SC_Link_View']) && !empty($_GET['SC_Link_View']) && is_numeric($_GET['SC_Link_View']))
      {
          if ($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida'])
          {
              $this->SC_Link_View = true;
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Link_View'] = true;
          }
      }
            if (isset($_POST['nmgp_opcao']) && 'ajax_check_file' == $_POST['nmgp_opcao'] ){
                 include_once("../_lib/lib/php/nm_api.php"); 
            switch( $_REQUEST['rsargs'] ){
               default:
                   echo 0;exit;
               break;
               }

    $out1_img_cache = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp'] . $file_name;
    $orig_img = $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp']. '/'.basename($_POST['AjaxCheckImg']);
    copy($__file_download, $_SERVER['DOCUMENT_ROOT'].$orig_img);
    echo $orig_img . '_@@NM@@_';
    if(file_exists($out1_img_cache)){
        echo $out1_img_cache;
        exit;
    }

         include_once("../_lib/lib/php/nm_trata_img.php");
            copy($__file_download, $_SERVER['DOCUMENT_ROOT'].$out1_img_cache);
            $sc_obj_img = new nm_trata_img($_SERVER['DOCUMENT_ROOT'].$out1_img_cache, true);

            if(!empty($img_width) && !empty($img_height)){
                $sc_obj_img->setWidth($img_width);
                $sc_obj_img->setHeight($img_height);
            }            $sc_obj_img->createImg($_SERVER['DOCUMENT_ROOT'].$out1_img_cache);
            echo $out1_img_cache;
               exit;
            }
      if (isset($_POST['nmgp_opcao']) && $_POST['nmgp_opcao'] == "ajax_save_ancor")
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['ancor_save'] = $_POST['ancor_save'];
          $oJson = new Services_JSON();
          if ($_SESSION['scriptcase']['sem_session']) {
              unset($_SESSION['sc_session']);
          }
          exit;
      }
      if (isset($_SESSION['scriptcase']['user_logout']))
      {
          foreach ($_SESSION['scriptcase']['user_logout'] as $ind => $parms)
          {
              if (isset($_SESSION[$parms['V']]) && $_SESSION[$parms['V']] == $parms['U'])
              {
                  unset($_SESSION['scriptcase']['user_logout'][$ind]);
                  $nm_apl_dest = $parms['R'];
                  $dir = explode("/", $nm_apl_dest);
                  if (count($dir) == 1)
                  {
                      $nm_apl_dest = str_replace(".php", "", $nm_apl_dest);
                      $nm_apl_dest = $this->path_link . SC_dir_app_name($nm_apl_dest) . "/";
                  }
                  if (isset($_POST['nmgp_opcao']) && ($_POST['nmgp_opcao'] == "ajax_event" || $_POST['nmgp_opcao'] == "ajax_navigate"))
                  {
                      $this->Arr_result = array();
                      $this->Arr_result['redirInfo']['action']              = $nm_apl_dest;
                      $this->Arr_result['redirInfo']['target']              = $parms['T'];
                      $this->Arr_result['redirInfo']['metodo']              = "post";
                      $this->Arr_result['redirInfo']['script_case_init']    = $this->sc_page;
                      $oJson = new Services_JSON();
                      echo $oJson->encode($this->Arr_result);
                      exit;
                  }
?>
                  <html>
                  <body>
                  <form name="FRedirect" method="POST" action="<?php echo $nm_apl_dest; ?>" target="<?php echo $parms['T']; ?>">
                  </form>
                  <script>
                   document.FRedirect.submit();
                  </script>
                  </body>
                  </html>
<?php
                  exit;
              }
          }
      }
      global $under_dashboard, $dashboard_app, $own_widget, $parent_widget, $compact_mode, $remove_margin, $remove_border, $remove_background;
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard']))
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard'] = false;
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['dashboard_app']   = '';
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['own_widget']      = '';
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['parent_widget']   = '';
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['compact_mode']    = false;
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_margin']   = false;
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_border']   = false;
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_background'] = false;
      }
      if (isset($_GET['under_dashboard']) && 1 == $_GET['under_dashboard'])
      {
          if (isset($_GET['own_widget']) && 'dbifrm_widget' == substr($_GET['own_widget'], 0, 13)) {
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['own_widget'] = $_GET['own_widget'];
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard'] = true;
              if (isset($_GET['dashboard_app'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['dashboard_app'] = $_GET['dashboard_app'];
              }
              if (isset($_GET['parent_widget'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['parent_widget'] = $_GET['parent_widget'];
              }
              if (isset($_GET['compact_mode'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['compact_mode'] = 1 == $_GET['compact_mode'];
              }
              if (isset($_GET['remove_margin'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_margin'] = 1 == $_GET['remove_margin'];
              }
              if (isset($_GET['remove_border'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_border'] = 1 == $_GET['remove_border'];
              }
              if (isset($_GET['remove_background'])) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_background'] = 1 == $_GET['remove_background'];
              }
          }
      }
      elseif (isset($under_dashboard) && 1 == $under_dashboard)
      {
          if (isset($own_widget) && 'dbifrm_widget' == substr($own_widget, 0, 13)) {
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['own_widget'] = $own_widget;
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard'] = true;
              if (isset($dashboard_app)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['dashboard_app'] = $dashboard_app;
              }
              if (isset($parent_widget)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['parent_widget'] = $parent_widget;
              }
              if (isset($compact_mode)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['compact_mode'] = 1 == $compact_mode;
              }
              if (isset($remove_margin)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_margin'] = 1 == $remove_margin;
              }
              if (isset($remove_border)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_border'] = 1 == $remove_border;
              }
              if (isset($remove_background)) {
                  $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['remove_background'] = 1 == $remove_background;
              }
          }
      }
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['maximized']))
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['maximized'] = false;
      }
      if (isset($_GET['maximized']))
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['maximized'] = 1 == $_GET['maximized'];
      }
      if ($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard'])
      {
          $sTmpDashboardApp = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['dashboard_app'];
          if ('' != $sTmpDashboardApp && isset($_SESSION['scriptcase']['dashboard_targets'][$sTmpDashboardApp]["funciones_generales"]))
          {
              foreach ($_SESSION['scriptcase']['dashboard_targets'][$sTmpDashboardApp]["funciones_generales"] as $sTmpTargetLink => $sTmpTargetWidget)
              {
                  if (isset($this->sc_lig_target[$sTmpTargetLink]))
                  {
                      $this->sc_lig_target[$sTmpTargetLink] = $sTmpTargetWidget;
                  }
              }
          }
      }
        global $link_compact_mode, $link_remove_margin, $link_remove_border, $link_remove_background, $link_margin_top;
        if (isset($link_compact_mode) || isset($link_remove_margin) || isset($link_remove_border) || isset($link_remove_background) || isset($link_margin_top)) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info'] = array();
        }
        if (isset($link_compact_mode) && 'ok' == $link_compact_mode) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info']['compact_mode'] = true;
        }
        if (isset($link_remove_margin) && 'ok' == $link_remove_margin) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info']['remove_margin'] = true;
        }
        if (isset($link_remove_border) && 'ok' == $link_remove_border) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info']['remove_border'] = true;
        }
        if (isset($link_remove_background) && 'ok' == $link_remove_background) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info']['remove_background'] = true;
        }
        if (isset($link_margin_top) && '' != $link_margin_top) {
            $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['link_info']['margin_top'] = $link_margin_top;
        }
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart']))
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart'] = array(
              'enabled' => false,
              'active'  => false,
          );
      }
      if ($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart']['enabled'])
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart']['active'] = true;
      }
      elseif ($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['under_dashboard'] && $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['compact_mode'] && !$_SESSION['sc_session'][$this->sc_page]['funciones_generales']['dashboard_info']['maximized'])
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart']['active'] = true;
      }
      else
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['responsive_chart']['active'] = false;
      }
      if ($Tp_init == "Path_sub")
      {
          return;
      }
      $str_path = substr($this->path_prod, 0, strrpos($this->path_prod, '/') + 1);
      if (!is_file($this->root . $str_path . 'devel/class/xmlparser/nmXmlparserIniSys.class.php'))
      {
          unset($_SESSION['scriptcase']['nm_sc_retorno']);
          unset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']);
      }
      include($this->path_lang . $this->str_lang . ".lang.php");
      include($this->path_lang . "config_region.php");
      include($this->path_lang . "lang_config_region.php");
      asort($this->Nm_lang_conf_region);
      $_SESSION['scriptcase']['charset']  = (isset($this->Nm_lang['Nm_charset']) && !empty($this->Nm_lang['Nm_charset'])) ? $this->Nm_lang['Nm_charset'] : "UTF-8";
      ini_set('default_charset', $_SESSION['scriptcase']['charset']);
      $_SESSION['scriptcase']['charset_html']  = (isset($this->sc_charset[$_SESSION['scriptcase']['charset']])) ? $this->sc_charset[$_SESSION['scriptcase']['charset']] : $_SESSION['scriptcase']['charset'];
      if (!function_exists("mb_convert_encoding"))
      {
          echo "<div><font size=6>" . $this->Nm_lang['lang_othr_prod_xtmb'] . "</font></div>";exit;
      } 
      elseif (!function_exists("sc_convert_encoding"))
      {
          echo "<div><font size=6>" . $this->Nm_lang['lang_othr_prod_xtsc'] . "</font></div>";exit;
      } 
      foreach ($this->Nm_lang_conf_region as $ind => $dados)
      {
         if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($dados))
         {
             $this->Nm_lang_conf_region[$ind] = sc_convert_encoding($dados, $_SESSION['scriptcase']['charset'], "UTF-8");
         }
      }
      foreach ($this->Nm_conf_reg[$this->str_conf_reg] as $ind => $dados)
      {
         if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($dados))
         {
             $this->Nm_conf_reg[$this->str_conf_reg][$ind] = sc_convert_encoding($dados, $_SESSION['scriptcase']['charset'], "UTF-8");
         }
      }
      foreach ($this->Nm_lang as $ind => $dados)
      {
         if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($ind))
         {
             $ind = sc_convert_encoding($ind, $_SESSION['scriptcase']['charset'], "UTF-8");
             $this->Nm_lang[$ind] = $dados;
         }
         if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($dados))
         {
             $this->Nm_lang[$ind] = sc_convert_encoding($dados, $_SESSION['scriptcase']['charset'], "UTF-8");
         }
         $this->Nm_lang[$ind] = str_replace('"', '&quot;',  $this->Nm_lang[$ind]);
      }
      $_SESSION['sc_session']['SC_download_violation'] = $this->Nm_lang['lang_errm_fnfd'];
      if (isset($_SESSION['sc_session']['SC_parm_violation']) && !isset($_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir']))
      {
          unset($_SESSION['sc_session']['SC_parm_violation']);
          echo "<html>";
          echo "<body>";
          echo "<table align=\"center\" width=\"50%\" border=1 height=\"50px\">";
          echo "<tr>";
          echo "   <td align=\"center\">";
          echo "       <b><font size=4>" . $this->Nm_lang['lang_errm_ajax_data'] . "</font>";
          echo "   </b></td>";
          echo " </tr>";
          echo "</table>";
          echo "</body>";
          echo "</html>";
          exit;
      }
      if (isset($_POST['nm_grid_submit']) && $_POST['nm_grid_submit'] == 1 && isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['csrf_token'] ) && !isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida']) && !isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida_form'])) {
          if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] != $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['csrf_token']) {
              echo "<html>";
              echo "<body>";
              echo "<table align=\"center\" width=\"50%\" border=1 height=\"50px\">";
              echo "<tr>";
              echo "   <td align=\"center\">";
              echo "       <b><font size=4>" . $this->Nm_lang['lang_errm_ajax_csrf'] . "</font>";
              echo "   </b></td>";
              echo " </tr>";
              echo "</table>";
              echo "</body>";
              echo "</html>";
              exit;
          }
      }
      if (isset($this->Nm_lang['lang_errm_dbcn_conn']))
      {
          $_SESSION['scriptcase']['db_conn_error'] = $this->Nm_lang['lang_errm_dbcn_conn'];
      }
      $PHP_ver = str_replace(".", "", phpversion()); 
      if (substr($PHP_ver, 0, 3) < 434)
      {
          echo "<div><font size=6>" . $this->Nm_lang['lang_othr_prod_phpv'] . "</font></div>";exit;
      } 
      if (file_exists($this->path_libs . "/ver.dat"))
      {
          $SC_ver = file($this->path_libs . "/ver.dat"); 
          $SC_ver = str_replace(".", "", $SC_ver[0]); 
          if (substr($SC_ver, 0, 5) < 40015)
          {
              echo "<div><font size=6>" . $this->Nm_lang['lang_othr_prod_incp'] . "</font></div>";exit;
          } 
      } 
      $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['path_doc'] = $this->path_doc; 
      $_SESSION['scriptcase']['nm_path_prod'] = $this->root . $this->path_prod . "/"; 
      if (empty($this->path_imag_cab))
      {
          $this->path_imag_cab = $this->path_img_global;
      }
      if (!is_dir($this->root . $this->path_prod))
      {
         $str_message = "<html>

<head>
    <title>{var_str_title}</title>
    <style>
        body {
            margin: 0px;
            padding: 0px;
            overflow-x: hidden;
            min-width: 320px;
            background: #FFFFFF;
            font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
            font-size: 14px;
            line-height: 1.4285em;
            color: rgba(0, 0, 0, 0.87);
            font-smoothing: antialiased;
        }

        html,
        body {
            height: 100%;
        }

        body {
            margin: 0;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        user agent stylesheet body {
            display: block;
            margin: 8px;
        }

        html {
            font-size: 14px;
        }

        html {
            line-height: 1.15;
            -ms-text-size-adjust: 100%;
            -webkit-text-size-adjust: 100%;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        ::selection {
            background-color: #CCE2FF;
            color: rgba(0, 0, 0, 0.87);
        }

        .ui.container {
            width: 933px;
            min-width: 992px;
            max-width: 1199px;
            margin-left: auto !important;
            margin-right: auto !important;
        }

        .ui.container {
            display: block;
            max-width: 100% !important;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        .ui.message:last-child {
            margin-bottom: 0em;
        }

        .ui.message:first-child {
            margin-top: 0em;
        }

        .ui.message {
            font-size: 1em;
        }

        .ui.message {
            position: relative;
            min-height: 1em;
            margin: 1em 0em;
            background: #F8F8F9;
            padding: 1em 1.5em;
            line-height: 1.4285em;
            color: rgba(0, 0, 0, 0.87);
            transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
            border-radius: 0.28571429rem;
            box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 0px 0px 0px rgba(0, 0, 0, 0);
        }

        article,
        aside,
        footer,
        header,
        nav,
        section {
            display: block;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        .ui.message> :last-child {
            margin-bottom: 0em;
        }

        .ui.message> :first-child {
            margin-top: 0em;
        }

        .ui.message .header+p {
            margin-top: 0.25em;
        }

        .ui.message p {
            opacity: 0.85;
            margin: 0.75em 0em;
        }

        p {
            margin: 0em 0em 1em;
            line-height: 1.4285em;
        }

        .ui.message .header:not(.ui) {
            font-size: 1.14285714em;
        }

        .ui.message .header {
            display: block;
            font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
            font-weight: bold;
            margin: -0.14285714em 0em 1.2rem 0em;
        }

        .ui.button {
            cursor: pointer;
            display: inline-block;
            min-height: 1em;
            outline: 0;
            border: none;
            vertical-align: baseline;
            background: #e0e1e2 none;
            color: rgba(0, 0, 0, .6);
            font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;
            margin: 0 .25em 0 0;
            padding: .78571429em 1.5em .78571429em;
            text-transform: none;
            text-shadow: none;
            font-weight: 700;
            line-height: 1em;
            font-style: normal;
            text-align: center;
            text-decoration: none;
            border-radius: .28571429rem;
            box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, .15) inset;
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
            transition: opacity .1s ease, background-color .1s ease, color .1s ease, box-shadow .1s ease, background .1s ease;
            will-change: '';
            -webkit-tap-highlight-color: transparent;
        }
        
        .ui.button,
        .ui.buttons .button,
        .ui.buttons .or {
            font-size: 1rem;
            flex-flow: row nowrap;
            justify-content: center;
            align-items: center;
            column-gap: .5rem;
            display: flex;
        }
        
        .ui.primary.button,
        .ui.primary.buttons .button {
            background-color: #2185d0;
            color: #fff;
            text-shadow: none;
            background-image: none;
        }
        
        .ui.primary.button {
            box-shadow: 0 0 0 0 rgba(34, 36, 38, .15) inset;
        }

        [type=reset], [type=submit], button, html [type=button] {
            -webkit-appearance: button;
        }

        .icon{
            position: relative;
            width: 1.2rem;
            height: 1.2rem;
            display: block;
            color: inherit;
            background-repeat: no-repeat;
        }

        .icon.database{
            background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" fill=\"%23FFFFFF\"><path d=\"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"/></svg>');
        }
    </style>
</head>

<body>
    <div class='ui container' style='padding-top:2rem'>
        <section class='ui message'>
            <div class='content'>
                <div class='header'>
                    <h1 class='ui header'>{var_str_title}</h1>
                </div>
                <p>{var_str_message}</p>
                <p>{var_str_message_conn}</p>
                {v_str_btn_inside}
            </div>
        </section>
    </div>";
         $str_message_end = "</body>
</html>";
         $str_message = str_replace('{var_str_title}', $this->Nm_lang['lang_errm_cmlb_nfndtitle'], $str_message);
         $str_message = str_replace('{var_str_message}', $this->Nm_lang['lang_errm_cmlb_nfnd'], $str_message);
          $str_message = str_replace('{var_str_message_conn}','', $str_message);
         $str_message = str_replace('{v_str_btn_inside}', '', $str_message);
         echo $str_message;
          if (!$_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'] && (!isset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan']) || !$_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan'])) 
          { 
              if (isset($_SESSION['scriptcase']['nm_sc_retorno']) && !empty($_SESSION['scriptcase']['nm_sc_retorno'])) 
              if (isset($_SESSION['scriptcase']['nm_sc_retorno']) && !empty($_SESSION['scriptcase']['nm_sc_retorno'])) 
              { 
               $btn_value = "" . $this->Ini->Nm_lang['lang_btns_back'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_value))
               {
                   $btn_value = sc_convert_encoding($btn_value, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
               $btn_hint = "" . $this->Ini->Nm_lang['lang_btns_back_hint'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_hint))
               {
                   $btn_hint = sc_convert_encoding($btn_hint, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
?>
                   <input type="button" id="sai" onClick="window.location='<?php echo $_SESSION['scriptcase']['nm_sc_retorno'] ?>'; return false" class="scButton_default" value="<?php echo $btn_value ?>" title="<?php echo $btn_hint ?>" style="vertical-align: middle;">

<?php
              } 
              else 
              { 
               $btn_value = "" . $this->Ini->Nm_lang['lang_btns_exit'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_value))
               {
                   $btn_value = sc_convert_encoding($btn_value, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
               $btn_hint = "" . $this->Ini->Nm_lang['lang_btns_exit_hint'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_hint))
               {
                   $btn_hint = sc_convert_encoding($btn_hint, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
?>
                   <input type="button" id="sai" onClick="window.location='<?php echo $nm_url_saida ?>'; return false" class="scButton_default" value="<?php echo $btn_value ?>" title="<?php echo $btn_hint ?>" style="vertical-align: middle;">

<?php
              } 
          } 
          echo $str_message_end;
          exit ;
      }

      $this->nm_ger_css_emb = true;
      $this->path_atual     = getcwd();
      $opsys = strtolower(php_uname());

// 
      include_once($this->path_aplicacao . "funciones_generales_erro.class.php"); 
      $this->Erro = new funciones_generales_erro();
      include_once($this->path_adodb . "/adodb.inc.php"); 
      $this->sc_Include($this->path_libs . "/nm_sec_prod.php", "F", "nm_reg_prod") ; 
      $this->sc_Include($this->path_libs . "/nm_ini_perfil.php", "F", "perfil_lib") ; 
// 
 if(function_exists('set_php_timezone')) set_php_timezone('funciones_generales'); 
// 
      $this->sc_Include($this->path_lib_php . "/nm_functions.php", "", "") ; 
      global $bol_api_prod; 
      $bol_api_prod = true; 
      if (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']) && !empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'])) 
      { 
          $bol_api_prod = false; 
      } 
      $this->sc_Include($this->path_lib_php . "/nm_api.php", "", "") ; 
      $this->sc_Include($this->path_lib_php . "/nm_edit.php", "F", "nmgp_Form_Num_Val") ; 
      $this->sc_Include($this->path_lib_php . "/nm_conv_dados.php", "F", "nm_conv_limpa_dado") ; 
      $this->sc_Include($this->path_lib_php . "/nm_data.class.php", "C", "nm_data") ; 
      $this->nm_data = new nm_data("es");
      if (is_file("../_lib/css/" . $this->str_schema_all . "_grid.php")) {
          include("../_lib/css/" . $this->str_schema_all . "_grid.php");
      } else {
          $str_tree_col = "";
          $str_tree_exp = "";
          $str_button   = "";
      }
      $this->Color_bg_ajax = (!isset($str_ajax_bg)       || "" == trim($str_ajax_bg))       ? "#000" : $str_ajax_bg;
      $this->Border_c_ajax = (!isset($str_ajax_border_c) || "" == trim($str_ajax_border_c)) ? ""     : $str_ajax_border_c;
      $this->Border_s_ajax = (!isset($str_ajax_border_s) || "" == trim($str_ajax_border_s)) ? ""     : $str_ajax_border_s;
      $this->Border_w_ajax = (!isset($str_ajax_border_w) || "" == trim($str_ajax_border_w)) ? ""     : $str_ajax_border_w;
      $this->Tree_img_col    = trim($str_tree_col);
      $this->Tree_img_exp    = trim($str_tree_exp);
      $this->scGridRefinedSearchExpandFAIcon    = trim($scGridRefinedSearchExpandFAIcon);
      $this->scGridRefinedSearchCollapseFAIcon    = trim($scGridRefinedSearchCollapseFAIcon);
      $_SESSION['scriptcase']['nmamd'] = array();
      perfil_lib($this->path_libs);
      if (!isset($_SESSION['sc_session'][$this->sc_page]['SC_Check_Perfil']))
      {
          if(function_exists("nm_check_perfil_exists")) nm_check_perfil_exists($this->path_libs, $this->path_prod);
          $_SESSION['sc_session'][$this->sc_page]['SC_Check_Perfil'] = true;
      }
      if (function_exists("nm_check_pdf_server")) $this->server_pdf = nm_check_pdf_server($this->path_libs, $this->server_pdf);
      if (!isset($_SESSION['scriptcase']['sc_num_img']))
      { 
          $_SESSION['scriptcase']['sc_num_img'] = 1;
      } 
      $this->arr_buttons_usr = array();

      $this->arr_buttons_usr['enviar']['hint']             = "";
      $this->arr_buttons_usr['enviar']['type']             = "button";
      $this->arr_buttons_usr['enviar']['value']            = "Enviar";
      $this->arr_buttons_usr['enviar']['display']          = "text_fontawesomeicon";
      $this->arr_buttons_usr['enviar']['display_position'] = "text_right";
      $this->arr_buttons_usr['enviar']['style']            = "ok";
      $this->arr_buttons_usr['enviar']['image']            = "";
      $this->arr_buttons_usr['enviar']['has_fa']            = "true";
      $this->arr_buttons_usr['enviar']['fontawesomeicon']            = "fas fa-truck";

      $this->arr_buttons_usr['calcular_ruta']['hint']             = "";
      $this->arr_buttons_usr['calcular_ruta']['type']             = "button";
      $this->arr_buttons_usr['calcular_ruta']['value']            = "Calcular Ruta";
      $this->arr_buttons_usr['calcular_ruta']['display']          = "text_fontawesomeicon";
      $this->arr_buttons_usr['calcular_ruta']['display_position'] = "text_right";
      $this->arr_buttons_usr['calcular_ruta']['style']            = "paypal";
      $this->arr_buttons_usr['calcular_ruta']['image']            = "";
      $this->arr_buttons_usr['calcular_ruta']['has_fa']            = "true";
      $this->arr_buttons_usr['calcular_ruta']['fontawesomeicon']            = "";
      $this->str_google_fonts= isset($str_google_fonts)?$str_google_fonts:'';
      $this->regionalDefault();
      $this->Str_btn_grid    = trim($str_button) . "/" . trim($str_button) . $_SESSION['scriptcase']['reg_conf']['css_dir'] . ".php";
      $this->Str_btn_css     = trim($str_button) . "/" . trim($str_button) . ".css";
      if (is_file($this->path_btn . $this->Str_btn_grid)) {
          include($this->path_btn . $this->Str_btn_grid);
      }
      $_SESSION['scriptcase']['erro']['str_schema_dir'] = $this->str_schema_all . "_error" . $_SESSION['scriptcase']['reg_conf']['css_dir'] . ".css";
      $this->sc_tem_trans_banco = false;
      if (isset($_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir'])) {
          $SS_cod_html  = '<!DOCTYPE html>';
          $SS_cod_html .= "<HTML>\r\n";
          $SS_cod_html .= " <HEAD>\r\n";
          $SS_cod_html .= "  <TITLE></TITLE>\r\n";
          $SS_cod_html .= "   <META http-equiv=\"Content-Type\" content=\"text/html; charset=" . $_SESSION['scriptcase']['charset_html'] . "\"/>\r\n";
          if ($_SESSION['scriptcase']['proc_mobile']) {
              $SS_cod_html .= "   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\"/>\r\n";
          }
          $SS_cod_html .= "   <META http-equiv=\"Expires\" content=\"Fri, Jan 01 1900 00:00:00 GMT\"/>\r\n";
          $SS_cod_html .= "    <META http-equiv=\"Pragma\" content=\"no-cache\"/>\r\n";
          if ($_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir_tp'] == "R") {
              $SS_cod_html .= "  </HEAD>\r\n";
              $SS_cod_html .= "   <body>\r\n";
          }
          else {
              $SS_cod_html .= "    <link rel=\"shortcut icon\" href=\"../_lib/img/grp__NM__bg__NM__grant_logo_peq (1).jpg\">\r\n";
              $SS_cod_html .= "    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_lib/css/" . $this->str_schema_all . "_grid.css\"/>\r\n";
              $SS_cod_html .= "    <link rel=\"stylesheet\" type=\"text/css\" href=\"../_lib/css/" . $this->str_schema_all . "_grid" . $_SESSION['scriptcase']['reg_conf']['css_dir'] . ".css\"/>\r\n";
              $SS_cod_html .= "  </HEAD>\r\n";
              $SS_cod_html .= "   <body class=\"scGridPage\">\r\n";
              $SS_cod_html .= "    <table align=\"center\"><tr><td style=\"padding: 0\"><div class=\"scGridBorder\">\r\n";
              $SS_cod_html .= "    <table class=\"scGridTabela\" width='100%' cellspacing=0 cellpadding=0><tr class=\"scGridFieldOdd\"><td class=\"scGridFieldOddFont\" style=\"padding: 15px 30px; text-align: center\">\r\n";
              $SS_cod_html .= $this->Nm_lang['lang_errm_expired_session'] . "\r\n";
              $SS_cod_html .= "     <form name=\"Fsession_redir\" method=\"post\"\r\n";
              $SS_cod_html .= "           target=\"_self\">\r\n";
              $SS_cod_html .= "           <input type=\"button\" name=\"sc_sai_seg\" value=\"OK\" onclick=\"sc_session_redir('" . $_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir'] . "');\">\r\n";
              $SS_cod_html .= "     </form>\r\n";
              $SS_cod_html .= "    </td></tr></table>\r\n";
              $SS_cod_html .= "    </div></td></tr></table>\r\n";
          }
          $SS_cod_html .= "    <script type=\"text/javascript\">\r\n";
          if ($_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir_tp'] == "R") {
              $SS_cod_html .= "      sc_session_redir('" . $_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir'] . "');\r\n";
          }
          $SS_cod_html .= "      function sc_session_redir(url_redir)\r\n";
          $SS_cod_html .= "      {\r\n";
          $SS_cod_html .= "         if (window.parent && window.parent.document != window.document && typeof window.parent.sc_session_redir === 'function')\r\n";
          $SS_cod_html .= "         {\r\n";
          $SS_cod_html .= "            window.parent.sc_session_redir(url_redir);\r\n";
          $SS_cod_html .= "         }\r\n";
          $SS_cod_html .= "         else\r\n";
          $SS_cod_html .= "         {\r\n";
          $SS_cod_html .= "             if (window.opener && typeof window.opener.sc_session_redir === 'function')\r\n";
          $SS_cod_html .= "             {\r\n";
          $SS_cod_html .= "                 window.close();\r\n";
          $SS_cod_html .= "                 window.opener.sc_session_redir(url_redir);\r\n";
          $SS_cod_html .= "             }\r\n";
          $SS_cod_html .= "             else\r\n";
          $SS_cod_html .= "             {\r\n";
          $SS_cod_html .= "                 window.location = url_redir;\r\n";
          $SS_cod_html .= "             }\r\n";
          $SS_cod_html .= "         }\r\n";
          $SS_cod_html .= "      }\r\n";
          $SS_cod_html .= "    </script>\r\n";
          $SS_cod_html .= " </body>\r\n";
          $SS_cod_html .= "</HTML>\r\n";
          unset($_SESSION['scriptcase']['funciones_generales']['session_timeout']);
          unset($_SESSION['sc_session']);
      }
      if (isset($SS_cod_html) && isset($_GET['nmgp_opcao']) && (substr($_GET['nmgp_opcao'], 0, 14) == "ajax_aut_comp_" || substr($_GET['nmgp_opcao'], 0, 13) == "ajax_autocomp"))
      {
          unset($_SESSION['sc_session']);
          $oJson = new Services_JSON();
          echo $oJson->encode("ss_time_out");
          exit;
      }
      elseif (isset($SS_cod_html) && ((isset($_POST['nmgp_opcao']) && substr($_POST['nmgp_opcao'], 0, 5) == "ajax_") || (isset($_GET['nmgp_opcao']) && substr($_GET['nmgp_opcao'], 0, 5) == "ajax_")))
      {
          unset($_SESSION['sc_session']);
          $this->Arr_result = array();
          $this->Arr_result['ss_time_out'] = true;
          $oJson = new Services_JSON();
          echo $oJson->encode($this->Arr_result);
          exit;
      }
      elseif (isset($SS_cod_html))
      {
          echo $SS_cod_html;
          exit;
      }
      $this->nm_bases_access     = array("access", "ado_access", "ace_access");
      $this->nm_bases_db2        = array("db2", "db2_odbc", "odbc_db2", "odbc_db2v6", "pdo_db2_odbc", "pdo_ibm");
      $this->nm_bases_ibase      = array("ibase", "firebird", "pdo_firebird", "borland_ibase");
      $this->nm_bases_informix   = array("informix", "informix72", "pdo_informix");
      $this->nm_bases_mssql      = array("mssql", "ado_mssql", "adooledb_mssql", "odbc_mssql", "mssqlnative", "pdo_sqlsrv", "pdo_dblib", "azure_mssql", "azure_ado_mssql", "azure_adooledb_mssql", "azure_odbc_mssql", "azure_mssqlnative", "azure_pdo_sqlsrv", "azure_pdo_dblib", "googlecloud_mssql", "googlecloud_ado_mssql", "googlecloud_adooledb_mssql", "googlecloud_odbc_mssql", "googlecloud_mssqlnative", "googlecloud_pdo_sqlsrv", "googlecloud_pdo_dblib", "amazonrds_mssql", "amazonrds_ado_mssql", "amazonrds_adooledb_mssql", "amazonrds_odbc_mssql", "amazonrds_mssqlnative", "amazonrds_pdo_sqlsrv", "amazonrds_pdo_dblib");
      $this->nm_bases_mysql      = array("mysql", "mysqlt", "mysqli", "maxsql", "pdo_mysql", "pdo_mariadb", "azure_mysql", "azure_mysqlt", "azure_mysqli", "azure_maxsql", "azure_pdo_mysql", "azure_pdo_mariadb", "googlecloud_mysql", "googlecloud_mysqlt", "googlecloud_mysqli", "googlecloud_maxsql", "googlecloud_pdo_mysql", "googlecloud_pdo_mariadb", "amazonrds_mysql", "amazonrds_mysqlt", "amazonrds_mysqli", "amazonrds_maxsql", "amazonrds_pdo_mysql", "amazonrds_pdo_mariadb");
      $this->nm_bases_postgres   = array("postgres", "postgres64", "postgres7", "pdo_pgsql", "azure_postgres", "azure_postgres64", "azure_postgres7", "azure_pdo_pgsql", "googlecloud_postgres", "googlecloud_postgres64", "googlecloud_postgres7", "googlecloud_pdo_pgsql", "amazonrds_postgres", "amazonrds_postgres64", "amazonrds_postgres7", "amazonrds_pdo_pgsql");
      $this->nm_bases_oracle     = array("oci8", "oci805", "oci8po", "odbc_oracle", "oracle", "pdo_oracle", "oraclecloud_oci8", "oraclecloud_oci805", "oraclecloud_oci8po", "oraclecloud_odbc_oracle", "oraclecloud_oracle", "oraclecloud_pdo_oracle", "amazonrds_oci8", "amazonrds_oci805", "amazonrds_oci8po", "amazonrds_odbc_oracle", "amazonrds_oracle", "amazonrds_pdo_oracle");
      $this->sqlite_version      = "old";
      $this->nm_bases_sqlite     = array("sqlite", "sqlite3", "pdosqlite");
      $this->nm_bases_sybase     = array("sybase", "pdo_sybase_odbc", "pdo_sybase_dblib");
      $this->nm_bases_vfp        = array("vfp");
      $this->nm_bases_odbc       = array("odbc");
      $this->nm_bases_progress     = array("pdo_progress_odbc", "progress");
      $this->nm_bases_all        = array_merge($this->nm_bases_access, $this->nm_bases_db2, $this->nm_bases_ibase, $this->nm_bases_informix, $this->nm_bases_mssql, $this->nm_bases_mysql, $this->nm_bases_postgres, $this->nm_bases_oracle, $this->nm_bases_sqlite, $this->nm_bases_sybase, $this->nm_bases_vfp, $this->nm_bases_odbc, $this->nm_bases_progress);
      $this->nm_font_ttf = array("ar", "ja", "pl", "ru", "sk", "thai", "zh_cn", "zh_hk", "cz", "el", "ko", "mk");
      $this->nm_ttf_arab = array("ar");
      $this->nm_ttf_jap  = array("ja");
      $this->nm_ttf_rus  = array("pl", "ru", "sk", "cz", "el", "mk");
      $this->nm_ttf_thai = array("thai");
      $this->nm_ttf_chi  = array("zh_cn", "zh_hk", "ko");
      $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['seq_dir'] = 0; 
      $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['sub_dir'] = array(); 
      $_SESSION['scriptcase']['nm_bases_security']  = "enc_nm_enc_v1D9XsH9FUHANOD5F7DMBYVcFKHEX7VENUD9JmZSB/HINKD5XGDErKHENiDuFaVoJeHQXsDuFaHAveD5NUHgNKDkBOV5FYHMBiHQNmZSBqHArKV5FUDMrYZSXeV5FqHIJsHQJKH9FGHAveD5F7HuBYDkFCDWJeVErqDcJUVINUD1vsZMJeDMBYZSJqDuFaHMBiD9NwDQFaZ1rwD5JwDMvmVcFKV5BmVoBqD9BsZkFGHArKV5FaDErKHENiV5FaDorqD9NwH9X7Z1rwD5NUHuBOVIBODWFYHMBiD9BsVIraD1rwV5X7HgBeHEFKV5FaVoBOD9NmDQX7Z1N7V5FGHuvmVcBOV5X7DoJsDcJUZ1FaD1rwD5BiDMzGZSXeDWFqVoBiDcBwDQFGHANOV5FUHuNOVcFKDWFYVoFGHQFYZSFaHArKV5XGDErKHErCDWF/VoBiDcJUZSX7Z1BYHuFaDMvOZSJqDWBmDoXGDcBqH9FaDSvOD5BqHgveHENiDuJeHIF7HQNmZSFGHArYHQXGDMvODkBsV5F/HIFUHQJmZ1F7Z1vmD5rqDEBOHArCDWF/HMBqHQJeH9FUD1veHuJwDMBYVcB/DWFaHMJwHQFYZ1BOHIveHQJeHgBeZSJ3DuFYHMB/HQXGDQFUDSN7HuJwDMrYVIBsDuFqHIJsHQFYZkFGZ1NOHQFUHgrKHErCDWXCHMX7DcJUZSX7HIBeD5BqHgvsZSJ3H5FqHIF7HQBqZSBqHArYHQraHgBYHErCDurmZuFaHQXGDuBqDSzGV5BqDMzGVcXKDWF/HIXGHQFYZ1BOHINKZMJeHgNKHErCDWXCDoJsHQXGDuBqD1vOV5BOHgvOVcBUDWFYHIJeDcBwH9B/HIrwV5JeDMBYDkBsH5FYHIrqHQJeH9BiHABYHQJsHgrwVcXKDWFaVoBiHQFYZkFGD1zGZMXGHgNKHErCDWr/HINUHQXGDuFaHIBOVWXGDMNOZSJqDuX7HINUHQFYZkBiHArYHQBqDMvCHArCV5XCHIB/DcJUZSX7HIBeD5BqHgvsZSJ3H5FqHMBqHQBqZSBqHAN7HuFUHgBeHArsDWFqHMBOHQXGDQFUD1vOVWBqDMvsVcXKDWB3VEFGHQFYZkFGHAzGZMBODMveHArsDuFaDoJsHQXGDuBqHABYHQB/DMNOVIBsDWF/HMF7DcBwH9B/HIrwV5JeDMBYDkBsH5FYHIF7HQJeH9BiHIBeHuB/DMNOVcXKH5XKVENUHQFYZ1BOHIBOZMBqHgNKHArsH5FYHMBqHQXGDuBqD1BeHQrqDMvmDkB/DWXKVEraHQFYZ1BODSrYHQX7HgNKZSJ3V5XCHIFUDcJUZSX7HIBeD5BqHgvsZSJ3H5FqVoFGDcBqH9BOZ1BeD5BqDMBYHEJGH5F/VoJeDcXOZSBiD1BOVWFaDMrwDkB/DWXCVoX7D9BsH9B/HIBeD5XGDMBYHEXeV5B7DoNUHQXsH9X7DSBYD5rqHgrKVcFCH5B7VoraHQBiZSB/HArYZMB/HgvsHEXeDWX7VoJwDcBwDuBOZ1rwVWJeDMvsV9FiV5FYVorqD9JmZ1rqHAvsZMXGHgveHAFKV5FaZuBqD9NmZSFGHIrwV5BOHuNODkBOV5X7VENUHQFYH9FaD1rwD5rqDErKVkXeHEFqDoBOD9NmDQJsD1BeV5FUHuzGDkBOH5XKVoraDcBwH9B/HIrwV5JeDMBYDkBsH5FYDoXGDcJeZSFUZ1rwD5BOHuNODkFCH5FqVENUDcNwH9FaHArKD5rqDEBOZSJGH5FYDoF7DcJeDQFGHANOV5XGHuBYVcBOHEFYVoX7D9BsH9FaD1rwD5rqDEBOZSJ3DWF/VoBiDcJUZSX7Z1BYHuFaDMvOZSNiDWB3VoX7HQNwVINUHAvsZMFaHgveHErsDuJeHIJsD9XsZ9JeD1BeD5F7DMvmVcFKHEF/HIrqHQNmZ1F7D1rKD5JeDMzGZSJGHEFqDoF7DcBiDuBqDSBYVWBODMvOZSJ3V5FYHINUD9BsZ1F7DSNOHQJwDEBODkFeH5FYVoFGHQJKDQFaZ1rwV5BqHgvsDkBODWFaVoX7DcBwZ1FGHABYD5XGDEBOVkXeV5FaVoX7DcBwDQJsZ1NaV5BiDMBOVcFCDWFYDoFGD9XOZSB/Z1BeD5JeDMrYHErCH5FYDoB/D9NmDQJsZ1rwHuFaHuNOZSrCH5FqDoXGHQJmZ1BiDSvOV5FUHgveHEBOV5JeZura";
      $this->prep_conect();
      $this->conectDB();
      if (!in_array(strtolower($this->nm_tpbanco), $this->nm_bases_all))
      {
          echo "<tr>";
          echo "   <td bgcolor=\"\">";
          echo "       <b><font size=\"4\">" . $this->Nm_lang['lang_errm_dbcn_nspt'] . "</font>";
          echo "  " . $perfil_trab;
          echo "   </b></td>";
          echo " </tr>";
          echo "</table>";
          if (!$_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'] && (!isset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan']) || !$_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan'])) 
          { 
              if (isset($_SESSION['scriptcase']['nm_sc_retorno']) && !empty($_SESSION['scriptcase']['nm_sc_retorno'])) 
              { 
                  echo "<a href='" . $_SESSION['scriptcase']['nm_sc_retorno'] . "' target='_self'><img border='0' src='" . $this->path_botoes . "/nm_Scriptcase7_SilverBlue_bvoltar.gif' title='" . $this->Nm_lang['lang_btns_rtrn_scrp_hint'] . "' align=absmiddle></a> \n" ; 
              } 
              else 
              { 
                  echo "<a href='$nm_url_saida' target='_self'><img border='0' src='" . $this->path_botoes . "/nm_Scriptcase7_SilverBlue_bsair.gif' title='" . $this->Nm_lang['lang_btns_exit_appl_hint'] . "' align=absmiddle></a> \n" ; 
              } 
          } 
          exit ;
      } 
      if (empty($this->nm_tabela))
      {
          $this->nm_tabela = ""; 
      }
      $this->Nm_accent_access    = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_db2       = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_ibase     = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_informix  = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_mssql     = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_mysql     = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_postgres  = array('cmp_i'=>"unaccent(",'cmp_f'=>")",'cmp_apos'=>"",'arg_i'=>"' || unaccent('",'arg_f'=>"') || '",'arg_apos'=>"");
      $this->Nm_accent_oracle    = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_sqlite    = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_sybase    = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_vfp       = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_odbc      = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");
      $this->Nm_accent_progress  = array('cmp_i'=>"",'cmp_f'=>"",'cmp_apos'=>"",'arg_i'=>"",'arg_f'=>"",'arg_apos'=>"");

      $this->Nm_accent_no = array('cmp_i'=>'','cmp_f'=>'','cmp_apos'=>'','arg_i'=>'','arg_f'=>'','arg_apos'=>'');
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_access)) {
          $this->Nm_accent_yes = $this->Nm_accent_access;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_db2)) {
          $this->Nm_accent_yes = $this->Nm_accent_db2;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_ibase)) {
          $this->Nm_accent_yes = $this->Nm_accent_ibase;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_informix)) {
          $this->Nm_accent_yes = $this->Nm_accent_informix;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_mssql)) {
          $this->Nm_accent_yes = $this->Nm_accent_mssql;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_mysql)) {
          $this->Nm_accent_yes = $this->Nm_accent_mysql;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_postgres)) {
          $this->Nm_accent_yes = $this->Nm_accent_postgres;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_oracle)) {
          $this->Nm_accent_yes = $this->Nm_accent_oracle;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_sqlite)) {
          $this->Nm_accent_yes = $this->Nm_accent_sqlite;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_sybase)) {
          $this->Nm_accent_yes = $this->Nm_accent_sybase;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_vfp)) {
          $this->Nm_accent_yes = $this->Nm_accent_vfp;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_odbc)) {
          $this->Nm_accent_yes = $this->Nm_accent_odbc;
      }
      elseif (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_progress)) {
          $this->Nm_accent_yes = $this->Nm_accent_progress;
      }
      else {
          $this->Nm_accent_yes = $this->Nm_accent_no;
      }
   }

   function getRunningOS()
   {
       $aOSInfo = array();

       if (FALSE !== strpos(strtolower(php_uname()), 'windows')) 
       {
           $aOSInfo['os'] = 'win';
       }
       elseif (FALSE !== strpos(strtolower(php_uname()), 'linux')) 
       {
           $aOSInfo['os'] = 'linux-i386';
           if(strpos(strtolower(php_uname()), 'x86_64') !== FALSE) 
            {
               $aOSInfo['os'] = 'linux-amd64';
            }
       }
       elseif (FALSE !== strpos(strtolower(php_uname()), 'darwin'))
       {
           $aOSInfo['os'] = 'macos';
       }

       return $aOSInfo;
   }

    function scGetTippyCssTheme(&$themeList, $themeName)
    {
        if (isset($themeList[$themeName])) {
            return;
        }

        $themeNameParts = explode('__NM__', $themeName);

        $themeList[$themeName] = [
            'tippy' => $themeNameParts[1],
            'file' => '../_lib/freecss/' . $themeName . '.css'
        ];
    }

   function prep_conect()
   {
      if (isset($_SESSION['scriptcase']['sc_connection']) && !empty($_SESSION['scriptcase']['sc_connection']))
      {
          foreach ($_SESSION['scriptcase']['sc_connection'] as $NM_con_orig => $NM_con_dest)
          {
              if (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']) && $_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'] == $NM_con_orig)
              {
/*NM*/            $_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'] = $NM_con_dest;
              }
              if (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil']) && $_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil'] == $NM_con_orig)
              {
/*NM*/            $_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil'] = $NM_con_dest;
              }
              if (isset($_SESSION['scriptcase']['funciones_generales']['glo_con_' . $NM_con_orig]))
              {
                  $_SESSION['scriptcase']['funciones_generales']['glo_con_' . $NM_con_orig] = $NM_con_dest;
              }
          }
      }
      $con_devel             = (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'])) ? $_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'] : ""; 
      $perfil_trab           = ""; 
      $this->nm_falta_var    = ""; 
      $this->nm_falta_var_db = ""; 
      $nm_crit_perfil        = false;
      if (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']) && !empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']))
      {
          if (!isset($_GET['nmgp_opcao']) || ('pdf' != $_GET['nmgp_opcao'] && 'pdf_res' != $_GET['nmgp_opcao'])) {
              ob_start();
          } else {
              @ini_set('zlib.output_compression',0);
              $bufferSize = @ini_get('output_buffering');
              if ('' != $bufferSize) {
                  $bufferSize = min($bufferSize * 10, 65536);
                  echo str_repeat('&nbsp;', $bufferSize);
              }
              
          }
          db_conect_devel($con_devel, $this->root . $this->path_prod, 'Grant', 2, $this->force_db_utf8); 
          if (!isset($this->Ajax_result_set)) {$this->Ajax_result_set = ob_get_contents();}
          ob_end_clean();
          if (empty($_SESSION['scriptcase']['glo_tpbanco']) && empty($_SESSION['scriptcase']['glo_banco']))
          {
              $nm_crit_perfil = true;
          }
      }
      if (isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil']) && !empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil']))
      {
          $perfil_trab = $_SESSION['scriptcase']['funciones_generales']['glo_nm_perfil'];
      }
      elseif (isset($_SESSION['scriptcase']['glo_perfil']) && !empty($_SESSION['scriptcase']['glo_perfil']))
      {
          $perfil_trab = $_SESSION['scriptcase']['glo_perfil'];
      }
      if (!empty($perfil_trab))
      {
          $_SESSION['scriptcase']['glo_senha_protect'] = "";
          carrega_perfil($perfil_trab, $this->path_libs, "S", $this->path_conf);
          if (empty($_SESSION['scriptcase']['glo_senha_protect']))
          {
              $nm_crit_perfil = true;
          }
      }
      else
      {
          $perfil_trab = $con_devel;
      }
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida_init']) || !$_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida_init']) 
      {
      }
// 
      if (!isset($_SESSION['scriptcase']['glo_tpbanco']))
      {
          if (!$nm_crit_perfil)
          {
              $this->nm_falta_var_db .= "glo_tpbanco; ";
          }
      }
      else
      {
          $this->nm_tpbanco = $_SESSION['scriptcase']['glo_tpbanco']; 
      }
      if (!isset($_SESSION['scriptcase']['glo_servidor']))
      {
          if (!$nm_crit_perfil)
          {
              $this->nm_falta_var_db .= "glo_servidor; ";
          }
      }
      else
      {
          $this->nm_servidor = $_SESSION['scriptcase']['glo_servidor']; 
      }
      if (!isset($_SESSION['scriptcase']['glo_banco']))
      {
          if (!$nm_crit_perfil)
          {
              $this->nm_falta_var_db .= "glo_banco; ";
          }
      }
      else
      {
          $this->nm_banco = $_SESSION['scriptcase']['glo_banco']; 
      }
      if (!isset($_SESSION['scriptcase']['glo_usuario']))
      {
          if (!$nm_crit_perfil)
          {
              $this->nm_falta_var_db .= "glo_usuario; ";
          }
      }
      else
      {
          $this->nm_usuario = $_SESSION['scriptcase']['glo_usuario']; 
      }
      if (!isset($_SESSION['scriptcase']['glo_senha']))
      {
          if (!$nm_crit_perfil)
          {
              $this->nm_falta_var_db .= "glo_senha; ";
          }
      }
      else
      {
          $this->nm_senha = $_SESSION['scriptcase']['glo_senha']; 
      }
      if (isset($_SESSION['scriptcase']['glo_database_encoding']))
      {
          $this->nm_database_encoding = $_SESSION['scriptcase']['glo_database_encoding']; 
      }
      $this->nm_arr_db_extra_args = array(); 
      if (isset($_SESSION['scriptcase']['glo_use_ssl']))
      {
          $this->nm_arr_db_extra_args['use_ssl'] = $_SESSION['scriptcase']['glo_use_ssl']; 
      }
      if (isset($_SESSION['scriptcase']['glo_mysql_ssl_key']))
      {
          $this->nm_arr_db_extra_args['mysql_ssl_key'] = $_SESSION['scriptcase']['glo_mysql_ssl_key']; 
      }
      if (isset($_SESSION['scriptcase']['glo_mysql_ssl_cert']))
      {
          $this->nm_arr_db_extra_args['mysql_ssl_cert'] = $_SESSION['scriptcase']['glo_mysql_ssl_cert']; 
      }
      if (isset($_SESSION['scriptcase']['glo_mysql_ssl_capath']))
      {
          $this->nm_arr_db_extra_args['mysql_ssl_capath'] = $_SESSION['scriptcase']['glo_mysql_ssl_capath']; 
      }
      if (isset($_SESSION['scriptcase']['glo_mysql_ssl_ca']))
      {
          $this->nm_arr_db_extra_args['mysql_ssl_ca'] = $_SESSION['scriptcase']['glo_mysql_ssl_ca']; 
      }
      if (isset($_SESSION['scriptcase']['glo_mysql_ssl_cipher']))
      {
          $this->nm_arr_db_extra_args['mysql_ssl_cipher'] = $_SESSION['scriptcase']['glo_mysql_ssl_cipher']; 
      }
      if (isset($_SESSION['scriptcase']['postgres_sslmode']))
      {
          $this->nm_arr_db_extra_args['postgres_sslmode'] = $_SESSION['scriptcase']['postgres_sslmode']; 
      }
      if (isset($_SESSION['scriptcase']['postgres_sslrootcert']))
      {
          $this->nm_arr_db_extra_args['postgres_sslrootcert'] = $_SESSION['scriptcase']['postgres_sslrootcert']; 
      }
      if (isset($_SESSION['scriptcase']['postgres_sslkey']))
      {
          $this->nm_arr_db_extra_args['postgres_sslkey'] = $_SESSION['scriptcase']['postgres_sslkey']; 
      }
      if (isset($_SESSION['scriptcase']['postgres_sslcert']))
      {
          $this->nm_arr_db_extra_args['postgres_sslcert'] = $_SESSION['scriptcase']['postgres_sslcert']; 
      }
      if (isset($_SESSION['scriptcase']['mssql_encrypt']))
      {
          $this->nm_arr_db_extra_args['mssql_encrypt'] = $_SESSION['scriptcase']['mssql_encrypt']; 
      }
      if (isset($_SESSION['scriptcase']['mssql_trustservercertificate']))
      {
          $this->nm_arr_db_extra_args['mssql_trustservercertificate'] = $_SESSION['scriptcase']['mssql_trustservercertificate']; 
      }
      if (isset($_SESSION['scriptcase']['mssql_truststore']))
      {
          $this->nm_arr_db_extra_args['mssql_truststore'] = $_SESSION['scriptcase']['mssql_truststore']; 
      }
      if (isset($_SESSION['scriptcase']['mssql_truststorepassword']))
      {
          $this->nm_arr_db_extra_args['mssql_truststorepassword'] = $_SESSION['scriptcase']['mssql_truststorepassword']; 
      }
      if (isset($_SESSION['scriptcase']['mssql_hostnameincertificate']))
      {
          $this->nm_arr_db_extra_args['mssql_hostnameincertificate'] = $_SESSION['scriptcase']['mssql_hostnameincertificate']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db2_autocommit']))
      {
          $this->nm_con_db2['db2_autocommit'] = $_SESSION['scriptcase']['glo_db2_autocommit']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db2_i5_lib']))
      {
          $this->nm_con_db2['db2_i5_lib'] = $_SESSION['scriptcase']['glo_db2_i5_lib']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db2_i5_naming']))
      {
          $this->nm_con_db2['db2_i5_naming'] = $_SESSION['scriptcase']['glo_db2_i5_naming']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db2_i5_commit']))
      {
          $this->nm_con_db2['db2_i5_commit'] = $_SESSION['scriptcase']['glo_db2_i5_commit']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db2_i5_query_optimize']))
      {
          $this->nm_con_db2['db2_i5_query_optimize'] = $_SESSION['scriptcase']['glo_db2_i5_query_optimize']; 
      }
      if (isset($_SESSION['scriptcase']['oracle_type']))
      {
          $this->nm_arr_db_extra_args['oracle_type'] = $_SESSION['scriptcase']['oracle_type']; 
      }
      if (isset($_SESSION['scriptcase']['ibase_charset']))
      {
          $this->nm_arr_db_extra_args['ibase_charset'] = $_SESSION['scriptcase']['ibase_charset']; 
      }
      if (isset($_SESSION['scriptcase']['ibase_rolename']))
      {
          $this->nm_arr_db_extra_args['ibase_rolename'] = $_SESSION['scriptcase']['ibase_rolename']; 
      }
      if (isset($_SESSION['scriptcase']['ibase_dialect']))
      {
          $this->nm_arr_db_extra_args['ibase_dialect'] = $_SESSION['scriptcase']['ibase_dialect']; 
      }
      if (isset($_SESSION['scriptcase']['security']))
      {
          $this->nm_arr_db_extra_args['security'] = $_SESSION['scriptcase']['security']; 
      }
      if (isset($_SESSION['scriptcase']['sslservercertificate']))
      {
          $this->nm_arr_db_extra_args['sslservercertificate'] = $_SESSION['scriptcase']['sslservercertificate']; 
      }
      if (isset($_SESSION['scriptcase']['sslclientkeystoredb']))
      {
          $this->nm_arr_db_extra_args['sslclientkeystoredb'] = $_SESSION['scriptcase']['sslclientkeystoredb']; 
      }
      if (isset($_SESSION['scriptcase']['sslclientkeystash']))
      {
          $this->nm_arr_db_extra_args['sslclientkeystash'] = $_SESSION['scriptcase']['sslclientkeystash']; 
      }
      if (isset($_SESSION['scriptcase']['authentication']))
      {
          $this->nm_arr_db_extra_args['authentication'] = $_SESSION['scriptcase']['authentication']; 
      }
      if (isset($_SESSION['scriptcase']['sslclientlabel']))
      {
          $this->nm_arr_db_extra_args['sslclientlabel'] = $_SESSION['scriptcase']['sslclientlabel']; 
      }
      if (isset($_SESSION['scriptcase']['use_ssh']))
      {
          $this->nm_arr_db_extra_args['use_ssh'] = $_SESSION['scriptcase']['use_ssh']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_server']))
      {
          $this->nm_arr_db_extra_args['ssh_server'] = $_SESSION['scriptcase']['ssh_server']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_user']))
      {
          $this->nm_arr_db_extra_args['ssh_user'] = $_SESSION['scriptcase']['ssh_user']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_port']))
      {
          $this->nm_arr_db_extra_args['ssh_port'] = $_SESSION['scriptcase']['ssh_port']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_privatecert']))
      {
          $this->nm_arr_db_extra_args['ssh_privatecert'] = $_SESSION['scriptcase']['ssh_privatecert']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_localserver']))
      {
          $this->nm_arr_db_extra_args['ssh_localserver'] = $_SESSION['scriptcase']['ssh_localserver']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_localport']))
      {
          $this->nm_arr_db_extra_args['ssh_localport'] = $_SESSION['scriptcase']['ssh_localport']; 
      }
      if (isset($_SESSION['scriptcase']['ssh_localportforwarding']))
      {
          $this->nm_arr_db_extra_args['ssh_localportforwarding'] = $_SESSION['scriptcase']['ssh_localportforwarding']; 
      }
      if (isset($_SESSION['scriptcase']['glo_use_persistent']))
      {
          $this->nm_con_persistente = $_SESSION['scriptcase']['glo_use_persistent']; 
      }
      if (isset($_SESSION['scriptcase']['glo_use_schema']))
      {
          $this->nm_con_use_schema = $_SESSION['scriptcase']['glo_use_schema']; 
      }
      $this->date_delim  = "'";
      $this->date_delim1 = "'";
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_sybase))
      {
          $this->date_delim  = "";
          $this->date_delim1 = "";
      }
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_access))
      {
          $this->date_delim  = "#";
          $this->date_delim1 = "#";
      }
      if (isset($_SESSION['scriptcase']['glo_decimal_db']) && !empty($_SESSION['scriptcase']['glo_decimal_db']))
      {
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['decimal_db'] = $_SESSION['scriptcase']['glo_decimal_db']; 
      }
      if (isset($_SESSION['scriptcase']['glo_date_separator']) && !empty($_SESSION['scriptcase']['glo_date_separator']))
      {
          $SC_temp = trim($_SESSION['scriptcase']['glo_date_separator']);
          if (strlen($SC_temp) == 2)
          {
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date']  = substr($SC_temp, 0, 1); 
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date1'] = substr($SC_temp, 1, 1); 
          }
          else
           {
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date']  = $SC_temp; 
              $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date1'] = $SC_temp; 
          }
          $this->date_delim  = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date'];
          $this->date_delim1 = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date1'];
      }
// 
      if (!empty($this->nm_falta_var) || !empty($this->nm_falta_var_db) || $nm_crit_perfil)
      {
         $str_message = "<html>

<head>
    <title>{var_str_title}</title>
    <style>
        body {
            margin: 0px;
            padding: 0px;
            overflow-x: hidden;
            min-width: 320px;
            background: #FFFFFF;
            font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
            font-size: 14px;
            line-height: 1.4285em;
            color: rgba(0, 0, 0, 0.87);
            font-smoothing: antialiased;
        }

        html,
        body {
            height: 100%;
        }

        body {
            margin: 0;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        user agent stylesheet body {
            display: block;
            margin: 8px;
        }

        html {
            font-size: 14px;
        }

        html {
            line-height: 1.15;
            -ms-text-size-adjust: 100%;
            -webkit-text-size-adjust: 100%;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        ::selection {
            background-color: #CCE2FF;
            color: rgba(0, 0, 0, 0.87);
        }

        .ui.container {
            width: 933px;
            min-width: 992px;
            max-width: 1199px;
            margin-left: auto !important;
            margin-right: auto !important;
        }

        .ui.container {
            display: block;
            max-width: 100% !important;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        .ui.message:last-child {
            margin-bottom: 0em;
        }

        .ui.message:first-child {
            margin-top: 0em;
        }

        .ui.message {
            font-size: 1em;
        }

        .ui.message {
            position: relative;
            min-height: 1em;
            margin: 1em 0em;
            background: #F8F8F9;
            padding: 1em 1.5em;
            line-height: 1.4285em;
            color: rgba(0, 0, 0, 0.87);
            transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease;
            border-radius: 0.28571429rem;
            box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 0px 0px 0px rgba(0, 0, 0, 0);
        }

        article,
        aside,
        footer,
        header,
        nav,
        section {
            display: block;
        }

        *,
        *:before,
        *:after {
            box-sizing: inherit;
        }

        .ui.message> :last-child {
            margin-bottom: 0em;
        }

        .ui.message> :first-child {
            margin-top: 0em;
        }

        .ui.message .header+p {
            margin-top: 0.25em;
        }

        .ui.message p {
            opacity: 0.85;
            margin: 0.75em 0em;
        }

        p {
            margin: 0em 0em 1em;
            line-height: 1.4285em;
        }

        .ui.message .header:not(.ui) {
            font-size: 1.14285714em;
        }

        .ui.message .header {
            display: block;
            font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif;
            font-weight: bold;
            margin: -0.14285714em 0em 1.2rem 0em;
        }

        .ui.button {
            cursor: pointer;
            display: inline-block;
            min-height: 1em;
            outline: 0;
            border: none;
            vertical-align: baseline;
            background: #e0e1e2 none;
            color: rgba(0, 0, 0, .6);
            font-family: Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;
            margin: 0 .25em 0 0;
            padding: .78571429em 1.5em .78571429em;
            text-transform: none;
            text-shadow: none;
            font-weight: 700;
            line-height: 1em;
            font-style: normal;
            text-align: center;
            text-decoration: none;
            border-radius: .28571429rem;
            box-shadow: 0 0 0 1px transparent inset, 0 0 0 0 rgba(34, 36, 38, .15) inset;
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
            transition: opacity .1s ease, background-color .1s ease, color .1s ease, box-shadow .1s ease, background .1s ease;
            will-change: '';
            -webkit-tap-highlight-color: transparent;
        }
        
        .ui.button,
        .ui.buttons .button,
        .ui.buttons .or {
            font-size: 1rem;
            flex-flow: row nowrap;
            justify-content: center;
            align-items: center;
            column-gap: .5rem;
            display: flex;
        }
        
        .ui.primary.button,
        .ui.primary.buttons .button {
            background-color: #2185d0;
            color: #fff;
            text-shadow: none;
            background-image: none;
        }
        
        .ui.primary.button {
            box-shadow: 0 0 0 0 rgba(34, 36, 38, .15) inset;
        }

        [type=reset], [type=submit], button, html [type=button] {
            -webkit-appearance: button;
        }

        .icon{
            position: relative;
            width: 1.2rem;
            height: 1.2rem;
            display: block;
            color: inherit;
            background-repeat: no-repeat;
        }

        .icon.database{
            background-image: url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\" fill=\"%23FFFFFF\"><path d=\"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"/></svg>');
        }
    </style>
</head>

<body>
    <div class='ui container' style='padding-top:2rem'>
        <section class='ui message'>
            <div class='content'>
                <div class='header'>
                    <h1 class='ui header'>{var_str_title}</h1>
                </div>
                <p>{var_str_message}</p>
                <p>{var_str_message_conn}</p>
                {v_str_btn_inside}
            </div>
        </section>
    </div>";
         $str_message_end = "</body>
</html>";
         $str_message = str_replace('{var_str_title}', $this->Nm_lang['lang_errm_dbcn_create'], $str_message);
          if (empty($this->nm_falta_var_db))
          {
              if (!empty($this->nm_falta_var))
              {
                  $str_message = str_replace('{var_str_message}', $this->Nm_lang['lang_errm_glob'] . $this->nm_falta_var, $str_message);
                  $str_message = str_replace('{var_str_message_conn}','', $str_message);
              }
              elseif ($nm_crit_perfil)
              {
                  $str_message = str_replace('{var_str_message}', $this->Nm_lang['lang_errm_dbcn_nfnd'], $str_message);
                  $str_message = str_replace('{var_str_message_conn}', $this->Nm_lang['lang_errm_dbcn_conn_nfnd'] . ' ' . $perfil_trab, $str_message);
                  $str_message = str_replace('{v_str_btn_inside}', "<button class='ui button primary' style='font-size: 16px !important;'><a href='" . $this->path_prod . "' style='color: white;text-decoration:none'><i class='icon database' style='float: left;padding-right: .5rem;'></i>". $this->Nm_lang['lang_errm_dbcn_create'] ."</a></button>", $str_message);
              }
          }
          else
          {
                  $str_message = str_replace('{var_str_message}', $this->Nm_lang['lang_errm_dbcn_data'], $str_message);
          }
         $str_message = str_replace('{var_str_message_conn}','', $str_message);
         $str_message = str_replace('{v_str_btn_inside}', '', $str_message);
          echo $str_message;
          if (!$_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'] && (!isset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan']) || !$_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan'])) 
          { 
              if (isset($_SESSION['scriptcase']['nm_sc_retorno']) && !empty($_SESSION['scriptcase']['nm_sc_retorno'])) 
              { 
               $btn_value = "" . $this->Ini->Nm_lang['lang_btns_back'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_value))
               {
                   $btn_value = sc_convert_encoding($btn_value, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
               $btn_hint = "" . $this->Ini->Nm_lang['lang_btns_back_hint'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_hint))
               {
                   $btn_hint = sc_convert_encoding($btn_hint, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
?>
                   <input type="button" id="sai" onClick="window.location='<?php echo $_SESSION['scriptcase']['nm_sc_retorno'] ?>'; return false" class="scButton_default" value="<?php echo $btn_value ?>" title="<?php echo $btn_hint ?>" style="vertical-align: middle;">

<?php
              } 
              elseif(!empty($nm_url_saida)) 
              { 
               $btn_value = "" . $this->Ini->Nm_lang['lang_btns_exit'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_value))
               {
                   $btn_value = sc_convert_encoding($btn_value, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
               $btn_hint = "" . $this->Ini->Nm_lang['lang_btns_exit_hint'] . "";
               if ($_SESSION['scriptcase']['charset'] != "UTF-8" && NM_is_utf8($btn_hint))
               {
                   $btn_hint = sc_convert_encoding($btn_hint, $_SESSION['scriptcase']['charset'], "UTF-8");
               }
?>
                   <input type="button" id="sai" onClick="window.location='<?php echo $nm_url_saida ?>'; return false" class="scButton_default" value="<?php echo $btn_value ?>" title="<?php echo $btn_hint ?>" style="vertical-align: middle;">

<?php
              } 
          } 
          echo $str_message_end;
          exit ;
      }
      if (isset($_SESSION['scriptcase']['glo_db_master_usr']) && !empty($_SESSION['scriptcase']['glo_db_master_usr']))
      {
          $this->nm_usuario = $_SESSION['scriptcase']['glo_db_master_usr']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db_master_pass']) && !empty($_SESSION['scriptcase']['glo_db_master_pass']))
      {
          $this->nm_senha = $_SESSION['scriptcase']['glo_db_master_pass']; 
      }
      if (isset($_SESSION['scriptcase']['glo_db_master_cript']) && !empty($_SESSION['scriptcase']['glo_db_master_cript']))
      {
          $_SESSION['scriptcase']['glo_senha_protect'] = $_SESSION['scriptcase']['glo_db_master_cript']; 
      }
   }
   function conectDB()
   {
      global $glo_senha_protect;
      $glo_senha_protect = (isset($_SESSION['scriptcase']['glo_senha_protect'])) ? $_SESSION['scriptcase']['glo_senha_protect'] : "S";
      if (isset($_SESSION['scriptcase']['nm_sc_retorno']) && !empty($_SESSION['scriptcase']['nm_sc_retorno']) && isset($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']) && !empty($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao']))
      { 
          $this->Db = db_conect_devel($_SESSION['scriptcase']['funciones_generales']['glo_nm_conexao'], $this->root . $this->path_prod, 'Grant', 1, $this->force_db_utf8); 
      } 
      else 
      { 
          ob_start();
          $databaseEncoding = $this->force_db_utf8 ? 'utf8' : $this->nm_database_encoding;
          $this->Db = db_conect($this->nm_tpbanco, $this->nm_servidor, $this->nm_usuario, $this->nm_senha, $this->nm_banco, $glo_senha_protect, "S", $this->nm_con_persistente, $this->nm_con_db2, $databaseEncoding, $this->nm_arr_db_extra_args); 
          if (!isset($this->Ajax_result_set)) {$this->Ajax_result_set = ob_get_contents();}
          ob_end_clean();
      } 
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida']) || !$_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida'])
      {
          if (substr($_POST['nmgp_opcao'], 0, 5) == "ajax_")
          {
              ob_start();
          } 
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_ibase))
      {
          if (function_exists('ibase_timefmt'))
          {
              ibase_timefmt('%Y-%m-%d %H:%M:%S');
          } 
          $GLOBALS["NM_ERRO_IBASE"] = 1;  
          $this->Ibase_version = "old";
          if ($ibase_version = $this->Db->Execute("SELECT RDB\$GET_CONTEXT('SYSTEM','ENGINE_VERSION') AS \"Version\" FROM RDB\$DATABASE"))
          {
              if (isset($ibase_version->fields[0]) && substr($ibase_version->fields[0], 0, 1) > 2) {$this->Ibase_version = "new";}
          }
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_sybase))
      {
          $this->Db->fetchMode = ADODB_FETCH_BOTH;
          $this->Db->Execute("set dateformat ymd");
          $this->Db->Execute("set quoted_identifier ON");
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_db2))
      {
          $this->Db->fetchMode = ADODB_FETCH_NUM;
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_mssql))
      {
          $this->Db->Execute("set dateformat ymd");
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_oracle))
      {
          $this->Db->Execute("alter session set nls_date_format         = 'yyyy-mm-dd hh24:mi:ss'");
          $this->Db->Execute("alter session set nls_timestamp_format    = 'yyyy-mm-dd hh24:mi:ss'");
          $this->Db->Execute("alter session set nls_timestamp_tz_format = 'yyyy-mm-dd hh24:mi:ss'");
          $this->Db->Execute("alter session set nls_time_format         = 'hh24:mi:ss'");
          $this->Db->Execute("alter session set nls_time_tz_format      = 'hh24:mi:ss'");
          $this->Db->Execute("alter session set nls_numeric_characters  = '.,'");
          $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['decimal_db'] = "."; 
      } 
      if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_postgres))
      {
          $this->Db->Execute("SET DATESTYLE TO ISO");
      } 
      if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida']) || !$_SESSION['sc_session'][$this->sc_page]['funciones_generales']['embutida'])
      {
          if (substr($_POST['nmgp_opcao'], 0, 5) == "ajax_")
          {
              ob_end_clean();
          } 
      } 
   }
   function regionalDefault()
   {
       $_SESSION['scriptcase']['reg_conf']['date_format']   = (isset($this->Nm_conf_reg[$this->str_conf_reg]['data_format']))              ?  $this->Nm_conf_reg[$this->str_conf_reg]['data_format'] : "ddmmyyyy";
       $_SESSION['scriptcase']['reg_conf']['date_sep']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['data_sep']))                 ?  $this->Nm_conf_reg[$this->str_conf_reg]['data_sep'] : "/";
       $_SESSION['scriptcase']['reg_conf']['date_week_ini'] = (isset($this->Nm_conf_reg[$this->str_conf_reg]['prim_dia_sema']))            ?  $this->Nm_conf_reg[$this->str_conf_reg]['prim_dia_sema'] : "SU";
       $_SESSION['scriptcase']['reg_conf']['time_format']   = (isset($this->Nm_conf_reg[$this->str_conf_reg]['hora_format']))              ?  $this->Nm_conf_reg[$this->str_conf_reg]['hora_format'] : "hhiiss";
       $_SESSION['scriptcase']['reg_conf']['time_sep']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['hora_sep']))                 ?  $this->Nm_conf_reg[$this->str_conf_reg]['hora_sep'] : ":";
       $_SESSION['scriptcase']['reg_conf']['time_pos_ampm'] = (isset($this->Nm_conf_reg[$this->str_conf_reg]['hora_pos_ampm']))            ?  $this->Nm_conf_reg[$this->str_conf_reg]['hora_pos_ampm'] : "right_without_space";
       $_SESSION['scriptcase']['reg_conf']['time_simb_am']  = (isset($this->Nm_conf_reg[$this->str_conf_reg]['hora_simbolo_am']))          ?  $this->Nm_conf_reg[$this->str_conf_reg]['hora_simbolo_am'] : "am";
       $_SESSION['scriptcase']['reg_conf']['time_simb_pm']  = (isset($this->Nm_conf_reg[$this->str_conf_reg]['hora_simbolo_pm']))          ?  $this->Nm_conf_reg[$this->str_conf_reg]['hora_simbolo_pm'] : "pm";
       $_SESSION['scriptcase']['reg_conf']['simb_neg']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['num_sinal_neg']))            ?  $this->Nm_conf_reg[$this->str_conf_reg]['num_sinal_neg'] : "-";
       $_SESSION['scriptcase']['reg_conf']['grup_num']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['num_sep_agr']))              ?  $this->Nm_conf_reg[$this->str_conf_reg]['num_sep_agr'] : ".";
       $_SESSION['scriptcase']['reg_conf']['dec_num']       = (isset($this->Nm_conf_reg[$this->str_conf_reg]['num_sep_dec']))              ?  $this->Nm_conf_reg[$this->str_conf_reg]['num_sep_dec'] : ",";
       $_SESSION['scriptcase']['reg_conf']['neg_num']       = (isset($this->Nm_conf_reg[$this->str_conf_reg]['num_format_num_neg']))       ?  $this->Nm_conf_reg[$this->str_conf_reg]['num_format_num_neg'] : 2;
       $_SESSION['scriptcase']['reg_conf']['monet_simb']    = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_simbolo']))        ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_simbolo'] : "$";
       $_SESSION['scriptcase']['reg_conf']['monet_f_pos']   = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_format_num_pos'])) ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_format_num_pos'] : 3;
       $_SESSION['scriptcase']['reg_conf']['monet_f_neg']   = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_format_num_neg'])) ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_format_num_neg'] : 13;
       $_SESSION['scriptcase']['reg_conf']['grup_val']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_sep_agr']))        ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_sep_agr'] : ".";
       $_SESSION['scriptcase']['reg_conf']['dec_val']       = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_sep_dec']))        ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_sep_dec'] : ",";
       $_SESSION['scriptcase']['reg_conf']['html_dir']      = (isset($this->Nm_conf_reg[$this->str_conf_reg]['ger_ltr_rtl']))              ?  " DIR='" . $this->Nm_conf_reg[$this->str_conf_reg]['ger_ltr_rtl'] . "'" : "";
       $_SESSION['scriptcase']['reg_conf']['css_dir']       = (isset($this->Nm_conf_reg[$this->str_conf_reg]['ger_ltr_rtl']))              ?  $this->Nm_conf_reg[$this->str_conf_reg]['ger_ltr_rtl'] : "LTR";
       $_SESSION['scriptcase']['reg_conf']['num_group_digit']       = (isset($this->Nm_conf_reg[$this->str_conf_reg]['num_group_digit']))       ?  $this->Nm_conf_reg[$this->str_conf_reg]['num_group_digit'] : "1";
       $_SESSION['scriptcase']['reg_conf']['unid_mont_group_digit'] = (isset($this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_group_digit'])) ?  $this->Nm_conf_reg[$this->str_conf_reg]['unid_mont_group_digit'] : "1";
   }
// 

   function scCsrfGetToken()
   {
       if (!isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['csrf_token']))
       {
           $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['csrf_token'] = $this->scCsrfGenerateToken();
       }

       return $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['csrf_token'];
   }

   function scCsrfGenerateToken()
   {
       $aSources = array(
           'abcdefghijklmnopqrstuvwxyz',
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
           '1234567890',
           '!@$*()-_[]{},.;:'
       );

       $sRandom = '';

       $aSourcesSizes = array();
       $iSourceSize   = sizeof($aSources) - 1;
       for ($i = 0; $i <= $iSourceSize; $i++)
       {
           $aSourcesSizes[$i] = strlen($aSources[$i]) - 1;
       }

       for ($i = 0; $i < 64; $i++)
       {
           $iSource = $this->scCsrfRandom(0, $iSourceSize);
           $sRandom .= substr($aSources[$iSource], $this->scCsrfRandom(0, $aSourcesSizes[$iSource]), 1);
       }

       return $sRandom;
   }

   function scCsrfRandom($iMin, $iMax)
   {
       return mt_rand($iMin, $iMax);
   }

   function sc_Include($path, $tp, $name)
   {
       if ((empty($tp) && empty($name)) || ($tp == "F" && !function_exists($name)) || ($tp == "C" && !class_exists($name)))
       {
           include_once($path);
       }
   } // sc_Include
   function sc_Sql_Protect($var, $tp, $conex="")
   {
       if (empty($conex) || $conex == "conn_mysql")
       {
           $TP_banco = $_SESSION['scriptcase']['glo_tpbanco'];
       }
       else
       {
           eval ("\$TP_banco = \$this->nm_con_" . $conex . "['tpbanco'];");
       }
       if ($tp == "date")
       {
           $delim  = "'";
           $delim1 = "'";
           if (in_array(strtolower($TP_banco), $this->nm_bases_access))
           {
               $delim  = "#";
               $delim1 = "#";
           }
           if (isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date']) && !empty($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date']))
           {
               $delim  = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date'];
               $delim1 = $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_sep_date1'];
           }
           return $delim . $var . $delim1;
       }
       else
       {
           return $var;
       }
   } // sc_Sql_Protect
   function sc_Date_Protect($val_dt)
   {
       $dd = substr($val_dt, 8, 2);
       $mm = substr($val_dt, 5, 2);
       $yy = substr($val_dt, 0, 4);
       $hh = (strlen($val_dt) > 10) ? substr($val_dt, 10) : "";
       if ($mm > 12) {
           $mm = 12;
       }
       $dd_max = 31;
       if ($mm == '04' || $mm == '06' || $mm == '09' || $mm == 11) {
           $dd_max = 30;
       }
       if ($mm == '02') {
           $dd_max = ($yy % 4 == 0) ? 29 : 28;
       }
       if ($dd > $dd_max) {
           $dd = $dd_max;
       }
       return $yy . "-" . $mm . "-" . $dd . $hh;
   }
        function appIsSsl() {
                if (isset($_SERVER['HTTPS'])) {
                        if ('on' == strtolower($_SERVER['HTTPS'])) {
                                return true;
                        }
                        if ('1' == $_SERVER['HTTPS']) {
                                return true;
                        }
                }

                if (isset($_SERVER['REQUEST_SCHEME'])) {
                        if ('https' == $_SERVER['REQUEST_SCHEME']) {
                                return true;
                        }
                }

                if (isset($_SERVER['SERVER_PORT'])) {
                        if ('443' == $_SERVER['SERVER_PORT']) {
                                return true;
                        }
                }

                return false;
        }
   function Get_Gb_date_format($GB, $cmp)
   {
       return (isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Gb_date_format'][$GB][$cmp])) ? $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Gb_date_format'][$GB][$cmp] : "";
   }

   function Get_Gb_prefix_date_format($GB, $cmp)
   {
       return (isset($_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Gb_prefix_date_format'][$GB][$cmp])) ? $_SESSION['sc_session'][$this->sc_page]['funciones_generales']['SC_Gb_prefix_date_format'][$GB][$cmp] : "";
   }

   function GB_date_format($val, $format, $prefix="", $conf_region="S", $mask="")
   {
           return $val;
   }
   function Get_arg_groupby($val, $format)
   {
       return $val; 
   }
   function Get_format_dimension($ind_ini, $ind_qb, $campo, $rs, $conf_region="S", $mask="")
   {
       $retorno    = array();
       $format     = $this->Get_Gb_date_format($ind_qb, $campo);
       $Prefix_dat = $this->Get_Gb_prefix_date_format($ind_qb, $campo);
       if (empty($format) || $rs->fields[$ind_ini] == "")
       {
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $rs->fields[$ind_ini];
           return $retorno;
       }
       if ($format == 'YYYYMMDDHHIISS')
       {
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($rs->fields[$ind_ini], $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYMMDDHHII')
       {
           $this->Ajust_fields($ind_ini, $rs, "1,2,3,4");
           $temp            = $rs->fields[$ind_ini] . "-" . $rs->fields[$ind_ini + 1] . "-" . $rs->fields[$ind_ini + 2] . " " . $rs->fields[$ind_ini + 3] . ":" . $rs->fields[$ind_ini + 4];
           $retorno['orig'] = $temp;
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYMMDDHH')
       {
           $this->Ajust_fields($ind_ini, $rs, "1,2,3");
           $temp            = $rs->fields[$ind_ini] . "-" . $rs->fields[$ind_ini + 1] . "-" . $rs->fields[$ind_ini + 2] . " " . $rs->fields[$ind_ini + 3];
           $retorno['orig'] = $temp;
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYMMDD2')
       {
           $this->Ajust_fields($ind_ini, $rs, "1,2");
           $temp            = $rs->fields[$ind_ini] . "-" . $rs->fields[$ind_ini + 1] . "-" . $rs->fields[$ind_ini + 2];
           $retorno['orig'] = $temp;
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYMM')
       {
           $this->Ajust_fields($ind_ini, $rs, "1");
           $temp            = $rs->fields[$ind_ini] . "-" . $rs->fields[$ind_ini + 1];
           $retorno['orig'] = $temp;
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'MMDD')
       {
           $this->Ajust_fields($ind_ini, $rs, "0,1");
           $temp            = "0000-" . $rs->fields[$ind_ini] . "-" . $rs->fields[$ind_ini + 1];
           $retorno['orig'] = $temp;
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYY')
       {
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($rs->fields[$ind_ini], $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'BIMONTHLY' || $format == 'QUARTER' || $format == 'FOURMONTHS' || $format == 'SEMIANNUAL' || $format == 'WEEK')
       {
           $temp            = (substr($rs->fields[$ind_ini], 0, 1) == 0) ? substr($rs->fields[$ind_ini], 1) : $rs->fields[$ind_ini];
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $Prefix_dat . $temp;
           return $retorno;
       }
       if ($format == 'DAYNAME'|| $format == 'YYYYDAYNAME')
       {
           if ($format == 'DAYNAME')
           {
               $retorno['orig'] = $rs->fields[$ind_ini];
               $ano             = "";
               $daynum          = $rs->fields[$ind_ini];
           }
           else
           {
               $retorno['orig'] = $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
               $ano             = " " . $rs->fields[$ind_ini];
               $daynum          = $rs->fields[$ind_ini + 1];
           }
           if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_access) || in_array(strtolower($this->nm_tpbanco), $this->nm_bases_oracle) || in_array(strtolower($this->nm_tpbanco), $this->nm_bases_mssql) || in_array(strtolower($this->nm_tpbanco), $this->nm_bases_db2) || in_array(strtolower($this->nm_tpbanco), $this->nm_bases_progress))
           {
               $daynum--;
           }
           if (in_array(strtolower($this->nm_tpbanco), $this->nm_bases_mysql))
           {
               $daynum = ($daynum == 6) ? 0 : $daynum + 1;
           }
           if ($daynum == 0) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_sund'] . $ano;
           }
           if ($daynum == 1) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_mond'] . $ano;
           }
           if ($daynum == 2) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_tued'] . $ano;
           }
           if ($daynum == 3) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_wend'] . $ano;
           }
           if ($daynum == 4) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_thud'] . $ano;
           }
           if ($daynum == 5) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_frid'] . $ano;
           }
           if ($daynum == 6) {
               $retorno['fmt'] = $Prefix_dat . $this->Nm_lang['lang_days_satd'] . $ano;
           }
           return $retorno;
       }
       if ($format == 'HH')
       {
           $this->Ajust_fields($ind_ini, $rs, "0");
           $temp            = "0000-00-00 " . $rs->fields[$ind_ini];
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'DD')
       {
           $this->Ajust_fields($ind_ini, $rs, "0");
           $temp            = "0000-00-" . $rs->fields[$ind_ini];
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'MM')
       {
           $this->Ajust_fields($ind_ini, $rs, "0");
           $temp            = "0000-" . $rs->fields[$ind_ini];
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYY')
       {
           $temp            = $rs->fields[$ind_ini];
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYHH')
       {
           $this->Ajust_fields($ind_ini, $rs, "1");
           $temp            = $rs->fields[$ind_ini] . "-00-00 " . $rs->fields[$ind_ini + 1];
           $retorno['orig'] = $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       if ($format == 'YYYYDD')
       {
           $this->Ajust_fields($ind_ini, $rs, "1");
           $temp            = $rs->fields[$ind_ini] . "-00-" . $rs->fields[$ind_ini + 1];
           $retorno['orig'] = $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $this->GB_date_format($temp, $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       elseif ($format == 'YYYYBIMONTHLY' || $format == 'YYYYQUARTER' || $format == 'YYYYFOURMONTHS' || $format == 'YYYYSEMIANNUAL')
       {
           $temp            = (substr($rs->fields[$ind_ini + 1], 0, 1) == 0) ? substr($rs->fields[$ind_ini + 1], 1) : $rs->fields[$ind_ini + 1];
           $retorno['orig'] = $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $Prefix_dat . $temp . " " . $rs->fields[$ind_ini];
           return $retorno;
       }
       elseif ($format == 'YYYYWEEK')
       {
           $temp            = (substr($rs->fields[$ind_ini + 1], 0, 1) == 0) ? substr($rs->fields[$ind_ini + 1], 1) : $rs->fields[$ind_ini + 1];
           $retorno['orig'] = (strlen($rs->fields[$ind_ini + 1]) == 1) ? $rs->fields[$ind_ini] . "0" . $rs->fields[$ind_ini + 1] : $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $Prefix_dat . $temp . " " . $rs->fields[$ind_ini];
           return $retorno;
       }
       if ($format == 'YYYYHH' || $format == 'YYYYDD')
       {
           $this->Ajust_fields($ind_ini, $rs, "1");
           $retorno['orig'] = $rs->fields[$ind_ini] . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $rs->fields[$ind_ini] . $_SESSION['scriptcase']['reg_conf']['date_sep'] . $rs->fields[$ind_ini + 1];
           return $retorno;
       }
       elseif ($format == 'HHIISS')
       {
           $this->Ajust_fields($ind_ini, $rs, "0,1,2");
           $retorno['orig'] = $rs->fields[$ind_ini] . ":" . $rs->fields[$ind_ini + 1] . ":" . $rs->fields[$ind_ini + 2];
           $retorno['fmt']  = $this->GB_date_format("0000-00-00 " . $retorno['orig'], $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       elseif ($format == 'HHII')
       {
           $this->Ajust_fields($ind_ini, $rs, "0,1");
           $retorno['orig'] = $rs->fields[$ind_ini] . ":" . $rs->fields[$ind_ini + 1];
           $retorno['fmt']  = $this->GB_date_format("0000-00-00 " . $retorno['orig'], $format, $Prefix_dat, $conf_region, $mask);
           return $retorno;
       }
       else
       {
           $retorno['orig'] = $rs->fields[$ind_ini];
           $retorno['fmt']  = $rs->fields[$ind_ini];
           return $retorno;
       }
   }
   function Ajust_fields($ind_ini, &$rs, $parts)
   {
       $prep = explode(",", $parts);
       foreach ($prep as $ind)
       {
           $ind_ok = $ind_ini + $ind;
           $rs->fields[$ind_ok] = (int) $rs->fields[$ind_ok];
           if (strlen($rs->fields[$ind_ok]) == 1)
           {
               $rs->fields[$ind_ok] = "0" . $rs->fields[$ind_ok];
           }
       }
   }
   function Get_date_order_groupby($sql_def, $order, $format="", $order_old="")
   {
       $order      = " " . trim($order);
       $order_old .= (!empty($order_old)) ? ", " : "";
       return $order_old . $sql_def . $order;
   }
}
//===============================================================================
//
class funciones_generales_apl
{
   var $Ini;
   var $Erro;
   var $Db;
   var $Lookup;
   var $nm_location;
//
//----- 
   function prep_modulos($modulo)
   {
      $this->$modulo->Ini = $this->Ini;
      $this->$modulo->Db = $this->Db;
      $this->$modulo->Erro = $this->Erro;
   }
//
//----- 
   function controle()
   {
      global $nm_saida, $nm_url_saida, $script_case_init, $glo_senha_protect;

      $this->Ini = new funciones_generales_ini(); 
      $this->Ini->init();
      $this->Change_Menu = false;
      if (isset($_SESSION['scriptcase']['menu_atual']) && (!isset($_SESSION['sc_session'][$this->Ini->sc_page]['funciones_generales']['sc_outra_jan']) || !$_SESSION['sc_session'][$this->Ini->sc_page]['funciones_generales']['sc_outra_jan']))
      {
          $this->sc_init_menu = "x";
          if (isset($_SESSION['scriptcase'][$_SESSION['scriptcase']['menu_atual']]['sc_init']['funciones_generales']))
          {
              $this->sc_init_menu = $_SESSION['scriptcase'][$_SESSION['scriptcase']['menu_atual']]['sc_init']['funciones_generales'];
          }
          elseif (isset($_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']]))
          {
              foreach ($_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']] as $init => $resto)
              {
                  if ($this->Ini->sc_page == $init)
                  {
                      $this->sc_init_menu = $init;
                      break;
                  }
              }
          }
          if ($this->Ini->sc_page == $this->sc_init_menu && !isset($_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']][$this->sc_init_menu]['funciones_generales']))
          {
               $_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']][$this->sc_init_menu]['funciones_generales']['link'] = $this->Ini->sc_protocolo . $this->Ini->server . $this->Ini->path_link . "" . SC_dir_app_name('funciones_generales') . "/";
               $_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']][$this->sc_init_menu]['funciones_generales']['label'] = "" . $this->Ini->Nm_lang['lang_othr_blank_title'] . "";
               $this->Change_Menu = true;
          }
          elseif ($this->Ini->sc_page == $this->sc_init_menu)
          {
              $achou = false;
              foreach ($_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']][$this->sc_init_menu] as $apl => $parms)
              {
                  if ($apl == "funciones_generales")
                  {
                      $achou = true;
                  }
                  elseif ($achou)
                  {
                      unset($_SESSION['scriptcase']['menu_apls'][$_SESSION['scriptcase']['menu_atual']][$this->sc_init_menu][$apl]);
                      $this->Change_Menu = true;
                  }
              }
          }
      }
      $dir_raiz          = strrpos($_SERVER['PHP_SELF'],"/") ;  
      $dir_raiz          = substr($_SERVER['PHP_SELF'], 0, $dir_raiz + 1) ;  
      $this->nm_location = $this->Ini->sc_protocolo . $this->Ini->server . $dir_raiz; 
      if (isset($_SESSION['scriptcase']['sc_apl_conf']['funciones_generales']['exit']) && $_SESSION['scriptcase']['sc_apl_conf']['funciones_generales']['exit'] != '')
      {
          $_SESSION['scriptcase']['sc_url_saida'][$this->Ini->sc_page]       = $_SESSION['scriptcase']['sc_apl_conf']['funciones_generales']['exit'];
          $_SESSION['scriptcase']['sc_force_url_saida'][$this->Ini->sc_page] = true;
      }
      $glo_senha_protect = (isset($_SESSION['scriptcase']['glo_senha_protect'])) ? $_SESSION['scriptcase']['glo_senha_protect'] : "S";

      $this->Ini->sc_Include($this->Ini->path_libs . "/nm_gc.php", "F", "nm_gc") ; 
      nm_gc($this->Ini->path_libs);
      if (!function_exists("SC_Mail_Image"))
      {
          include_once("funciones_generales_sc_mail_image.php");
      }
      include_once($this->Ini->path_aplicacao . 'rwsp-api_class.php');
      $this->nm_data = new nm_data("es");
      $_SESSION['scriptcase']['sc_tab_meses']['int'] = array(
                                  $this->Ini->Nm_lang['lang_mnth_janu'],
                                  $this->Ini->Nm_lang['lang_mnth_febr'],
                                  $this->Ini->Nm_lang['lang_mnth_marc'],
                                  $this->Ini->Nm_lang['lang_mnth_apri'],
                                  $this->Ini->Nm_lang['lang_mnth_mayy'],
                                  $this->Ini->Nm_lang['lang_mnth_june'],
                                  $this->Ini->Nm_lang['lang_mnth_july'],
                                  $this->Ini->Nm_lang['lang_mnth_augu'],
                                  $this->Ini->Nm_lang['lang_mnth_sept'],
                                  $this->Ini->Nm_lang['lang_mnth_octo'],
                                  $this->Ini->Nm_lang['lang_mnth_nove'],
                                  $this->Ini->Nm_lang['lang_mnth_dece']);
      $_SESSION['scriptcase']['sc_tab_meses']['abr'] = array(
                                  $this->Ini->Nm_lang['lang_shrt_mnth_janu'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_febr'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_marc'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_apri'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_mayy'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_june'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_july'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_augu'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_sept'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_octo'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_nove'],
                                  $this->Ini->Nm_lang['lang_shrt_mnth_dece']);
      $_SESSION['scriptcase']['sc_tab_dias']['int'] = array(
                                  $this->Ini->Nm_lang['lang_days_sund'],
                                  $this->Ini->Nm_lang['lang_days_mond'],
                                  $this->Ini->Nm_lang['lang_days_tued'],
                                  $this->Ini->Nm_lang['lang_days_wend'],
                                  $this->Ini->Nm_lang['lang_days_thud'],
                                  $this->Ini->Nm_lang['lang_days_frid'],
                                  $this->Ini->Nm_lang['lang_days_satd']);
      $_SESSION['scriptcase']['sc_tab_dias']['abr'] = array(
                                  $this->Ini->Nm_lang['lang_shrt_days_sund'],
                                  $this->Ini->Nm_lang['lang_shrt_days_mond'],
                                  $this->Ini->Nm_lang['lang_shrt_days_tued'],
                                  $this->Ini->Nm_lang['lang_shrt_days_wend'],
                                  $this->Ini->Nm_lang['lang_shrt_days_thud'],
                                  $this->Ini->Nm_lang['lang_shrt_days_frid'],
                                  $this->Ini->Nm_lang['lang_shrt_days_satd']);
      $this->Db = $this->Ini->Db; 
      include_once($this->Ini->path_aplicacao . "funciones_generales_erro.class.php"); 
      $this->Erro      = new funciones_generales_erro();
      $this->Erro->Ini = $this->Ini;
      $old_dir = getcwd();
      chdir($this->Ini->path_third . "/tcpdf/");
      include_once("tcpdf.php");
      chdir($old_dir);
//
      header("X-XSS-Protection: 1; mode=block");
      header("X-Frame-Options: SAMEORIGIN");
      
/*----- Scriptcase Locale: Event onExecute ------*/
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if (isset($_GET['cierreordentrabajotaller'])){
	$msj=$this->cierreordentrabajotaller($_GET['orden_id'],$_GET['fecha_cierre']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['imprimeboletataller'])){
	$this->imprimeboletataller();
	return;
}
if (isset($_GET['pre_movimientocontenedor']) and isset($_GET['calcule_ruta'])){
	$msj=$this->pre_movimientocontenedor_calcule_ruta($_GET['pre_movimientocontenedor']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['get_fecha_validez_carnet'])){
	$strsql="select date_format(carnet_valid_hasta,'%Y-%m-%d'),DATE_FORMAT(carnet_valid_hasta,'%d/%b/%Y')
	           from pre_control 
              WHERE 1=id";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->datagetfvc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->datagetfvc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->datagetfvc = false;
          $this->datagetfvc_erro = $this->Db->ErrorMsg();
      } 

	if ($this->datagetfvc ===false){
		$msj=array("error"=>" get_fecha_validez_carnet.#11:".$this->datagetfvc_erro );
	} else {
		if (count($this->datagetfvc )==0){
			$msj=array("error"=>"","fecha_actual"=>'',"fecha_actual2"=>'');
		} else {
		    $msj=array("error"=>"","fecha_actual"=>$this->datagetfvc[0][0],"fecha_actual2"=>$this->datagetfvc[0][1]);
		}
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;		
}
if (isset($_GET['upd_fecha_validez_carnet'])){
	$strsql="UPDATE pre_control 
                SET carnet_valid_hasta='".$_GET['upd_fecha_validez_carnet']."'  
              WHERE 1=id";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->dataupdfvc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->dataupdfvc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->dataupdfvc = false;
          $this->dataupdfvc_erro = $this->Db->ErrorMsg();
      } 

	if ($this->dataupdfvc ===false){
		$msj=array("error"=>" upd_fecha_validez_carnet.#25:".$this->dataupdfvc_erro );
	} else {
		$msj=array("error"=>"");
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['oqc_rutas_nuevas_form'])){
	unset($_SESSION['oqc_rutas_nuevas_form']);
	$_SESSION['oscarfiltrorutasnuevas']="(pganancia<0 or pganancia_seco<0) and estado=1";
	echo '';
	return;  	
}

if (isset($_GET['update_inv_salida_encabezado'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$msj=$this->update_inv_salida_encabezado($_GET['update_inv_salida_encabezado']);
	if (''==$msj['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['generar_asiento_traslado'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

    $msj=$this->generar_de_nuevo_asiento_traslado_lib($_GET['generar_asiento_traslado']);
	
	if (''==$msj['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['aplicartraslado'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$msj=$this->aplicar_traslado($_GET['aplicartraslado']);
	if (''==$msj['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['enviar_msg_whatsapp_directo']) and isset($_GET['mensaje']) and isset($_GET['telefono1']) and isset($_GET['origen'])){
    $msj=$this->rwspapienviar_mensaje(1,$_GET['origen'],$_GET['telefono1'],$_GET['mensaje'],'');
	header('Content-type: application/json; charset=utf-8');
	if (''==$msj['error']){
		echo '';
	} else {
	   header('Content-type: application/json; charset=utf-8');
	   echo json_encode($msj, JSON_FORCE_OBJECT);
	}
	return;	
}
		  
if (1==144){
   $mensaje='http://limon.transportesgrant.com/grant/evc?b=81653279';
	$mensaje='Transportes Grant le informa que deposito su salario\n Para ver el detalle ingresa al siguiente link\n'.$mensaje;
	echo $mensaje.'<br>';
   $msj=enviar_whatsapp_ssoqc($mensaje.' '.date('Y-m-d H:i:s'),'50687110011','','','','LOC240104161202','6000');
	if (''<>$msj['error']){
	  echo "Error:".$msj['error'];
	} else {
		echo 'Sin error';
	}
	return;
}

if (isset($_GET['cambiar_boleta_prv_recauche'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$elnumero=$_GET['lxaboleta'];
	$lanumeracion=$_GET['numeracion'];
	$datos=$this->cambiar_boleta_prv_recauche($elnumero,$lanumeracion);
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['importarxlsparallantas'])){
	$narc=$_GET['importarxlsparallantas'];
	$datos=$this->importarxlsparallantas($narc);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['imprimeliquidacion'])){
     $msj=$this->imprime_liquidacion_empleado($_GET['imprimeliquidacion'],$_GET['empresa']);
	return;
}
if (isset($_GET['actualizaciondatosplanillas'])){
		if (!isset($_GET['aio'])){
		    if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('app_Login') . "/", $this->nm_location, "","_self", 440, 630, "ret_self");
 };
		}
		$strsql="SELECT 
					  IF(e.prueba_envio_comprobante=1,prueba_celular,b.movil) celular,
					  MD5(CONCAT(LPAD(a.id,10,'0'),a.cedula)) claveunica,
					  initcap(IF(''=b.primernombre,'colaborador',b.primernombre)) nombre,
					  b.movil,
					  f.url_actualizacion_datos_planilla,
					  ifnull(i.configuracion_whatsapp,5) configuracion_whatsapp ,
					  a.periodo,a.id,
					  j.estado,
					  a.cedula
					 FROM pla_actualizacion_de_datos a,
						  gen_persona b,
						  pla_control e,
						  pre_control f,
						  gen_usuario i,
						  pla_actualizacion_periodo j
				   WHERE a.cedula=b.cedula
					 AND i.usuario=f.usuario_envio_comprobante_whatsapp
					 and j.id=a.periodo
					 AND e.id=1
					 AND f.id=1
			 		 and MD5(CONCAT(LPAD(a.id,10,'0'),a.cedula))='".$_GET['aio']."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->ataverifica = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->ataverifica[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->ataverifica = false;
          $this->ataverifica_erro = $this->Db->ErrorMsg();
      } 

		if ($this->ataverifica ===false){
			echo "Error:".$this->ataverifica_erro .' '.$strsql;
		} else {
           if (count($this->ataverifica )<>0){
			   $kid=$this->ataverifica[0][7];
			   $kperiodo=$this->ataverifica[0][6];
			   $cestado=$this->ataverifica[0][8];
			   $c_cedula=$this->ataverifica[0][9];
			   $_SESSION['desdefunciones']=1;
			   if (1==$cestado){
			   $_SESSION['scriptcase']['sc_apl_seg']['form_pla_actualizacion_de_datos'] = "on";;
			   $_SESSION['scriptcase']['sc_apl_conf']['form_pla_actualizacion_de_datos']['update'] = 'on';
			    if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('form_pla_actualizacion_de_datos') . "/", $this->nm_location, "cedula?#?" . NM_encode_input($c_cedula) . "?@?" . "periodo?#?" . NM_encode_input($kperiodo) . "?@?","_self", 440, 630, "ret_self");
 };
			  } else {
				echo '<h1>Error, el periodo esta inactivo</h1>';   
			  }
		   } else {
			echo 'No existe registro:<br><br>'.$strsql;   
		  }
		}
   return;
}

if (isset($_GET['enviar_link_actualizacion_datos_pla'])){
	$datos=$this->enviar_link_actualizacion_datos_pla($_GET['id_sc_field_id_periodo_1']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}
	
if (isset($_GET['recibir_llantas_de_recauche'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->recibir_llantas_de_recauche($_GET['bodega'],$_GET['idordendecompra'],$_GET['id_movimiento']);
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['crearordendecomprarecauche'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->crearordendecomprarecauche($_GET['provedor'],$_GET['bodega'],$_GET['solicita'],$_GET['autoriza']);
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}

	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['imprimeordendecompra'])){
    $this->imprimir_orden_de_compra($_GET['imprimeordendecompra'],'funciones_generales','');
	return;
}
if (isset($_GET['envia_llanta_a_recauche'])){
	$lallanta=$_GET['lallanta'];
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->envia_llanta_a_recauche($lallanta);
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['verificarmonto'])){
	$elmonto=floatval($_GET['verificarmonto']);
	$datos='';
	if ($elmonto==0){
		$datos=array("error"=>"El monto no puede ser 0","ok"=>0,"montoingresado"=>$elmonto);
	}
	if ($elmonto<0){
		$datos=array("error"=>"El monto no puede ser negativo","ok"=>0,"montoingresado"=>$elmonto);
	}
	if ($elmonto>0){
		$datos=array("error"=>"","ok"=>1,"montoingresado"=>$elmonto);
	}
	if ('string'==gettype($datos)){
		$datos=array("error"=>"Error en parametros","ok"=>0,"montoingresado"=>$elmonto);
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}
	
if (isset($_GET['agregar_diesel_a_boleta'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->agregar_diesel_a_boleta($_GET['boleta'],$_GET['litros']);
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['verificarcantidaddiesel'])){
   $cantidad=$_GET['verificarcantidaddiesel'];
   $maximo=$_GET['dieselmaximo'];
   if ($cantidad>$maximo){
	   $datos=array("error"=>"Error cantidada maxima a solicitar es:".$maximo,'ok'=>0);
   } else {
	   $datos=array("error"=>"","ok"=>1,"litrosdiesel"=>$cantidad);  
   }
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['factor_diesel_x_kilomero'])){
	$datos=$this->factor_diesel_x_kilomero($_GET['kilometros'],$_GET['laboleta']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}
if (isset($_GET['tiene_fecha_retorno_colocacion'])){
    $strsql="SELECT id
		  FROM pre_chasis_despacho_retorno_colocacion
			WHERE id='".$_GET['id_boleta']."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->datatienefecha = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->datatienefecha[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->datatienefecha = false;
          $this->datatienefecha_erro = $this->Db->ErrorMsg();
      } 

	if ($this->datatienefecha ===false){
		$datos=array("error"=>"Error #22.tiene_fecha_retorno_colocacion.funciones_generales:".$this->datatienefecha_erro .' '.$strsql);
	} else {
	  if (count($this->datatienefecha )==0){
		$tiene_coloca='<span onclick="cambio_de_marca('."'".$_GET['id_boleta']."',".$_GET['id_indice'].")".'">';
		$fafa="fa-times";
		$info='Este contenedor no va a estar en colocaciones';
	  } else {
		$tiene_coloca='<span onclick="cambio_de_marca('."'".$_GET['id_boleta']."',".$_GET['id_indice'].")".'">'; 
		$fafa="fa-check";
		$info='Si se mostrara en colocaciones';
	  }
		$tiene_coloca='<h5><a 
			data-toggle="popover" 
			data-trigger="hover"
			data-placement="left"
			title="Informacion" 
			data-html="true"
			data-content="'.$info.'"
			>
			'.$tiene_coloca.'
			<i class="fas '.$fafa.'"></i></span>
			</a></h5>';			
	$datos=array("error"=>"","tiene_fecha"=>$tiene_coloca);
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['traer_marca_de_llanta'])){
	$el_idllanta=$_GET['el_idllanta'];
	$datos=$this->traer_marca_de_llanta($el_idllanta);
	if (''<>$datos['error']){
	} else {
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['act_marca_llanta'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->act_marca_llanta();
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['recuperarclave'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->recuperarclave();
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['generar_certificado_desecho'])){
	$l_cedula_resp=$_GET['cedula_resp'];
	$l_nombre_resp=$_GET['nombre_resp'];
	$l_placa=$_GET['placa'];
	$l_imp_enviollanta=$_GET['imp_enviollanta'];
	$l_cantidad=$_GET['lacantidad'];
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

  	$datos=$this->generar_certificado_desecho($l_cedula_resp,$l_nombre_resp,$l_placa,$l_imp_enviollanta,$l_cantidad);
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['imprimirticketllantas'])){

    $_SESSION['el_idmov_encabezado']=$_GET['elidmovimiento'];
    $_SESSION['imp_enviollanta']=$_GET['imp_enviollanta'];
	$datos=array("error"=>"");
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['imprimirticketdesecho'])){
    $_SESSION['el_idmov_encabezado']=$_GET['elidmovimiento'];
    $_SESSION['imp_enviollanta']=$_GET['imp_enviollanta'];
  	$datos=array("error"=>"");
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['recepcion_llantas'])){
    $id_bodega=$_GET['id_bodega'];
	$id_encabezado=$_GET['id_encabezado'];
	
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->recepcion_llantas($id_bodega, $id_encabezado);
	if ($datos['error']<>''){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['envia_llanta_a_desecho'])){
	$lallanta=$_GET['lallanta'];
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->envia_llanta_a_desecho($lallanta);
	if (''<>$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['envia_llanta_a_otro_predio_transito'])){
	$imp_enviollanta='';
    if (isset($_GET['imp_enviollanta'])){
	    $imp_enviollanta=$_GET['imp_enviollanta'];	
	}
   if (''==$imp_enviollanta){
		$datos=array("error"=>"Error la impresora no esta definida");
	} else {
			$lacedula=$_GET['lacedula'];
			$elnombre=$_GET['elnombre'];
			$ordendecompra=null;
	   		$bodega_destino=0;
	   		$recauchadora='';
	        if (isset($_GET['ordendecompra'])){
				$ordendecompra=$_GET['ordendecompra'];
			}
	   		if (isset($_GET['bodega_destino'])){
				$bodega_destino=$_GET['bodega_destino'];
			}
	   		if (isset($_GET['recauchadora'])){
				$recauchadora=$_GET['recauchadora'];
			}
			if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

			$datos=$this->envia_llanta_a_otro_predio_transito($lacedula, $elnombre,$imp_enviollanta,$ordendecompra,$bodega_destino,$recauchadora);
			if ($datos['error']<>''){
				if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

			} else {
				if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

			}
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['envia_llanta_a_otro_predio'])){
	
	$j_lallanta=$_GET['lallanta'];
	$datos=$this->envia_llanta_a_otro_predio($j_lallanta);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
		
}

if (isset($_GET['enviarcomprobantesdepago'])){
	$cid_planilla=$_GET['id_planilla'];
	$datos=$this->enviarcomprobantesdepago($cid_planilla);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['enviar_msg_whatsapp_boleta'])){
	if (isset($_GET['esboletaretorno'])){
		$_SESSION['enviar_msj_whatsapprt']='SI';
	} else {
		unset($_SESSION['enviar_msj_whatsapprt']);
	}
	$datos=$this->enviar_msg_whatsapp_boleta($_GET['boleta'],'','','','','');
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['inv_aplicar_costos'])){
	$c_bodega='';
	$c_codigo='';
	if (isset($_GET['c_bodega'])){
		$c_bodega=$_GET['c_bodega'];
	}
	if (isset($_GET['c_codigo'])){
		$c_codigo=$_GET['c_codigo'];
	}
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->inv_aplicar_costos($c_bodega,$c_codigo);
	if ($datos['error']<>''){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		$cdatos2=$this->inv_aplicar_costos_asientos($c_bodega,$c_codigo);
		if (''<>$cdatos2['error']){
			$datos['error']=$cdatos2['error'];
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		} else {
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		}
	}
	
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['enviar_msg_whatsapp_directo'])){
	$el_mensaje=$_GET['mensaje'];
	$el_tel1=$_GET['telefono1'];
	$el_tel2='';
	$c_token_qr='';
	$c_puerto='';
    $el_usuario=$_GET['usuario'];
	$strsql="select ifnull(configuracion_whatsapp,0) from gen_usuario where usuario='".$el_usuario."'";
	$strsql="select ifnull(configuracion_whatsapp,0),
				IFNULL(cfg_rwsp,'') cfg_rwsp,
				IFNULL(cfg_linea,'') cfg_linea,
				IFNULL(cfg_server,0) cfg_server
				from v_gen_usuario 
				where usuario='".$el_usuario."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->dataconfuser = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->dataconfuser[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->dataconfuser = false;
          $this->dataconfuser_erro = $this->Db->ErrorMsg();
      } 

	if ($this->dataconfuser ===false){
		$msj=array("error"=>"Error:".$this->dataconfuser_erro .' '.$strsql);
	} else {
		if (count($this->dataconfuser )==0){
		   $msj=array("error"=>"no encontre el usuario:".$el_usuario);
		} else {
		    $configuracion_whatsapp=$this->dataconfuser[0][0];
			$cfg_server=$this->dataconfuser[0][3];
			$cfg_linea=$this->dataconfuser[0][2];
			if (0<>$cfg_server){
				$msj=$this->rwspapienviar_mensaje($cfg_server,$cfg_linea,$el_tel1,$el_mensaje,'');
			} else {
				if (0<>$configuracion_whatsapp){
					$msj=$this->enviar_whatsapp_waapi($el_mensaje,$el_tel1,'','',$configuracion_whatsapp);
				} else {
					$msj=array("error"=>"El usuario ".$el_usuario." no tiene configuraicon whatsapp");
				}
			}
		}
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($msj, JSON_FORCE_OBJECT);
	return;	
}
	
if (isset($_GET['activar_ruta_cliente']) and isset($_GET['codigo_ruta']) and isset($_GET['codigo_cliente'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->ruta_a_activar($_GET['codigo_ruta'],$_GET['codigo_cliente']);
	if ($datos['error']<>''){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['rotar_llanta'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->rotar_llanta();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['update_pre_llanta_profundidad'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->update_pre_llanta_profundidad();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;			
}

if (isset($_GET['update_pre_llanta'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->update_pre_llanta();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;			
}

if (isset($_GET['act_llantas'])){
  	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->act_llantas();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['anularordendecompra'])){
  	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->anularordendecompra();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	

	
}
if (isset($_GET['anular_mareco_prefactura_no'])){
	$n_prefactura=$_GET['anular_mareco_prefactura_no'];
	$c_tipo_repar=$_GET['tipo'];
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->anular_mareco_prefactura_no($n_prefactura,$c_tipo_repar);
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
	
}

if (isset($_GET['prefactura']) and isset($_GET['vereltotal'])){
	$datos=$this->prefactura_vereltotal();
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}
	
if (isset($_GET['old_old_oldprefactura']) and isset($_GET['vereltotal'])){
		$strsql="select sum(monto) monto,count(*) cuantos,
		                sum(impuesto) iva,sum(monto+impuesto) total
				   from ope_prefactura_temporal
				  where cliente='".$_GET['elcodigodelcliente']."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->gettotaltmp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->gettotaltmp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->gettotaltmp = false;
          $this->gettotaltmp_erro = $this->Db->ErrorMsg();
      } 

		if ($this->gettotaltmp ===false){
		   $datos=array("error"=>"Error:".$this->gettotaltmp_erro .' '.$strsql);	
		} else {
			if (count($this->gettotaltmp )==0){
				$datos=array("error"=>"","monto"=>"<h2>".number_format(0,2).'</h2>');
			} else {
			   $subtotal=$this->gettotaltmp[0][0];	
			   $iva=$this->gettotaltmp[0][2];	
			   $total=$this->gettotaltmp[0][3];	
				$datos=array("error"=>"",
							 "monto"=>"<h2>Cantidad de movimientos:".$this->gettotaltmp[0][1]."</h2>
							    <h2>Sub-Total:".number_format($subtotal,2)."</h2>
							    <h2>Iva      :".number_format($iva,2)."</h2>
							    <h2>Total    :".number_format($total,2).'</h2>'
							);
			}

		}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['arreglar_costos']) and isset($_GET['sistemainv'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->arreglar_costos_sistemainv();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['tfisca_auxiliar_agregar'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->tfisca_auxiliar_agregar();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['tfisca_auxiliar_eliminar'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->tfisca_auxiliar_eliminar();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;			
}

if (isset($_GET['tfisca_auxiliar_modificar'])){
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->tfisca_auxiliar_modificar();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;			
}

if (isset($_GET['llamar_ips_vpn'])){
	$datos=llamar_ips_vpn();
	header('Content-type: application/json; charset=utf-8');
	return;		
}

if (isset($_GET['puedo_aplicar_fisico'])){
	$datos=$this->puedo_aplicar_fisico($_GET['idtomafisica']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['cambiar_estado_compra'])){
	$id_compra=$_GET['id_compra'];
	$id_compra=str_replace(".","",$id_compra);
	$id_compra=str_replace(",","",$id_compra);	
	$datos=$this->cambiar_estado_compra($id_compra,$_GET['whereadicional'],$_GET['nuevoestado']);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;			
}
if (isset($_GET['verasientotmp'])){
	$id_compra=$_GET['id_compra'];
	$id_compra=str_replace(".","",$id_compra);
	$id_compra=str_replace(",","",$id_compra);	

	$datos=$this->ver_asiento_temporal($id_compra);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}

if (isset($_GET['incluir_detalle_fisico'])){
	$id_toma_fisica=$_GET['id_toma_fisica'];
	$el_codigo=$_GET['el_codigo'];
	$la_cantidad=$_GET['la_cantidad'];
	$datos=$this->incluir_detalle_fisico($id_toma_fisica,$el_codigo,$la_cantidad);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['aplicar_la_toma_fisica'])){
    $id_toma_fisica=$_GET['id_toma_fisica'];
	$datos=$this->aplicar_la_toma_fisica($id_toma_fisica);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['verificar_dato_ingresado'])){
	$bandera=$_GET['verificar_dato_ingresado'];
	$datoingresado=$_GET['datoingresado'];
	$datos=$this->verificar_dato_ingresado($bandera,$datoingresado);
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}
	
if (isset($_GET['verificarlaclave'])){
   $clavequetienequedigitar=$_GET['clavequetienequedigitar'];
   $clavedigitada=$_GET['verificarlaclave'];
	if ($clavequetienequedigitar==$clavedigitada){
		$datos=array("error"=>'',"ok"=>1);
	} else {
		$datos=array("error"=>'Error en la clave',"ok"=>0);
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['aplicacion_moviento_inv'])){
	$aplicar_los_costos='NO';
	if (isset($_GET['aplicar_los_costos'])){
		$aplicar_los_costos='SI';
	}
	$id_compra=$_GET['id_compra'];
	$id_compra=str_replace(".","",$id_compra);
	$id_compra=str_replace(",","",$id_compra);
	
	$datos=$this->verificar_entrada_salida_series($id_compra,'salidas');
	if (''==$datos['error']){
			if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

			$datos=$this->aplicacion_moviento_inv_lib($id_compra,$aplicar_los_costos);
			if (''==$datos['error']){
				if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

			} else {
				if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

			}
	} else {
		
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['verificar_entrada_para_aplicar'])){
	$datos=$this->verificar_entrada_para_aplicar_paso1();

	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['aplicacion_compra'])){
	$aplicar_los_costos='NO';
	if (isset($_GET['aplicar_los_costos'])){
		$aplicar_los_costos='SI';
	}
	if (!isset($_GET['id_compra'])){
			$datos=array("error"=>"Error #2 funciones_generales.aplicacion_compra:Falta el parametro de id compra");
	} else {
		$id_compra=$_GET['id_compra'];
		$id_compra=str_replace(".","",$id_compra);
		$id_compra=str_replace(",","",$id_compra);
		if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

		$datos=$this->aplicacion_compra_lib($id_compra,$aplicar_los_costos);
		if (''==$datos['error']){
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		} else {
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		}
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['verificar_id_para_des_aplicacion_compra'])){
	$id_compra=$_GET['id_compra'];
	$id_compra=str_replace(".","",$id_compra);
	$id_compra=str_replace(",","",$id_compra);	
    $strsql=" SELECT CONCAT('Error en el estado actual del codigo:',IFNULL(b.codigo_articulo,''),' con serie:',a.serie)
				FROM inv_existencias_series a
				LEFT JOIN inv_existencias b ON a.id_existencia=b.id
				LEFT JOIN inv_entradas_encabezado c ON c.id=a.id_encabezado_compra
			  WHERE estado_actual<>1
			  AND IFNULL(serie,'')<>''
			  AND id_encabezado_compra=".$id_compra."
			  AND b.compania=c.compania";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->primeroseriesv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->primeroseriesv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->primeroseriesv = false;
          $this->primeroseriesv_erro = $this->Db->ErrorMsg();
      } 

	if ($this->primeroseriesv ===false){
		$datos=array("error"=>"Error #794.verificar_id_para_des_aplicacion_compra:".$this->primeroseriesv_erro .' '.$strsql);
		header('Content-type: application/json; charset=utf-8');
		echo json_encode($datos, JSON_FORCE_OBJECT);
		return;	
	}
	if (count($this->primeroseriesv )<>0){
		$datos=array("error"=>"Error #803.verificar_id_para_des_aplicacion_compra ".$this->primeroseriesv[0][0]);
		header('Content-type: application/json; charset=utf-8');
		echo json_encode($datos, JSON_FORCE_OBJECT);
		return;	
	}
	
	$strsql="select ifnull(rowid_movesta,0) from inv_entradas_encabezado where id='".$id_compra."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $this->dataverirowidmovesta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $this->dataverirowidmovesta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->dataverirowidmovesta = false;
          $this->dataverirowidmovesta_erro = $this->Db->ErrorMsg();
      } 

	if ($this->dataverirowidmovesta ===false){
		$datos=array("error"=>"Error #199 funciones_generales.des_aplicacion_compra:".$this->dataverirowidmovesta_erro .' '.$strsql);
	} else {
	  if (count($this->dataverirowidmovesta )>0 and $this->dataverirowidmovesta[0][0]>0){
		 $datos=array("error"=>"","preguntar"=>1); 
	  } else {
		 $datos=array("error"=>"","preguntar"=>0);
	  }
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;		
}
if (isset($_GET['des_aplicacion_compra'])){
	$aplicar_los_costos='NO';
	if (isset($_GET['aplicar_los_costos'])){
		$aplicar_los_costos='SI';
	}
	$id_compra=$_GET['id_compra'];
	$id_compra=str_replace(".","",$id_compra);
	$id_compra=str_replace(",","",$id_compra);	

	if (!isset($id_compra)){
			$datos=array("error"=>"Error #199 funciones_generales.des_aplicacion_compra:Falta el parametro de id compra");
	} else {
		if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

		$datos=$this->des_aplicar_compra_lib($id_compra,$aplicar_los_costos);
		if (''==$datos['error']){
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		} else {
			if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		}
	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;	
}

if (isset($_GET['autorizar_orden_de_compra'])){
    $elid=$_GET['elid'];
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$msj=$this->autorizar_orden_de_compra($elid,'SI',$appordenden);
	if (''==$msj){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		$datos=array("error"=>"");
	} else {
		$datos=array("error"=>$msj);
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['lista_pla_acciones_de_personal_tipo'])){
$strsql="  SELECT tipo,descripcion
    FROM pla_acciones_de_personal_tipo
   ORDER BY descripcion";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($this->dataadptipo = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $this->dataadptipo = false;
          $this->dataadptipo_erro = $this->Db->ErrorMsg();
      } 
	  
    
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
	
}

if (isset($_GET['act_twr_tipo_iso'])){

	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$datos=$this->act_twr_tipo_iso();
	if (''==$datos['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

	}
	header('Content-type: application/json; charset=utf-8');
	echo json_encode($datos, JSON_FORCE_OBJECT);
	return;
}

if (isset($_GET['imprime_orden_de_compra'])){
	$datos=$this->datos_orden_de_compra($_GET['imprime_orden_de_compra_id']);
	$eldetalle=$this->detalle_orde_de_compra($_GET['imprime_orden_de_compra_id']);
	if (''<>$eldetalle['error']){
		echo '<h1>Error </h1><h1>'.$eldetalle['error'].'</h1>';
	}
		require('../_lib/libraries/grp/librerias_grant/php/imprime_orden_de_compra_class.php');
		require('../_lib/libraries/grp/librerias_grant/php/imprime_orden_de_compra.php');
		$elmensaje=imprima_orden_de_compra_pdf($_GET['imprime_orden_de_compra_id'],$this->Ini->path_third,$_GET['napp'],$datos,$eldetalle['data'],'');
		if (''!=$elmensaje){
			echo $elmensaje;
		}
}

if (1==2){
	$k=$this->formato_html_recupera_clave();
	file_put_contents('/tmp/otra.html',$k);
	echo $k;
}
$datos=array("error"=>"No hay parametros funciones generales");
header('Content-type: application/json; charset=utf-8');
echo json_encode($datos, JSON_FORCE_OBJECT);
return;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
/*----- END - Scriptcase Locale: Event onExecute ------*/
 
//--- 
       $this->Db->Close(); 
       if ($this->Change_Menu)
       {
           $apl_menu  = $_SESSION['scriptcase']['menu_atual'];
           $Arr_rastro = array();
           if (isset($_SESSION['scriptcase']['menu_apls'][$apl_menu][$this->sc_init_menu]) && count($_SESSION['scriptcase']['menu_apls'][$apl_menu][$this->sc_init_menu]) > 1)
           {
               foreach ($_SESSION['scriptcase']['menu_apls'][$apl_menu][$this->sc_init_menu] as $menu => $apls)
               {
                  $Arr_rastro[] = "'<a href=\"" . $apls['link'] . "?script_case_init=" . $this->sc_init_menu . "\" target=\"#NMIframe#\">" . $apls['label'] . "</a>'";
               }
               $ult_apl = count($Arr_rastro) - 1;
               unset($Arr_rastro[$ult_apl]);
               $rastro = implode(",", $Arr_rastro);
?>
  <script type="text/javascript">
     link_atual = new Array (<?php echo $rastro ?>);
     if (parent.writeFastMenu)
     {
         parent.writeFastMenu(link_atual);
     }
  </script>
<?php
           }
           else
           {
?>
  <script type="text/javascript">
     if (parent.clearFastMenu)
     {
         parent.clearFastMenu();
     }
  </script>
<?php
           }
       }
       if (isset($this->redir_modal) && !empty($this->redir_modal))
       {
?>
        <script type="text/javascript" src="<?php echo $this->Ini->path_prod ?>/third/jquery/js/jquery.js"></script>
        <script type="text/javascript">
          var sc_pathToTB = '<?php echo $this->Ini->path_prod ?>/third/jquery_plugin/thickbox/';
          var sc_tbLangClose = "<?php echo html_entity_decode($this->Ini->Nm_lang["lang_tb_close"], ENT_COMPAT, $_SESSION["scriptcase"]["charset"]) ?>";
          var sc_tbLangEsc = "<?php echo html_entity_decode($this->Ini->Nm_lang["lang_tb_esc"], ENT_COMPAT, $_SESSION["scriptcase"]["charset"]) ?>";
        </script>
                <script type="text/javascript" src="<?php echo $this->Ini->path_prod ?>/third/jquery_plugin/thickbox/thickbox-compressed.js"></script>
                <link rel="stylesheet" href="<?php echo $this->Ini->path_prod ?>/third/jquery_plugin/thickbox/thickbox.css" type="text/css" media="screen" />
                <script type="text/javascript"><?php echo $this->redir_modal ?></script>
<?php
       } 
       exit;
   } 

/*----- Scriptcase Locale: PHP Method: act_llantas ------*/

function act_llantas()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$l1=$_GET['l1'];
$l2=$_GET['l2'];
$l3=$_GET['l3'];
$l4=$_GET['l4'];
$l5=$_GET['l5'];
$l6=$_GET['l6'];
$l7=$_GET['l7'];
$l8=$_GET['l8'];
$l9=$_GET['l9'];
$l10=$_GET['l10'];
$l11=$_GET['l11'];
$l12=$_GET['l12'];
$n_chasis_vehiculo=$_GET['n_chasis_vehiculo'];
$j_ubicacion=$_GET['$j_ubicacion'];

$msj=$this->act_llantas_verificar_ubicaciones($_GET['ubicacion_maxima'],$l1,$l2,$l3,$l4,$l5,$l6,$l7,$l8,$l9,$l10,$l11,$l12,$n_chasis_vehiculo,$j_ubicacion);
if ($msj['error']<>''){
	return $msj;
}

$i1=$_GET['i1'];
$i2=$_GET['i2'];
$i3=$_GET['i3'];
$i4=$_GET['i4'];
$i5=$_GET['i5'];
$i6=$_GET['i6'];
$i7=$_GET['i7'];
$i8=$_GET['i8'];
$i9=$_GET['i9'];
$i10=$_GET['i10'];
$i11=$_GET['i11'];
$i12=$_GET['i12'];

return array("error"=>
			 "l1=".$l1.' '.
			 "l2=".$l2.' '.
			 "l3=".$l3.' '.
			 "l4=".$l4.' '.
			 "l5=".$l5.' '.
			 "l6=".$l6.' '.
			 "l7=".$l7.' '.
			 "l8=".$l8.' '.
			 "l9=".$l9.' '.
			 "l10=".$l10.' '.
			 "l11=".$l11.' '.
			 "l12=".$l12.' '.
			 
			 "i1=".$i1.' '.
			 "i2=".$i2.' '.
			 "i3=".$i3.' '.
			 "i4=".$i4.' '.
			 "i5=".$i5.' '.
			 "i6=".$i6.' '.
			 "i7=".$i7.' '.
			 "i8=".$i8.' '.
			 "i9=".$i9.' '.
			 "i10=".$i10.' '.
			 "i11=".$i11.' '.
			 "i12=".$i12.' '.
			'n_chasis_vehiculo='.$n_chasis_vehiculo.
			 'j_ubicacion='.$j_ubicacion);
		 

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_llantas ------*/


/*----- Scriptcase Locale: PHP Method: act_llantas_verificar_la_ubicacion ------*/

function act_llantas_verificar_la_ubicacion($el_valor, $la_ubicacion, $n_chasis_vehiculo, $j_ubicacion)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$ol_value=$el_valor;
if ('string'==gettype($el_valor)){
	$el_valor=floatval($el_valor);
}
if ($el_valor==0){
	return array("error"=>"Ubicacion ".$la_ubicacion.' esta en cero y debe tener un valor. :'.$ol_value);
}
$strsql="SELECT id,IFNULL(vehiculo,'-1'),IFNULL(chasis,'-')
    FROM pre_llantas 
	where numeracion='".$el_valor."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexistenumeracion = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexistenumeracion[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexistenumeracion = false;
          $dataexistenumeracion_erro = $this->Db->ErrorMsg();
      } 

if ($dataexistenumeracion ===false){
	return array("error"=>"Error #13 act_llantas_verificar_la_ubicacion:".$dataexistenumeracion_erro .' '.$strsql);
}
if (count($dataexistenumeracion )==0){
	return array("error"=>"Error #13 act_llantas_verificar_la_ubicacion: la numeracion ".$el_valor.' no existe');
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_llantas_verificar_la_ubicacion ------*/


/*----- Scriptcase Locale: PHP Method: act_llantas_verificar_ubicaciones ------*/

function act_llantas_verificar_ubicaciones($ubicacion_maxima, $l1, $l2, $l3, $l4, $l5, $l6, $l7, $l8, $l9, $l10, $l11, $l12, $n_chasis_vehiculo, $j_ubicacion)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$ccol=1;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l1,1, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l2,2, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l3,3, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l4,4, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l5,5, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l6,6, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l7,7, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l8,8, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l9,9, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l10,10, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l11,11, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}
$ccol++;
if ($ubicacion_maxima>=$ccol){
	$msj=$this->act_llantas_verificar_la_ubicacion($l12,12, $n_chasis_vehiculo, $j_ubicacion);
	if ($msj['error']<>''){
		return $msj;
	}
}

return array("error"=>"");

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_llantas_verificar_ubicaciones ------*/


/*----- Scriptcase Locale: PHP Method: act_marca_llanta ------*/

function act_marca_llanta()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$id_llanta=$_GET['id_llanta'];
$id_marca=$_GET['id_marca'];
if (0==intval($id_llanta)){
	return array("error"=>"Error en el numero de llanta");
}
if (0==intval($id_marca)){
	return array("error"=>"Error en la marca seleccionada");
}
$strsql="update pre_llantas set marca='".$id_marca."',
                usuario_modifica='".$_SESSION['grant']['usr_login']."',
                fecha_modifica='".date('Y-m-d H:i:s')."' 
		  where numeracion='".$id_llanta."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdmarcallanta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdmarcallanta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdmarcallanta = false;
          $dataupdmarcallanta_erro = $this->Db->ErrorMsg();
      } 

if ($dataupdmarcallanta ===false){
	return array("error"=>"Error #15 act_marca_llanta.funciones_generales:".$dataupdmarcallanta_erro .' '.$strsql);
}

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_marca_llanta ------*/


/*----- Scriptcase Locale: PHP Method: act_twr_tipo_iso ------*/

function act_twr_tipo_iso()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$tipo_iso=$_GET['tipo_iso'];
$twr=$_GET['twr'];
$id_tir=$_GET['id_tir'];
$elid=$_GET['elid'];
$boleta=$_GET['boleta'];
$siglas=$_GET['siglas'];
$contenedor=$_GET['contenedor'];

$msj=$this->act_twr_tipo_iso_tipo_iso($siglas,$contenedor,$tipo_iso);
if (''<>$msj){
	return array("error"=>"Error:".$msj);
}

if ($boleta>0){
	$datos=$this->act_twr_tipo_iso_boleta($boleta,$twr,$id_tir);
} else {
	$datos=$this->act_twr_tipo_iso_movimiento($elid,$twr);
}
return $datos;


$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_twr_tipo_iso ------*/


/*----- Scriptcase Locale: PHP Method: act_twr_tipo_iso_boleta ------*/

function act_twr_tipo_iso_boleta($boleta, $twr, $id_tir)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$msj=$this->existe_twr($boleta,$twr);
if (''<>$msj){
	return array("error"=>$msj);
}
$strsql="insert into pre_chasis_despacho_cualidades_relacion_otros (id_boleta,cualidad,valor,estado) values
     ('.$boleta.','TWR','.$twr.',13)";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $instwrboleta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $instwrboleta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $instwrboleta = false;
          $instwrboleta_erro = $this->Db->ErrorMsg();
      } 

if ($instwrboleta ===false){
	return array("error"=>"Error #9 act_twr_tipo_iso_boleta ".$instwrboleta_erro .' '.$strsql);	
}
return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_twr_tipo_iso_boleta ------*/


/*----- Scriptcase Locale: PHP Method: act_twr_tipo_iso_movimiento ------*/

function act_twr_tipo_iso_movimiento($elid, $twr)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$msj=$this->existe_twr('',$twr);
if (''<>$msj){
	return array("error"=>$msj);
}
$strsql="SELECT c.id
           FROM pre_movimientocontenedor a,
		        pre_movimientocontenedor_booking b,
				pre_asignaciondetalle c 
	    WHERE a.id=b.id_movimiento
		  AND a.fk_numero_contenedor=c.contenedor
		  AND a.fk_siglas_contenedor=c.siglas
		  AND c.booking=b.booking";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $seleidpad = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $seleidpad[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $seleidpad = false;
          $seleidpad_erro = $this->Db->ErrorMsg();
      } 

if ($seleidpad ===false){
	return array("error"=>"Error #15 act_twr_tipo_iso_movimiento ".$seleidpad_error .' '.$strsql);
}

if (count($seleidpad )==0){
	return array("error"=>"Error #18 act_twr_tipo_iso_movimiento registro no encontrado");
}
$elid=$seleidpad[0][0];
if ($elid==0){
	return array("error"=>"Error #21 act_twr_tipo_iso_movimiento registro no encontrado");	
}
$strsql="update pre_asignaciondetalle set twr='".$twr."' where id='".$elid."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updeidpad = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updeidpad[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updeidpad = false;
          $updeidpad_erro = $this->Db->ErrorMsg();
      } 

if ($updeidpad ===false){
	return array("error"=>"Error #28 act_twr_tipo_iso_movimiento ".$updeidpad_erro .$strsql);	
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_twr_tipo_iso_movimiento ------*/


/*----- Scriptcase Locale: PHP Method: act_twr_tipo_iso_tipo_iso ------*/

function act_twr_tipo_iso_tipo_iso($siglas, $contenedor, $tipo_iso)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="update pre_contenedor
            set tipo='".$tipo_iso."'
		  where siglas='".$siglas."'
		    and numero_contenedor='".$contenedor."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updtipocnt = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updtipocnt[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updtipocnt = false;
          $updtipocnt_erro = $this->Db->ErrorMsg();
      } 

if ($updtipocnt ===false){
	return "Error #7 act_twr_tipo_iso_tipo_iso ".$updtipocnt_erro .' '.$strsql;
}
return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: act_twr_tipo_iso_tipo_iso ------*/


/*----- Scriptcase Locale: PHP Method: agregar_diesel_a_boleta ------*/

function agregar_diesel_a_boleta($la_boleta, $los_litros)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if (floatval($los_litros)==0){
	return array("error"=>"Error en cantidad","recargar"=>"NO");
}

$la_boleta=str_replace(".","",$la_boleta);
$la_boleta=str_replace(",","",$la_boleta);

$strsql="select litros_diesel ,if(b.via=1,b.kilometros,b.kilometros*2)*factor_diesel_x_kilomero maximo
     from pre_chasis_despacho a,
        pre_rutas_encabezado b ,
        pre_control c 
     where a.id=".$la_boleta."
       and a.ruta_destino=b.codigo
       and c.id=1 for update";

$strsql="select a.id
     from pre_chasis_despacho a
     where a.id=".$la_boleta."
       for update";

 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $databloquear = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $databloquear[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $databloquear = false;
          $databloquear_erro = $this->Db->ErrorMsg();
      } 

if ($databloquear ===false){
	return array("error"=>"Error #11 agregar_diesel_a_boleta:".$databloquear_erro .' '.$strsql,"recargar"=>"NO");
}


$strsql="update pre_chasis_despacho set litros_diesel=litros_diesel+".$los_litros.",
			usuario_modifica='".$_SESSION['grant']['usr_login']."',
			fecha_modificacion='".date('Y-m-d H:i:s')."'
            where id=".$la_boleta." limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdltsboletach = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdltsboletach[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdltsboletach = false;
          $dataupdltsboletach_erro = $this->Db->ErrorMsg();
      } 

if ($dataupdltsboletach ===false){
	return array("error"=>"Error #20 agregar_diesel_a_boleta:".$dataupdltsboletach_erro .' '.$strsql,"recargar"=>"NO");
}

$strsql="select litros_diesel ,round(if(b.via=1,b.kilometros,b.kilometros*2)*factor_diesel_x_kilomero,2) maximo
     from pre_chasis_despacho a,
        pre_rutas_encabezado b ,
        pre_control c 
     where a.id=".$la_boleta."
       and a.ruta_destino=b.codigo
       and c.id=1";

 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdltsboletacth = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdltsboletacth[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdltsboletacth = false;
          $dataupdltsboletacth_erro = $this->Db->ErrorMsg();
      } 

if ($dataupdltsboletacth ===false){
	return array("error"=>"Error #33 agregar_diesel_a_boleta:".$dataupdltsboletacth_erro .' '.$strsql,"recargar"=>"NO");
}
if (count($dataupdltsboletacth )==0){
	return array("error"=>"No existe la boleta:".$la_boleta,"recargar"=>"NO");
}
$maximo=$dataupdltsboletacth[0][1];
if ($dataupdltsboletacth[0][0]>$maximo){
	return array("error"=>"Error la cantidad maxima es:".$maximo,"recargar"=>"SI");
}
return array("error"=>"","total_diesel"=>$dataupdltsboletacth[0][0],"recargar"=>"SI");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: agregar_diesel_a_boleta ------*/


/*----- Scriptcase Locale: PHP Method: anular_mareco_prefactura_no ------*/

function anular_mareco_prefactura_no($no_mareco_prefactura, $c_tipo_repar)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql=" SELECT
			  id,
			  evento_aprobacion,
			  evento_finalizacion,
			  evento_reparacion_finalizada
			FROM
			  mareco_estimacionordenreparacion_tipo_reparacion
  		where id='".$c_tipo_repar."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datatiposs = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datatiposs[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datatiposs = false;
          $datatiposs_erro = $this->Db->ErrorMsg();
      } 

if($datatiposs ===false){
	return array("error"=>"Error:".$datatiposs_erro .' '.$strsql);
}
if (count($datatiposs )==0){
	return array("error"=>"Error, tipo de reparacion ".$c_tipo_repar." no existe");
}
$evento_finalizacion=$datatiposs[0][2];
$strsql="delete from mareco_estimacionordenreparacion_aprobacion_finalizacion_eventos
           where evento='".$evento_finalizacion."' and tipo_reparacion='".$c_tipo_repar."'
		   and id_estimacion in (select distinct id_estimacion
	      from mareco_estimacionordenreparacion_prefactura  
	      where id_prefactura='".$no_mareco_prefactura."')";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deletefprfx = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deletefprfx[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deletefprfx = false;
          $deletefprfx_erro = $this->Db->ErrorMsg();
      } 

if ($deletefprfx ===false){
	return array("error"=>"Error:".$deletefprfx_erro .' '.$strsql);
}

$strsql="update mareco_prefactura set 
    horas=0,
    costolabor=0,
    costo_materiales=0,
	costo_pti=0,
    costo_total=0
    where id='".$no_mareco_prefactura."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_upd_mco_prefa = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_upd_mco_prefa[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_upd_mco_prefa = false;
          $data_upd_mco_prefa_erro = $this->Db->ErrorMsg();
      } 

if ($data_upd_mco_prefa ===false){
	return array("error"=>"Error anular_prefactura_no #10:".$data_upd_mco_prefa_erro .' '.$strsql);
}

$strsql="insert into mareco_prefactura_cualidades (id_prefactura,cualidad,usuario,fecha) values 
     ('$no_mareco_prefactura','ANULACION','".$_SESSION['grant']['usr_login']."','".date('Y-m-d H:i:s')."')";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_ins_mco_prefa_cua = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_ins_mco_prefa_cua[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_ins_mco_prefa_cua = false;
          $data_ins_mco_prefa_cua_erro = $this->Db->ErrorMsg();
      } 

if ($data_ins_mco_prefa_cua ===false){
	return array("error"=>"Error anular_prefactura_no #28:".$data_ins_mco_prefa_cua_erro .' '.$strsql);
}
$strsql="delete from mareco_estimacionordenreparacion_prefactura where id_prefactura='".$no_mareco_prefactura."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deletedetalle = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deletedetalle[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deletedetalle = false;
          $deletedetalle_erro = $this->Db->ErrorMsg();
      } 

if ($deletedetalle ===false){
	return array("error"=>"Error:".$deletedetalle_erro .' '.$strsql);
}

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: anular_mareco_prefactura_no ------*/


/*----- Scriptcase Locale: PHP Method: anularordendecompra ------*/

function anularordendecompra()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$c_cia=$_GET['c_cia'];
$c_div=$_GET['c_div'];
$c_num=$_GET['c_num'];
$id_orden=$_GET['id_orden'];
$strsql="update pre_llantas_marcar_para
				   set id_orden_de_compra=null
			where id_orden_de_compra=".$id_orden;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updllantasrecacuche = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updllantasrecacuche[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updllantasrecacuche = false;
          $updllantasrecacuche_erro = $this->Db->ErrorMsg();
      } 

if ($updllantasrecacuche ===false){
	return array("error"=>"Error #10 anularordendecompra ".$updllantasrecacuche_erro .' '.$strsql);
}
$strsql="update inv_orden_de_compra_encabezado set estado=5,
								fecha_modificacion='".date('Y-m-d H:i:s')."',
								usuario_modifica='".$_SESSION['grant']['usr_login']."'
   where compania='".$c_cia."'
     and division=".$c_div."
	 and numero=".$c_num;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataanularoc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataanularoc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataanularoc = false;
          $dataanularoc_erro = $this->Db->ErrorMsg();
      } 

if ($dataanularoc ===false){
	return array("error"=>"Error:".$dataanularoc_erro .' '.$strsql);
}
$msj=$this->agregar_log('anularordendecompra','form_inv_orden_de_compra_encabezado','Anulacion orden:'.$c_num.' cia:'.$c_cia.' div:'.$c_div);
if (''<>$msj){
	return array("error"=>"Error #14 anularordendecompra:".$msj);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: anularordendecompra ------*/


/*----- Scriptcase Locale: PHP Method: arreglar_costos_sistemainv ------*/

function arreglar_costos_sistemainv()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$compania=$_GET['compania'];
$division=$_GET['division'];
$mes=$_GET['mes'];
$ano=$_GET['ano'];
$codigo=$_GET['codigo'];
$bodega=$_GET['bodega'];
$msj=" funciones: compania=".$compania." division=".$division." mes=".$mes." ano=".$ano." codigo=".$codigo." bodega=".$bodega;
$strsql="SELECT compania
  FROM inv_bodega
  WHERE compania='$compania'
    AND division=$division
    AND bodega='$bodega'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existebodega = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existebodega[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existebodega = false;
          $existebodega_erro = $this->Db->ErrorMsg();
      } 

if ($existebodega ===false){
	return array("error"=>"Error:".$existebodega_erro .' '.$strsql);
}
if (count($existebodega )==0){
	return array("error"=>"No existe la bodega");
}
$strsql="select codigo_articulo
           from inv_existencias
		  WHERE compania='$compania'
			AND division=$division
			AND bodega='$bodega'
			and codigo_articulo='$codigo'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existearticulo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existearticulo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existearticulo = false;
          $existearticulo_erro = $this->Db->ErrorMsg();
      } 

if ($existearticulo ===false){
	return array("error"=>"Error:".$existearticulo_erro .' '.$strsql);
}
if (count($existearticulo )==0){
	return array("error"=>"No existe el articulo en inventario");
}
return array("error"=>$msj);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: arreglar_costos_sistemainv ------*/


/*----- Scriptcase Locale: PHP Method: cambiar_boleta_prv_recauche ------*/

function cambiar_boleta_prv_recauche($elnumero, $lanumeracion)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="delete from pre_llantas_marcar_para where id_numeracion_llanta=".$lanumeracion."  and id_marca=1"; 
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $primeroborramos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $primeroborramos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $primeroborramos = false;
          $primeroborramos_erro = $this->Db->ErrorMsg();
      } 

if ($primeroborramos ===false){
	return array("error"=>"Errir #4 cambiar_boleta_prv_recauche:".$primeroborramos_erro .' '.$strsql);
}

if (''<>$elnumero){
    $strsql="insert into pre_llantas_marcar_para (id_numeracion_llanta,id_marca,boleta_provedor) values
	    (".$lanumeracion.",1,'".$elnumero."')";	
}
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updlallabtaid = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updlallabtaid[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updlallabtaid = false;
          $updlallabtaid_erro = $this->Db->ErrorMsg();
      } 

if ($updlallabtaid ===false){
	return array("error"=>'Error: '.$updlallabtaid_erro .' '.$strsql);
}

$strsql="update pre_llantas set boleta_provedor_recauche='".$elnumero."'
          where numeracion='".$lanumeracion."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updllanboletarecaprv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updllanboletarecaprv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updllanboletarecaprv = false;
          $updllanboletarecaprv_erro = $this->Db->ErrorMsg();
      } 

if ($updllanboletarecaprv ===false){
	return array("error"=>"Error #5 cambiar_boleta_prv_recauche:".$updllanboletarecaprv_erro .' '.$strsql);
}



return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: cambiar_boleta_prv_recauche ------*/


/*----- Scriptcase Locale: PHP Method: cambiar_estado_compra ------*/

function cambiar_estado_compra($id_compra, $whereadicional, $nuevoestado)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$msj=$this->verificar_entrada_salida_series($id_compra,'entradas');
if (''<>$msj['error']){
	return $msj;
}

$lindif='';
$msj=$this->verificar_totales_en_compra($id_compra);
if (''<>$msj){
	$lindif="<h3 style='background-color:red'> ".$msj.'<h3>';
	if (4==$nuevoestado){
	   return array("error"=>$lindif);
	}
}

$strsql="update inv_entradas_encabezado set estado='".$nuevoestado."' where id='".$id_compra."'".$whereadicional;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $xupdrevisado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $xupdrevisado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $xupdrevisado = false;
          $xupdrevisado_erro = $this->Db->ErrorMsg();
      } 

if ($xupdrevisado ===false){
	return array("error"=>"Error #4 al camvbiar el estado a ".$nuevoestado."".$xupdrevisado_erro .' '.$strsql);
} else {
	if (4==$nuevoestado) {
		return array("error"=>"","mensaje"=>'<h2>Marcado con exito</h2>');
	}
	if (1==$nuevoestado){
	    return array("error"=>"","mensaje"=>'<h2>Marca de revisado aliminada con exito</h2>'.$lindif);
	}
}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: cambiar_estado_compra ------*/


/*----- Scriptcase Locale: PHP Method: cierreordentrabajotaller ------*/

function cierreordentrabajotaller($orden_id, $fecha_cierre)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="update  taller_orden_trabajo_encabezado
            set estado=2,
			fecha_salida='$fecha_cierre',
			usuario_modifica='".$_SESSION['grant']['usr_login']."',
			fecha_modificacion='".date('Y-m-d H:i:s')."'
    where id=$orden_id limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updordentaller = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updordentaller[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updordentaller = false;
          $updordentaller_erro = $this->Db->ErrorMsg();
      } 

if ($updordentaller ===false){
	return array("error"=>"Error:".$updordentaller_erro .' '.$strsql);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: cierreordentrabajotaller ------*/


/*----- Scriptcase Locale: PHP Method: crearordendecomprarecauche ------*/

function crearordendecomprarecauche($elcodigodeprovedor, $bodega, $solicita, $autoriza)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select d.id_numeracion_llanta
			FROM
				pre_llantas a,
				pre_llantas_marcar_para d 
			where d.id_numeracion_llanta=a.numeracion 
			  and d.id_marca=1 
			  and id_orden_de_compra is null
			and a.estado=3
			order by d.id_numeracion_llanta";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $verificacantidadrecauche = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $verificacantidadrecauche[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $verificacantidadrecauche = false;
          $verificacantidadrecauche_erro = $this->Db->ErrorMsg();
      } 

if ($verificacantidadrecauche ===false){
	return array("error"=>"Error #12 crear orden de compra recauche ".$verificacantidadrecauche_erro .' '.$strsql);
}
if (count($verificacantidadrecauche )==0){
	return array("error"=>"Error #15 crear orden de compra recauche no hay llantas para recauche seleccionadas");
}

$kfecha=date('Y-m-d H:i:s');
$cia=$_SESSION['grant']['compania_default'];
$division=1;

$msj=$this->crear_orden_de_compra_lib($cia,$division,$bodega,$elcodigodeprovedor,$kfecha,1,$autoriza,$solicita,'pararecauche');
if (''<>$msj['error']){
   return array("error"=>"Error #8 crear orden de compra recauche ".$msj['error']);
}
$numerorden=$msj['numerorden'];
$idorden=$msj['idorden'];

$strsql="select d.id_numeracion_llanta,ifnull(d.boleta_provedor,ifnull(a.boleta_provedor_recauche,''))
			FROM
				pre_llantas a,
				pre_llantas_marcar_para d 
			where d.id_numeracion_llanta=a.numeracion 
			  and d.id_marca=1 
			  and id_orden_de_compra is null
			and a.estado=3
			order by d.id_numeracion_llanta";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($numerarecauche = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $numerarecauche = false;
          $numerarecauche_erro = $this->Db->ErrorMsg();
      } 

if ($numerarecauche ===false){
	return array("error"=>"Error #23 crear orden de compra recauche ".$numerarecauche_erro .' '.$strsql);
}
$cdesc='';
$ccant=0;
while (!$numerarecauche->EOF){
	$ccant++;
	$kboleta='';
	if (''<>$numerarecauche->fields[1]){
		$kboleta='B:'.$numerarecauche->fields[1];
	}
	if (''==$cdesc){
		$cdesc.=$numerarecauche->fields[0].' '.$kboleta;
	} else {
		$cdesc.=','.$numerarecauche->fields[0].' '.$kboleta;
	}
	$strsql="update pre_llantas_marcar_para 
	            set id_orden_de_compra=".$idorden."
				where id_numeracion_llanta=".$numerarecauche->fields[0]."
				and id_marca=1 
				and id_orden_de_compra is null";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updmarcapararecauche = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updmarcapararecauche[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updmarcapararecauche = false;
          $updmarcapararecauche_erro = $this->Db->ErrorMsg();
      } 

	if ($updmarcapararecauche ===false){
		return array("error"=>"Error #41 crear orden de compra recauche ".$updmarcapararecauche_erro .' '.$strsql);
	}
	$numerarecauche->MoveNext();
}
$numerarecauche->CLose();
if ($ccant>1){
	$cdesc='Numeraciones:'.$cdesc;
} else {
	$cdesc='Numeracion:'.$cdesc;
}

$cdesc=substr($cdesc,0,254);

$strsql="insert into inv_orden_de_compra_detalle   (compania,division,numero,codigo_articulo,descripcion,cantidad_solicitada,cantidad_recibida,precio_unitario,paga_impuesto,porcentaje_descuento,subtotal,descuento,impuesto,total) values
('$cia',1,'$numerorden',null,'$cdesc',$ccant,0,0,1,0,0,0,0,0)";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insdetaordenrecauche = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insdetaordenrecauche[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insdetaordenrecauche = false;
          $insdetaordenrecauche_erro = $this->Db->ErrorMsg();
      } 

if ($insdetaordenrecauche ===false){
	return array("error"=>"Error #53 crear orden de compra recauche ".$insdetaordenrecauche_erro .' '.$strsql);
}
return array("error"=>"","numerorden"=>$numerorden,"idorden"=>$idorden);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: crearordendecomprarecauche ------*/


/*----- Scriptcase Locale: PHP Method: envia_llanta_a_desecho ------*/

function envia_llanta_a_desecho($la_llanta)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return $this->envia_llanta_a_desecho_lib($la_llanta);
return;
$strsql="update pre_llantas set estado=8,
					fecha_modifica='".date('Y-m-d H:i:s')."',
					usuario_modifica='".$_SESSION['grant']['usr_login']."' 
			where numeracion=".$la_llanta;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $llantadesecho = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $llantadesecho[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $llantadesecho = false;
          $llantadesecho_erro = $this->Db->ErrorMsg();
      } 

if ($llantadesecho ===false){
	return array("error"=>"Error #4 envia_llanta_a_desecho:".$llantadesecho_erro .' '.$strsql);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: envia_llanta_a_desecho ------*/


/*----- Scriptcase Locale: PHP Method: envia_llanta_a_otro_predio ------*/

function envia_llanta_a_otro_predio($j_lallanta)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

$strsql="
    SELECT a.numeracion,a.bodega,ifnull(c.provincia,d.provincia),d.provincia
        FROM pre_llantas a
        LEFT JOIN pre_llantas_bodegas b ON a.bodega=b.id
        LEFT JOIN pre_predio c ON c.codigo=b.predio
        LEFT JOIN pre_predio d ON d.codigo='".$_SESSION['grant']['predio_default']."'
     WHERE a.numeracion='".$j_lallanta."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datallantactual = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datallantactual[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datallantactual = false;
          $datallantactual_erro = $this->Db->ErrorMsg();
      } 

if ($datallantactual ===false){
   return array("error"=>"Error #10 envia_llanta_a_otro_predio:".$datallantactual_erro .' '.$strsql);
}

if (0==count($datallantactual )){
   return array("error"=>"Error #18 envia_llanta_a_otro_predio: Numeracion ".$j_lallanta." no encontrada ");
}

$provincia_llanta=$datallantactual[0][2];
$pronvia_usuario=$datallantactual[0][3];
if ($provincia_llanta<>$pronvia_usuario){
	return array("error"=>"Error #17 El predio donde esta la llanta no es el mismo donde esta el usuario");
}

$otroupdate=",ultimo_usuario_solicita_traslado='".$_SESSION['grant']['usr_login'].
		"',fecha_ultima_solicitud_traslado='".date('Y-m-d H:i:s')."',
		   fecha_modifica='".date('Y-m-d H:i:s')."',usuario_modifica='".$_SESSION['grant']['usr_login']."',chasis=null,vehiculo=null";
$desc_log='Envio llanta No:'.$j_lallanta;

if ('001'==$_SESSION['grant']['predio_default'] or 
	'002'==$_SESSION['grant']['predio_default'] or 
	'003'==$_SESSION['grant']['predio_default']){
	$strsql="update pre_llantas set enviar_a=7".$otroupdate." where numeracion='".$j_lallanta."' limit 1";
	
	$desc_log=$desc_log.' de limon a cartago';
	
}

if ('004'==$_SESSION['grant']['predio_default']){
	$strsql="update pre_llantas set enviar_a=9".$otroupdate." where numeracion='".$j_lallanta."' limit 1";
	$desc_log=$desc_log.' de cartago a limon';
	
}

 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdlallantaenvio = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdlallantaenvio[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdlallantaenvio = false;
          $dataupdlallantaenvio_erro = $this->Db->ErrorMsg();
      } 

if ($dataupdlallantaenvio ===false){
	return array("error"=>"Errir #14.envia_llanta_a_otro_predio:".$dataupdlallantaenvio_erro .' '.$strsql);
}
$msj=$this->agregar_log('envia_llanta_a_otro_predio','llantas',$desc_log);
if ($msj<>''){
	return array("error"=>"Error #52 envia_llanta_a_otro_predio.agregar_log:".$msj);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: envia_llanta_a_otro_predio ------*/


/*----- Scriptcase Locale: PHP Method: envia_llanta_a_otro_predio_transito ------*/

function envia_llanta_a_otro_predio_transito($lacedula, $elnombre, $imp_enviollanta, $ordendecompra, $bodega_destino, $recauchadora)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

$msj=$this->deme_la_bodega_destino_de_llanta($_SESSION['grant']['predio_default']);
if (''<>$msj['error']){
	return array("error"=>'Error #4 envia_llanta_a_otro_predio_transito '.$msj['error']);
} else {
	$la_bodega=$msj['labodeagaact'];
}
$strsql="select numeracion
            from pre_llantas
		  where enviar_a='".$la_bodega."'";
if (''<>$recauchadora and $ordendecompra<>''){
   $strsql="select id_numeracion_llanta
    from pre_llantas_marcar_para
   where id_orden_de_compra=".$ordendecompra;
}
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $contacuantas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $contacuantas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $contacuantas = false;
          $contacuantas_erro = $this->Db->ErrorMsg();
      } 

if($contacuantas ===false){
	return array("error"=>"Error #13 envia_llanta_a_otro_predio_transito:".$contacuantas_erro .' '.$strsql);
}
if (count($contacuantas )==0){
	return array("error"=>"No hay llantas a enviar, probablemente ya se enviaron");
}
if (0==$contacuantas[0][0]){
	return array("error"=>"No hay llantas a enviar, probablemente ya se enviaron");
}
$bode_transito=intval($la_bodega)+1;
if (1==$la_bodega){
	return array("error"=>"La bodega destino no puede ser 1 la_bodega:".$la_bodega);
}
if (0==$la_bodega){
	return array("error"=>"Error #21 envia_llanta_a_otro_predio_transito: provincia no definida del usuario actual");
}
$el_idenca=-9;
if (''==$ordendecompra){
	$ordendecompra='null';
}
if (0<>$bodega_destino){
	$bode_transito=$bodega_destino;
}
    $strsql="insert into pre_llantas_movimientos_encabezado
				(cedula_responsable,nombre_responsable,usuario_envia,fecha_envio,usuario_recibe,fecha_recibe,bodega_origen,bodega_transito,
				id_orden_de_compra) values 
				('".$lacedula."','".$elnombre."','".$_SESSION['grant']['usr_login']."','".date('Y-m-d H:i:s')."',null,null,
				'".$la_bodega."','".$bode_transito."',".$ordendecompra.")";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_encabezadomovllanta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_encabezadomovllanta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_encabezadomovllanta = false;
          $ins_encabezadomovllanta_erro = $this->Db->ErrorMsg();
      } 

	if ($ins_encabezadomovllanta ===false){
		return array("error"=>"Error #28 envia_llanta_a_otro_predio_transito:".$ins_encabezadomovllanta_erro .' '.$strsql);
	}
	$msj=$this->ultimo_id_insert();
	if (''<>$msj['error']){
		return $msj;
	}
	$el_idenca=$msj['el_last_insert_id'];

$strsql="select numeracion
            from pre_llantas
		  where enviar_a='".$la_bodega."'";
if (''<>$recauchadora and $ordendecompra<>''){
   $strsql="select id_numeracion_llanta
    from pre_llantas_marcar_para
   where id_orden_de_compra=".$ordendecompra;
}
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($det_ll_enviar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $det_ll_enviar = false;
          $det_ll_enviar_erro = $this->Db->ErrorMsg();
      } 

$i=0;
while (!$det_ll_enviar->EOF){
	$i++;
	$j_nmeracion=$det_ll_enviar->fields[0];
	$strsql="insert into pre_llantas_movimientos_detalle (id_encabezado,numeracion) values 
	          ('".$el_idenca."','".$j_nmeracion."')";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_det_enll = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_det_enll[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_det_enll = false;
          $ins_det_enll_erro = $this->Db->ErrorMsg();
      } 

   if ($ins_det_enll ===false){
	 return array("error"=>"Error #38 envia_llanta_a_otro_predio_transito:".$ins_det_enll_erro .' '.$strsql);
   }
   $hrecauchadora='';
   if (''<>$recauchadora){
	   $hrecauchadora=",recauchadora='".$recauchadora."'";
   }
	$strsql="update pre_llantas set enviar_a=".$bode_transito.",
	                                fecha_modifica='".date('Y-m-d H:i:s')."',
									usuario_modifica='".$_SESSION['grant']['usr_login']."'".$hrecauchadora." 
							  where numeracion='".$j_nmeracion."' limit 1";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $up_det_enll = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $up_det_enll[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $up_det_enll = false;
          $up_det_enll_erro = $this->Db->ErrorMsg();
      } 

   if ($up_det_enll ===false){
	 return array("error"=>"Error #44 envia_llanta_a_otro_predio_transito:".$up_det_enll_erro .' '.$strsql);
   }
   $det_ll_enviar->MoveNext();
}
$det_ll_enviar->Close();

$strsql="update pre_llantas_movimientos_encabezado set cantidad='".$i."' where id='".$el_idenca."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $up_enca_enll = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $up_enca_enll[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $up_enca_enll = false;
          $up_enca_enll_erro = $this->Db->ErrorMsg();
      } 

if ($up_enca_enll ===false){
 return array("error"=>"Error #44 envia_llanta_a_otro_predio_transito:".$up_enca_enll_erro .' '.$strsql);
}
$_SESSION['el_idmov_encabezado']=$el_idenca;
$_SESSION['imp_enviollanta']=$imp_enviollanta;

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: envia_llanta_a_otro_predio_transito ------*/


/*----- Scriptcase Locale: PHP Method: envia_llanta_a_recauche ------*/

function envia_llanta_a_recauche($la_llanta)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return $this->envia_llanta_a_recauche_lib($la_llanta);

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: envia_llanta_a_recauche ------*/


/*----- Scriptcase Locale: PHP Method: enviar_link_actualizacion_datos_pla ------*/

function enviar_link_actualizacion_datos_pla($id_sc_field_id_periodo_1)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if (intval($id_sc_field_id_periodo_1)==0){
	return array("error"=>"Error en el parametro id_sc_field_id_periodo_1 esta en cero:".$id_sc_field_id_periodo_1);
}
$strsql="SELECT 
      IF(e.prueba_envio_link_actualizacion=1,prueba_celular,b.movil) celular,
      MD5(CONCAT(LPAD(a.id,10,'0'),a.cedula)) claveunica,
	  initcap(IF(''=b.primernombre,'colaborador',b.primernombre)) nombre,
	  b.movil,
	  f.url_actualizacion_datos_planilla,
	  ifnull(i.configuracion_whatsapp,5) configuracion_whatsapp ,
	  d.periodo,d.id,
	  IFNULL(iu.cfg_rwsp,'') cfg_rwsp,
	  IFNULL(iu.cfg_linea,'') cfg_linea,
	  IFNULL(iu.cfg_server,0) cfg_server
     FROM pla_actualizacion_de_datos a,
          gen_persona b,
          pla_actualizacion_enviar d,
          pla_control e,
          pre_control f,
          gen_usuario i 
		  left join v_gen_usuario iu on iu.usuario='".$_SESSION['grant']['usr_login']."'
   WHERE a.periodo=d.periodo
     AND a.id=d.id
     AND a.cedula=b.cedula
     AND i.usuario=f.usuario_envio_comprobante_whatsapp
     AND e.id=1
     AND f.id=1
	 and d.periodo=".$id_sc_field_id_periodo_1;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataparaenviar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataparaenviar = false;
          $dataparaenviar_erro = $this->Db->ErrorMsg();
      } 

if ($dataparaenviar ===false){
	return array("error"=>"Error #12 enviar_link_actualizacion_datos_pla:".$dataparaenviar_erro .' '.$strsql);
}
$errores='';
while (!$dataparaenviar->EOF){
	$nombreemp=$dataparaenviar->fields[2];
	$telefono1=$dataparaenviar->fields[0];
	$url=$dataparaenviar->fields[4];
	$clave=$dataparaenviar->fields[1];
	$configuracion_whatsapp=$dataparaenviar->fields[5];
	$h_periodo=$dataparaenviar->fields[6];
	$h_id=$dataparaenviar->fields[7];
	
	$cfg_linea=$dataparaenviar->fields[9];
	$cfg_server=$dataparaenviar->fields[10];
	
	$texto="Hola ".$nombreemp.", Transportes Grant necesita que actualice su informacion personal, favor ingresar al siguiente link para que proceda";
	$texto.=":".$url.$clave;
		if (0<>$cfg_server){
			$msj=$this->rwspapienviar_mensaje($cfg_server,$cfg_linea,$telefono1,$texto,'');
		} else {
			$msj=$this->enviar_whatsapp_waapi($texto,$telefono1,'','',$configuracion_whatsapp);
		}
		if (''<>$msj['error']){
			$errores.=$msj['error'];
		} else {
			$strsql="delete from pla_actualizacion_enviar where id=".$h_id." and periodo=".$h_periodo;
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrarlamarca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrarlamarca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrarlamarca = false;
          $borrarlamarca_erro = $this->Db->ErrorMsg();
      } 

			if ($borrarlamarca ===false){
				 $errores.=$borrarlamarca_erro ;
			}
		}
	
	
	$dataparaenviar->MoveNext();
}
$dataparaenviar->Close();
return array("error"=>$errores);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: enviar_link_actualizacion_datos_pla ------*/


/*----- Scriptcase Locale: PHP Method: enviarcomprobantesdepago ------*/

function enviarcomprobantesdepago($cid_planilla)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if (isset($_GET['sololink'])){
 $sololink=1;
} else {
  $sololink=0;
}
$m_inicio=date('h:i:s');
$strsql="select distinct cedula from pla_movimientos where id_planilla='".$cid_planilla."'";
$strsql="SELECT DISTINCT a.cedula,a.empresa FROM pla_movimientos a ,
        pla_planilla_enviar_comprobante b
 WHERE a.id_planilla='".$cid_planilla."'
   AND a.cedula=b.cedula
   AND a.empresa=b.empresa
   AND a.id_planilla=b.id_planilla";

 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($adatos_planilla = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $adatos_planilla = false;
          $adatos_planilla_erro = $this->Db->ErrorMsg();
      } 

if ($adatos_planilla ===false){
	return array("error"=>"Error #5.Enviarcomprobantedepago:".$adatos_planilla_erro .' '.$strsql);
}
$i=0;
while (!$adatos_planilla->EOF){
	$i++;
	$c_cedula=$adatos_planilla->fields[0];
	$c_empresa=$adatos_planilla->fields[1];
	$c_pantalla=3;
	if (1==$sololink){
		$kmensaje=$this->enviar_link_al_whatsapp_lib($c_pantalla,$c_cedula,$cid_planilla);
	} else {
		$kmensaje=$this->generar_comprobante_de_pago_lib($c_pantalla,$c_cedula,$cid_planilla);
	}
	if (''<>$kmensaje['error']){
		return $kmensaje;
	} else {
		$strsql="delete from pla_planilla_enviar_comprobante 
		          where cedula='".$c_cedula."'
				    and empresa='".$c_empresa."'
					and id_planilla='".$cid_planilla."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $databorrartmpx = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $databorrartmpx[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $databorrartmpx = false;
          $databorrartmpx_erro = $this->Db->ErrorMsg();
      } 

		if ($databorrartmpx ===false){
			return "Error:#28 enviarcomprobantesdepago.funciones_generales:".$databorrartmpx_erro .' '.$strsql;
		}
	}
    $adatos_planilla->MoveNext();	
}
$adatos_planilla->Close();
$_SESSION['planilla_procesados']="Cantidad de registros procesados:".$i;
$m_final=date('h:i:s');
$_SESSION['mensajeenviados']="Cantidad de registros procesados:".$i.'<br>Inicio:'.$m_inicio.'<br>Finalizo:'.$m_final;
return array("error"=>'',"mensaje"=>$_SESSION['mensajeenviados']);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: enviarcomprobantesdepago ------*/


/*----- Scriptcase Locale: PHP Method: existe_twr ------*/

function existe_twr($boleta, $twr)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select valor,id_boleta
           from pre_chasis_despacho_cualidades_relacion_otros
		 where cualidad='TWR'
		   and valor='".$twr."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $veritwrboleta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $veritwrboleta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $veritwrboleta = false;
          $veritwrboleta_erro = $this->Db->ErrorMsg();
      } 

if ($veritwrboleta ===false){
	return "Error #8 existe_twr ".$veritwrboleta_erro .' '.$strsql;
}
if (count($veritwrboleta )>0){
	if ($veritwrboleta[0][1]<>$boleta){
		return "Error #12 existe_twr TWR ya esta registrado en boleta:".$veritwrboleta[0][1];
	}
}
return "";
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: existe_twr ------*/


/*----- Scriptcase Locale: PHP Method: factor_diesel_x_kilomero ------*/

function factor_diesel_x_kilomero($kilometros, $laboleta)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="
 SELECT factor_diesel_x_kilomero,id,
   ifnull((select litros_diesel from pre_chasis_despacho where id=".$laboleta."),0) dieselactual
  FROM pre_control
  WHERE id=1";
$strsql="
 SELECT a.factor_diesel_x_kilomero,
       a.id,
       IFNULL(b.litros_diesel,0) litros_diesel,
       ifnull(c.kilometros,0),
       c.via,
	   CONCAT('Ruta de:',IFNULL(c.kilometros,-1),'km ',IFNULL(d.descripcion,'')) 
 FROM pre_control a
   LEFT JOIN pre_chasis_despacho b ON b.id=".$laboleta."
   LEFT JOIN pre_rutas_encabezado c ON c.codigo=b.ruta_destino
   LEFT JOIN pre_rutas_encabezado_via d ON d.id=c.via
  WHERE a.id=1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datafactorxdkm = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datafactorxdkm[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datafactorxdkm = false;
          $datafactorxdkm_erro = $this->Db->ErrorMsg();
      } 

if ($datafactorxdkm ===false){
	return array("error"=>"Error #6.factor_diesel_x_kilomero:".$datafactorxdkm_erro .' '.$strsql);
}
if (count($datafactorxdkm )==0){
   return array("error"=>"No existen datos en pre_control");
} else {
   $via=$datafactorxdkm[0][4];
   $khfactor=$datafactorxdkm[0][0];
   if (1==$via){
	   $kfactor=1;
   } else {
	   $kfactor=2;
   }
   $rkilometros=$datafactorxdkm[0][3];
   return array("error"=>"","cmaximo"=>round(($khfactor*$rkilometros*$kfactor)-$datafactorxdkm[0][2],2),
			     "texto"=>$datafactorxdkm[0][5],"litrosmaximos"=>' maximo:'.number_format(round($khfactor*$rkilometros,2)*$kfactor,2));
}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: factor_diesel_x_kilomero ------*/


/*----- Scriptcase Locale: PHP Method: ffisca_totales ------*/

function ffisca_totales($el_id_detalle)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="
 update inv_toma_fisica_detalle a,
(select id_detalle,codigo_articulo,sum(cantidad) cantidad
   from inv_toma_fisica_detalle_auxiliar 
  where id_detalle=$el_id_detalle
  group by id_detalle,codigo_articulo) b
    set a.cantidad=ifnull(b.cantidad,0)
  where a.id=id_detalle 
    and a.codigo_articulo=b.codigo_articulo
    and a.id=$el_id_detalle";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetallettmf = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetallettmf[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetallettmf = false;
          $upddetallettmf_erro = $this->Db->ErrorMsg();
      } 

if ($upddetallettmf ===false){
	return array("error"=>"#13 ffisca_totales error:".$upddetallettmf_erro .' '.$strsql);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: ffisca_totales ------*/


/*----- Scriptcase Locale: PHP Method: formato_html_recupera_clave ------*/

function formato_html_recupera_clave()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return '
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Recuperación de Contraseña</title>
    <style>
        body {
            font-family: '."'Arial'".', sans-serif;
            line-height: 1.6;
            color: #333;
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f9f9f9;
        }
        .container {
            background-color: #ffffff;
            border-radius: 10px;
            padding: 25px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
        }
        .header {
            text-align: center;
            margin-bottom: 20px;
        }
        .logo {
            max-width: 150px;
            margin-bottom: 15px;
        }
        h1 {
            color: #2c3e50;
            font-size: 24px;
            margin-bottom: 10px;
        }
        .password-box {
            background-color: #f0f7ff;
            border: 1px dashed #3498db;
            padding: 15px;
            text-align: center;
            font-size: 18px;
            margin: 20px 0;
            border-radius: 5px;
            word-break: break-all;
        }
        .button-container {
            display: flex;
            gap: 10px;
            justify-content: center;
            margin: 20px 0;
        }
        .button {
            display: inline-block;
            background-color: #3498db;
            color: white !important;
            padding: 12px 25px;
            text-decoration: none;
            border-radius: 5px;
            font-weight: bold;
            text-align: center;
            flex: 1;
            max-width: 200px;
			margin-right: 15px; /* Espacio entre botones */
        }
        .button-secondary {
            background-color: #2ecc71; /* Color diferente para el segundo botón */
			margin-right: 0; /* Elimina margen del segundo botón */
        }
        .footer {
            text-align: center;
            margin-top: 20px;
            font-size: 12px;
            color: #7f8c8d;
        }
        @media (max-width: 480px) {
            .button-container {
                flex-direction: column;
            }
            .button {
                max-width: 100%;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <!-- Reemplaza con tu logo -->
            <img src="https://www.transportesgrant.com/logos/logotg.jpg" alt="Logo" class="logo">
            <h1>Recuperación de Contraseña</h1>
        </div>

        <p>Hola <strong>NombredelUsuario</strong>,</p>
        <p>Hemos generado una nueva contraseña para tu cuenta:<strong>elusuario</strong> en el <strong>Sistema de Transportes Grant</strong>. Por seguridad, debes cambiar dicha clave después de iniciar sesión.</p>

        <div class="password-box">
            Tu nueva contraseña: <strong>lanuevaclave</strong>
        </div>

        <p>Para iniciar sesión, elige una de estas opciones:</p>
        
        <div class="button-container">
            <a href="http://limon.transportesgrant.com" class="button">Iniciar desde internet</a>
            <a href="http://192.168.1.12/grant/app_Login" class="button button-secondary">Iniciar estando en predio</a>
        </div>

        <p>Si no solicitaste este cambio, contacte a soporte al correo: ti@transportesgrant.com</a>.</p>

        <div class="footer">
            <p>© '.date('Y').' Transportes Grant. Todos los derechos reservados.</p>
            <p><a href="https://www.transportesgrant.com">Visita nuestro sitio</a> | <a href="https://transportesgrant.com/politicas.html">Política internas</a></p>
        </div>
    </div>
</body>
</html>
';

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: formato_html_recupera_clave ------*/


/*----- Scriptcase Locale: PHP Method: generar_certificado_desecho ------*/

function generar_certificado_desecho($l_cedula_resp, $l_nombre_resp, $l_placa, $l_imp_enviollanta, $l_cantidad)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="insert into pre_llantas_desechar_encabezado 
                (fecha,usuario_creacion,cantidad,cedula_responsable,nombre_responsable,placa) values
				('".date('Y-m-d H:i:s')."','".$_SESSION['grant']['usr_login']."','".$l_cantidad."','".$l_cedula_resp."',
				 '".$l_nombre_resp."','".$l_placa."')";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsdeenc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsdeenc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsdeenc = false;
          $datainsdeenc_erro = $this->Db->ErrorMsg();
      } 

if ($datainsdeenc ===false){
	return array("error"=>"Error #7 generar_certificado_desecho:".$datainsdeenc_erro .' '.$strsql);
}
$msj=$this->ultimo_id_insert();
if (''<>$msj['error']){
	return $msj;
}
$el_idenca=$msj['el_last_insert_id'];

$strsql="
    INSERT INTO pre_llantas_desechar_detalle (id_encabezado,numeracion)
    SELECT ".$el_idenca.",numeracion 
      FROM pre_llantas
     WHERE estado=8  and marcar_para_desecho=1 ";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insdetadesc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insdetadesc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insdetadesc = false;
          $insdetadesc_erro = $this->Db->ErrorMsg();
      } 

if ($insdetadesc ===false){
	return array("error"=>"Error #21 generar_certificado_desecho:".$insdetadesc_erro .' '.$strsql);
}
$strsql="update pre_llantas set estado=6,
	             fecha_modifica='".date('Y-m-d H:i:s')."',
			    usuario_modifica='".$_SESSION['grant']['usr_login']."' 
			where estado=8 and marcar_para_desecho=1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insdetadescestado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insdetadescestado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insdetadescestado = false;
          $insdetadescestado_erro = $this->Db->ErrorMsg();
      } 

if ($insdetadescestado ===false){
	return array("error"=>"Error #29 generar_certificado_desecho:".$insdetadescestado_erro .' '.$strsql);
}

$_SESSION['el_idmov_encabezado']=$el_idenca;
$_SESSION['imp_enviollanta']=$l_imp_enviollanta;
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: generar_certificado_desecho ------*/


/*----- Scriptcase Locale: PHP Method: importarxlsparallantas ------*/

function importarxlsparallantas($thisel_archivo_ul_name)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
try {
	$fileXlsX = explode('.',$thisel_archivo_ul_name);
	$archivo = '../_lib/tmp/'.$thisel_archivo_ul_name;
	$archivo=$this->Ini->root . $this->Ini->path_imag_temp.'/'.$thisel_archivo_ul_name;
	set_include_path(get_include_path() . PATH_SEPARATOR . $this->Ini->path_third . '/phpexcel/');
	require_once $this->Ini->path_third . '/phpexcel/PHPExcel.php';
	require_once $this->Ini->path_third . '/phpexcel/PHPExcel/IOFactory.php';

	$inputFileType = PHPExcel_IOFactory::identify($archivo);
	$objReader = PHPExcel_IOFactory::createReader($inputFileType);
	$objPHPExcel = $objReader->load($archivo);
	$sheet = $objPHPExcel->getSheet(0); 
	$highestRow = $sheet->getHighestRow(); 
	$highestColumn = $sheet->getHighestColumn();

} catch (Exception $e) {
   return array("error"=>'Error #17 importarxlsparallantas: '. $e->getMessage());
}
$lafila=0;
$cia='';
$div='';
$idmarca='';
$idmedida='';
$idtipo='';
$ubicacion='';
$estado='';
$bodega='';
$profundidad='';
$tf=0;
for ($fila = 0; $fila <= $highestRow; $fila++){
	$tf++;
	$a_numeracion=$sheet->getCell("A".$fila);
	if (''==$a_numeracion){
		$a_numeracion='0';
	}
	if (floatval($a_numeracion)<>0){
		$lafila++;
	    $cia=$sheet->getCell("B".$fila);
		$div=$sheet->getCell("C".$fila);
		$idmarca=$sheet->getCell("D".$fila);
		$idmedida=$sheet->getCell("E".$fila);
		$idtipo=$sheet->getCell("F".$fila);
		$ubicacion=$sheet->getCell("G".$fila);
		$estado=$sheet->getCell("H".$fila);
		$bodega=$sheet->getCell("I".$fila);
		$profundidad=$sheet->getCell("J".$fila);
		$msj.=' #'.$fila.' Numeracion:'.floatval($a_numeracion).' '.gettype($a_numeracion).' ['.$a_numeracion.']'.
		' Cia:'.$cia.
		' div:'.$div.
		' idmarca:'.$idmarca.
		' idmedida:'.$idmedida.
		' idtipo:'.$idtipo.
		' ubicacion:'.$ubicacion.
		' estado:'.$estado.
		' bodega:'.$bodega.
		' profundidad:'.$profundidad;
	}
}
if ($lafila<>0){
$msj.=' cantidad de registros leidos:'.$lafila.' de un total de :'.$tf;
   return array('error'=>"","cantidad"=>$lafila,"mensaje"=>$msj);
} else {
   return array("error"=>'No hay informacion en el archivo');
}

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: importarxlsparallantas ------*/


/*----- Scriptcase Locale: PHP Method: imprimeboletataller ------*/

function imprimeboletataller()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select id
          from taller_orden_trabajo_encabezado
		  where md5(concaT('frzkaqu2',id))='".$_GET['imprimeboletataller']."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataorden = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataorden[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataorden = false;
          $dataorden_erro = $this->Db->ErrorMsg();
      } 

if ($dataorden ===false){
	echo '<h1>Error</h1>'.$dataorden_erro .' '.str_replace("frzkaqu2","",$strsql);
	return;
}
if (count($dataorden )==0){
	echo '<h1>Error</h1>No existe el numero de orden';
	return;
}
$id_orden=$dataorden[0][0];

$this->imprimir_taller_orden_trabajo($id_orden);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: imprimeboletataller ------*/


/*----- Scriptcase Locale: PHP Method: incluir_detalle_fisico ------*/

function incluir_detalle_fisico($id_toma_fisica, $el_codigo, $la_cantidad)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if ('striing'==gettype($la_cantidad)){
	$la_cantidad=0;
}
	
if ($la_cantidad==0){ 
	return array("error"=>'',"procesado"=>0);
}

$strsql="delete from inv_toma_fisica_detalle 
          where id_encabezado='".$id_toma_fisica."' and codigo_articulo='".$el_codigo."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deleteprimero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deleteprimero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deleteprimero = false;
          $deleteprimero_erro = $this->Db->ErrorMsg();
      } 

if ($deleteprimero ===false){
	return array("error"=>"Error:".$deleteprimero_erro .' '.$strsql,"procesado"=>0);
}
$strsql="insert into inv_toma_fisica_detalle (id_encabezado,codigo_articulo,cantidad) values 
   ('".$id_toma_fisica."','".$el_codigo."','".$la_cantidad."')";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsertfisico = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsertfisico[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsertfisico = false;
          $datainsertfisico_erro = $this->Db->ErrorMsg();
      } 

if ($datainsertfisico ===false){
	return array("error"=>"Error:".$datainsertfisico_erro .' '.$strsql,"procesado"=>0);
}

return array("error"=>$strsql,"procesado"=>1);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: incluir_detalle_fisico ------*/


/*----- Scriptcase Locale: PHP Method: inv_aplicar_costos ------*/

function inv_aplicar_costos($c_bodega, $c_codigo)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return $this->inv_aplicar_costos_lib($c_bodega,$c_codigo);
return;

$strsql="update inv_existencias set entradas=0,
		entradas_costo=0,
		salidas=0,
		salidas_costo=0,
		otros=0,
		otros_costo=0,
		existencia=0,
		existencia_costo=0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $aplcero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $aplcero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $aplcero = false;
          $aplcero_erro = $this->Db->ErrorMsg();
      } 

if ($aplcero ===false){
	return array("error"=>"Error inv_aplicar_costos.#11 ".$aplcero_erro .' '.$strsql);
}
$strsql="UPDATE inv_existencias a
 LEFT JOIN (SELECT b.compania,
		b.division,
		b.bodega,
		a.codigo_articulo,
		SUM(a.cantidad_a_inventario) entradas,
		SUM(a.subtotal_colones) entradas_costo
  FROM inv_entradas_detalle a,
       inv_entradas_encabezado b,
       inv_control_companias c
  WHERE a.id_encabezado=b.id
    AND b.compania=c.compania
    AND b.mes=c.mes
    AND b.ano=c.ano
    AND b.estado=2
    GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
 SET a.entradas=IFNULL(b.entradas,0),
     a.entradas_costo=IFNULL(b.entradas_costo,0)
";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updentradas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updentradas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updentradas = false;
          $updentradas_erro = $this->Db->ErrorMsg();
      } 

if ($updentradas ===false){
	return array("error"=>"Error inv_aplicar_costos.#33 ".$updentradas_erro .' '.$strsql);
}


$strsql="UPDATE inv_existencias a
 LEFT JOIN (SELECT b.compania,
		b.division,
		b.bodega,
		a.codigo_articulo,
		SUM(a.cantidad_salida) salidas,
		SUM(a.total) salidas_costo
  FROM inv_salidas_detalle a,
       inv_salidas_encabezado b,
       inv_control_companias c
  WHERE a.id_encabezado=b.id
    AND b.compania=c.compania
    AND b.mes=c.mes
    AND b.ano=c.ano
    AND b.estado=2
	and b.tipo_documento in (23,24)
    GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
 SET a.entradas=a.entradas+IFNULL(b.salidas,0),
     a.entradas_costo=a.entradas_costo+IFNULL(b.salidas_costo,0)
";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updentradas_sal = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updentradas_sal[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updentradas_sal = false;
          $updentradas_sal_erro = $this->Db->ErrorMsg();
      } 

if ($updentradas_sal ===false){
	return array("error"=>"Error inv_aplicar_costos.#33 ".$updentradas_sal_erro .' '.$strsql);
}
$strsql="UPDATE inv_existencias SET costo_promedio=ROUND((inv_inicial_costo+entradas_costo)/(inv_inicial+entradas),2) 
          WHERE (inv_inicial+entradas)<>0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updcostoprom = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updcostoprom[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updcostoprom = false;
          $updcostoprom_erro = $this->Db->ErrorMsg();
      } 

if ($updcostoprom ===false){
	return array("error"=>"Error inv_aplicar_costos.#39 ".$updcostoprom_erro .' '.$strsql);
}
$strsql="UPDATE inv_salidas_detalle a,
       inv_salidas_encabezado b,
       inv_control_companias c
SET   precio_unitario=0,total=0
  WHERE a.id_encabezado=b.id
    AND b.compania=c.compania
    AND b.mes=c.mes
    AND b.ano=c.ano
	and b.tipo_documento not in (23,24)
    AND b.estado=2";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetasalcero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetasalcero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetasalcero = false;
          $upddetasalcero_erro = $this->Db->ErrorMsg();
      } 

if ($upddetasalcero ===false){
	return array("error"=>"Error inv_aplicar_costos.#52 ".$upddetasalcero_erro .' '.$strsql);
}

$strsql="UPDATE inv_salidas_detalle a,
       inv_salidas_encabezado b,
       inv_control_companias c,
	   inv_existencias d
SET   precio_unitario=d.costo_promedio,total=ROUND(cantidad_salida*d.costo_promedio,2)
  WHERE a.id_encabezado=b.id
    AND b.compania=c.compania
    AND b.mes=c.mes
    AND b.ano=c.ano
    AND b.estado=2
	AND b.compania=d.compania
	AND b.division=d.division
	AND b.bodega=d.bodega
	and b.tipo_documento not in (23,24)
	AND d.codigo_articulo=a.codigo_articulo";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetasalcp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetasalcp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetasalcp = false;
          $upddetasalcp_erro = $this->Db->ErrorMsg();
      } 

if ($upddetasalcp ===false){
	return array("error"=>"Error inv_aplicar_costos.#52 ".$upddetasalcp_erro .' '.$strsql);
}


$strsql="UPDATE inv_existencias a
 LEFT JOIN (SELECT b.compania,
		b.division,
		b.bodega,
		a.codigo_articulo,
		SUM(a.cantidad_salida) salidas,
		SUM(a.total) salidas_costo
  FROM inv_salidas_detalle a,
       inv_salidas_encabezado b,
       inv_control_companias c
  WHERE a.id_encabezado=b.id
    AND b.compania=c.compania
    AND b.mes=c.mes
    AND b.ano=c.ano
	and b.tipo_documento not in (23,24)
    AND b.estado=2
    GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
 SET a.salidas=IFNULL(b.salidas,0),
     a.salidas_costo=IFNULL(b.salidas_costo,0)
";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updsalidas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updsalidas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updsalidas = false;
          $updsalidas_erro = $this->Db->ErrorMsg();
      } 

if ($updsalidas ===false){
	return array("error"=>"Error inv_aplicar_costos.#33 ".$updsalidas_erro .' '.$strsql);
}




$strsql="update inv_existencias set
               existencia=(inv_inicial      +entradas      +salidas      +otros),
		 existencia_costo=(inv_inicial_costo+entradas_costo+salidas_costo+otros_costo)";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_inv_existe = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_inv_existe[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_inv_existe = false;
          $upd_inv_existe_erro = $this->Db->ErrorMsg();
      } 

if ($upd_inv_existe ===false){
	return array("error"=>"Error inv_aplicar_costos.#78 ".$upd_inv_existe_erro .' '.$strsql);
}
$strsql="  UPDATE inv_salidas_encabezado a 
  LEFT JOIN (
  SELECT id_encabezado,
         SUM(cantidad_salida) cantidad,
	SUM(total) total
  FROM inv_salidas_detalle
  GROUP BY id_encabezado) b ON a.id=b.id_encabezado,
  inv_control_companias c
    SET a.total_costo=IFNULL(b.total,0)
  WHERE a.id=b.id_encabezado
   AND a.compania=c.compania
    AND a.mes=c.mes
    AND a.ano=c.ano";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_inv_salidasenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_inv_salidasenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_inv_salidasenca = false;
          $upd_inv_salidasenca_erro = $this->Db->ErrorMsg();
      } 

if ($upd_inv_salidasenca ===false){
	return array("error"=>"Error inv_aplicar_costos.#78 ".$upd_inv_salidasenca_erro .' '.$strsql);
}

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_aplicar_costos ------*/


/*----- Scriptcase Locale: PHP Method: inv_aplicar_costos_asientos ------*/

function inv_aplicar_costos_asientos($c_bodega, $c_codigo)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return $this->inv_aplicar_costos_asientos_lib($c_bodega,$c_codigo);
return;

$strsql="SELECT id,SUM(a.total_cantidad) total_cantidad,SUM(a.total_costo) total_costo,numeroasiento FROM (
  SELECT a.id,SUM(ABS(a.total_cantidad)) total_cantidad,SUM(ABS(a.total_costo)) total_costo,numeroasiento numeroasiento
  FROM inv_salidas_encabezado a,
     inv_control_companias c
WHERE a.compania=c.compania
  AND a.mes=c.mes
  AND a.ano=c.ano
  AND a.estado=2
GROUP BY a.id,numeroasiento
UNION ALL
  SELECT id_encabezado,SUM(-1*ABS(cantidad_salida)) cantidad,
         SUM(-1*ABS(total)) total,b.numeroasiento 
   FROM inv_salidas_detalle a,
        inv_salidas_encabezado b,
     inv_control_companias c
WHERE b.compania=c.compania
  AND b.mes=c.mes
  AND b.ano=c.ano
   AND b.id=a.id_encabezado
   AND b.estado=2
   GROUP BY id_encabezado,b.numeroasiento 
   
   UNION ALL
   
  SELECT id,SUM(ABS(0)) total_cantidad,SUM(ABS(a.sub_total_colones)) total_costo,numeroasiento numeroasiento
  FROM inv_entradas_encabezado a,
     inv_control_companias c
WHERE a.compania=c.compania
  AND a.mes=c.mes
  AND a.ano=c.ano
  AND a.estado=2
GROUP BY a.id,numeroasiento
UNION ALL
  SELECT id_encabezado,SUM(-1*ABS(0)) cantidad,
         SUM(-1*ABS(a.subtotal_colones)) total,numeroasiento referencia
   FROM inv_entradas_detalle a,
        inv_entradas_encabezado b,
     inv_control_companias c
WHERE b.compania=c.compania
  AND b.mes=c.mes
  AND b.ano=c.ano
  AND b.estado=2
   AND b.id=a.id_encabezado
   GROUP BY id_encabezado,numeroasiento
   ) a
   GROUP BY id,numeroasiento
   HAVING SUM(a.total_cantidad)<>0 OR SUM(a.total_costo)<>0
   
   UNION ALL
   
   SELECT id,0,SUM(total) ,numeroasiento FROM (
    SELECT id,-1*ABS(total_costo) total,a.numeroasiento
      FROM inv_salidas_encabezado a,
     inv_control_companias c
WHERE a.compania=c.compania
  AND a.mes=c.mes
  AND a.ano=c.ano
  AND a.estado=2
    UNION ALL
    SELECT b.id,SUM(debitos_local),a.numeroasiento
      FROM con_asientos_detalle a,
          inv_salidas_encabezado b,
          inv_control_companias c
     WHERE a.numeroasiento=b.numeroasiento
  AND b.compania=c.compania
  AND b.mes=c.mes
  AND b.ano=c.ano
  AND b.estado=2
  AND a.compania=b.compania
     GROUP BY b.id,a.numeroasiento) a
     GROUP BY a.id
	 HAVING SUM(total)<>0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($data_asientosx = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_asientosx = false;
          $data_asientosx_erro = $this->Db->ErrorMsg();
      } 

if ($data_asientosx ===false){
	return array("error"=>"Error inv_aplicar_costos_asientos.#9 ".$data_asientosx_erro .' '.$strsql);
}
while (!$data_asientosx->EOF){
    $elid=$data_asientosx->fields[0];
	$elasiento=$data_asientosx->fields[3];
	$this->generar_asiento_de_nuevo_ib($elid, $elasiento);
	$data_asientosx->MoveNext();
}
$data_asientosx->Close();
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_aplicar_costos_asientos ------*/


/*----- Scriptcase Locale: PHP Method: pre_movimientocontenedor_calcule_ruta ------*/

function pre_movimientocontenedor_calcule_ruta($el_id)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$el_id=str_replace(".","",$el_id);
$el_id=str_replace(",","",$el_id);

$strsql="
SELECT IF((`pmt`.`ruta_automatica` = 0),
      new.ruta_destino,
   IF(((('COS1' = `cli`.`codigo`) OR ('0006' = `cli`.`codigo`)) AND (`ad`.`localizacion` = 2) AND (new.Fk_tipo_movimiento = '014')),'',CONCAT(IF(((('COS1' = `cli`.`codigo`) OR ('0006' = `cli`.`codigo`)) AND (`ad`.`localizacion` = 2) AND (new.Fk_tipo_movimiento <> '014')),`pt`.`letra_ruta_bodega`,`pt`.`letra_ruta`),IF(ISNULL(`cli`.`letra_ruta`),' ',`cli`.`letra_ruta`),
(CASE WHEN (1 = IF(ISNULL(`pe`.`esdelacasa`),0,IF((1 = `pe`.`esdelacasa`),0,1))) THEN 'P' ELSE 'C' END)))) ruta,
IF(`pmt`.`ruta_automatica` = 0,new.destino,pt.codigo_almacen) destino
  -- INTO rutacal,eldestino
  FROM pre_movimientocontenedor NEW
  LEFT JOIN `pre_chasis` `cha` ON new.Fk_chasis = `cha`.`codigo`
  LEFT JOIN `pre_viaje` `bc` ON new.Fk_Viaje = `bc`.`codViaje` AND '001' = `bc`.`FkTipoProceso`
  LEFT JOIN `gen_clientes` `cli` ON `bc`.`naviera` = `cli`.`codigo`
  LEFT JOIN `pre_movimiento` `pmt` ON `pmt`.`codigo` = new.Fk_tipo_movimiento
  LEFT JOIN `pre_puerto` `pt` ON `bc`.`Fk_puerto` = `pt`.`codigo`
  LEFT JOIN `pre_asignaciondetalle` `ad` ON `ad`.`siglas` = new.Fk_siglas_contenedor AND `ad`.`contenedor` = new.Fk_numero_contenedor AND `ad`.`viaje` =  new.Fk_Viaje
  LEFT JOIN `pre_propietario_equipo` `pe` ON cha.Fk_codigo_pre_propietario_equipo = pe.codigo
WHERE new.Fk_chasis = `cha`.`codigo` 
  AND new.id=".$el_id;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacalculoruta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacalculoruta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacalculoruta = false;
          $datacalculoruta_erro = $this->Db->ErrorMsg();
      } 

if ($datacalculoruta ===false){
	return array("error"=>"Error: ".$datacalculoruta_erro .' '.$strsql);
}
if (count($datacalculoruta )==0){
	return array("error"=>"No hay resultado en la consulta id:".$el_id);
}
return array("error"=>"","rutacal"=>$datacalculoruta[0][0],"eldestino"=>$datacalculoruta[0][1]);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: pre_movimientocontenedor_calcule_ruta ------*/


/*----- Scriptcase Locale: PHP Method: prefactura_vereltotal ------*/

function prefactura_vereltotal()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if (!isset($_SESSION['sqlprefacturacalculoiva'])){
	return array("error"=>"Error en la variable de ambiente:sqlprefacturacalculoiva");
}
$strsql="SELECT 
   SUM(monto+auxiliar) subtotal,count(*) cantidad,
   sum(if(1=paga_iva,(monto+auxiliar)*13/100,0)) iva,
   sum(if(1=paga_iva,(monto+auxiliar)*13/100,0)+(monto+auxiliar)) total FROM (".$_SESSION['sqlprefacturacalculoiva'].") a
      WHERE prefacturar='Si' ";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $gettotaltmp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $gettotaltmp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $gettotaltmp = false;
          $gettotaltmp_erro = $this->Db->ErrorMsg();
      } 

if ($gettotaltmp ===false){
	return array("error"=>"Error #10 prefactura_vereltotal:".$gettotaltmp_erro .' '.$strsql);
}
if (count($gettotaltmp )==0){
	return array("error"=>'',"monto"=>"<h2>No hay operaciones seleccionadas</h2>");
}

			   $subtotal=$gettotaltmp[0][0];	
			   $iva=$gettotaltmp[0][2];	
			   $total=$gettotaltmp[0][3];	
				$datos=array("error"=>"",
							 "monto"=>"<h2>Cantidad de movimientos:".$gettotaltmp[0][1]."</h2>
							    <h2>Sub-Total:".number_format($subtotal,2)."</h2>
							    <h2>Iva      :".number_format($iva,2)."</h2>
							    <h2>Total    :".number_format($total,2).'</h2>'
							);
return $datos;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: prefactura_vereltotal ------*/


/*----- Scriptcase Locale: PHP Method: puedo_aplicar_fisico ------*/

function puedo_aplicar_fisico($elidtomafisca)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select a.compania,b.mes,b.ano
  from inv_toma_fisica_encabezado a,
    inv_control_companias b
 where a.compania=b.compania
   and a.id=".$elidtomafisca;
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datavertmc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datavertmc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datavertmc = false;
          $datavertmc_erro = $this->Db->ErrorMsg();
      } 

if ($datavertmc ===false){
	return array("error"=>"#8 puedo_aplicar_fisocp.Error:".$datavertmc_erro .' '.$strsql);
}
if (count($datavertmc )==0){
	return array("error"=>"#8 puedo_aplicar_fisocp.Error: No existe control del periodo");
}
$l_cia=$datavertmc[0][0];
$l_mes=$datavertmc[0][1];
$l_ano=$datavertmc[0][2];
$msj=$this->verificar_trasacciones_pendientes_lib($l_cia,$l_mes,$l_ano);
return array("error"=>$msj);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: puedo_aplicar_fisico ------*/


/*----- Scriptcase Locale: PHP Method: recepcion_llantas ------*/

function recepcion_llantas($id_bodega, $id_encabezado)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="update pre_llantas_movimientos_encabezado set 
            usuario_recibe='".$_SESSION['grant']['usr_login']."',
			        fecha_recibe='".date('Y-m-d H:i:s')."'
           where id='".$id_encabezado."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdenca = false;
          $dataupdenca_erro = $this->Db->ErrorMsg();
      } 

if ($dataudenca ===false){
	return array("error"=>"Error #7 recepcion_llantas:".$dataupdenca_erro .' '.$strsql);
}
	
$strsql="update pre_llantas a,
                pre_llantas_movimientos_detalle b
			 set a.bodega='".$id_bodega."',a.enviar_a=null,
			  usuario_modifica='".$_SESSION['grant']['usr_login']."',
			        fecha_modifica='".date('Y-m-d H:i:s')."',ubicacion=3
		where a.numeracion=b.numeracion
		  and b.id_encabezado='".$id_encabezado."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupllantasdeta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupllantasdeta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupllantasdeta = false;
          $dataupllantasdeta_erro = $this->Db->ErrorMsg();
      } 

if ($dataupllantasdeta ===false){
	return array("error"=>"Error #16 recepcion_llantas:".$dataupllantasdeta_erro .' '.$strsql);
}

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: recepcion_llantas ------*/


/*----- Scriptcase Locale: PHP Method: recibir_llantas_de_recauche ------*/

function recibir_llantas_de_recauche($idbodega, $idordendecompra, $id_movimiento)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
return $this->recibir_llantas_de_recauche_lib($idbodega, $idordendecompra, $id_movimiento);


$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: recibir_llantas_de_recauche ------*/


/*----- Scriptcase Locale: PHP Method: recuperarclave ------*/

function recuperarclave()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$usuario=$_GET['usuario'];
$elcorreo=$_GET['elcorreo'];
if (!isset($_GET['elsistema'])){
	return array("error"=>"Falta parametro del sistema");
}
$elsistema=$_GET['elsistema'];

$strsql="select a.activo,initcap(b.nombre) from gen_usuario a,gen_persona b where a.fk_gen_persona=b.cedula and a.usuario='".$usuario."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $estaactivoelusr = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $estaactivoelusr[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $estaactivoelusr = false;
          $estaactivoelusr_erro = $this->Db->ErrorMsg();
      } 

if ($estaactivoelusr ===false){
	return array("error"=>"Error:".$estaactivoelusr_erro .' '.$strsql);
}

if (count($estaactivoelusr )==0){
	return array("error"=>"Error: Usuario ".$usuario." no existe");
}

if ('N'==$estaactivoelusr[0][0]){
	return array("error"=>"Error el usuario esta <strong>INACTIVO</strong> en el sistema comuniquese con TI");
}
$nombreusuario=$estaactivoelusr[0][1];
$pswd = $this->global_act_code(5,'NO');
if (1==$elsistema){
  $sql  = "UPDATE gen_usuario SET PASSWORD = md5('". ($pswd) ."'),obligar_cambio_clave=2 WHERE usuario = '". $usuario ."'";
} else {
  $sql  = "UPDATE pre_choferp SET clave = md5('". ($pswd) ."'),obligar_cambio_clave=2 WHERE replace(fkpersona,'-','') = replace('". $usuario ."','-','')";	
}
 
      $nm_select = $sql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacambiopwd = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacambiopwd[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacambiopwd = false;
          $datacambiopwd_erro = $this->Db->ErrorMsg();
      } 

if ($datacambiopwd ===false){
  return array("error"=>"Error:".$datacambiopwd_erro .' '.$sql);
} else {
  $mensaje="El usuario ".$usuario." solicito recuperacion de cuenta, pero no se puede ver cual clave tenia, por lo cual se genero una clave nueva la cual es:<h1>".$pswd.'</h1>';
	$mensaje=$this->formato_html_recupera_clave();
	$mensaje=str_replace('lanuevaclave',$pswd,$mensaje);
	$mensaje=str_replace('elusuario',$usuario,$mensaje);
	$mensaje=str_replace('NombredelUsuario',$nombreusuario,$mensaje);
  $msj=$this->global_send_mail_message($mensaje,$elcorreo,'Recuperacion clave acceso a sistema de Grant');
  return array("error"=>$msj);
}

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: recuperarclave ------*/


/*----- Scriptcase Locale: PHP Method: rotar_llanta ------*/

function rotar_llanta()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$llanta1=$_GET['llanta1'];
$ub_llanta1=str_replace("uu_b","",$_GET['ub_llanta1']);
$llanta2=$_GET['llanta2'];
$ub_llanta2=str_replace("uu_b","",$_GET['ub_llanta2']);

$msj=$this->rotar_llanta_ubicar($llanta1,$ub_llanta1);
if (''<>$msj['error']){
	return $msj;
}
$msj=$this->rotar_llanta_ubicar($llanta2,$ub_llanta2);
if (''<>$msj['error']){
	return $msj;
}

return array("error"=>"");

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rotar_llanta ------*/


/*----- Scriptcase Locale: PHP Method: rotar_llanta_ubicar ------*/

function rotar_llanta_ubicar($j_numeracion, $j_ubicacion)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="update pre_llantas set numero_ubicacion=".$j_ubicacion.",
		        usuario_modifica='".$_SESSION['grant']['usr_login']."',
				fecha_modifica='".date('Y-m-d H:i:s')."'
			where numeracion='".$j_numeracion."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updubllantarotar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updubllantarotar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updubllantarotar = false;
          $updubllantarotar_erro = $this->Db->ErrorMsg();
      } 

if ($updubllantarotar ===false){
	return array("error"=>"Error #7 funciones_generales.ubicar_llanta:".$updubllantarotar_erro .' '.$strsql);
}
return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rotar_llanta_ubicar ------*/


/*----- Scriptcase Locale: PHP Method: ruta_a_activar ------*/

function ruta_a_activar($ruta_a_activar, $cliente_a_activar)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="update pre_rutas_nuevas set estado=1
            where cliente='".$cliente_a_activar."'
			  and codigo='".$ruta_a_activar."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdateruta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdateruta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdateruta = false;
          $dataupdateruta_erro = $this->Db->ErrorMsg();
      } 

if ($dataupdateruta ===false){
   return array("error"=>"Error:".$dataupdateruta_erro .' '.$strsql);	
}
return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: ruta_a_activar ------*/


/*----- Scriptcase Locale: PHP Method: tfisca_auxiliar_agregar ------*/

function tfisca_auxiliar_agregar()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$cantidad            =$_GET['cantidad'];
$codigo              =$_GET['codigo'];
$el_id               =$_GET['el_id'];
$el_id_detalle       =$_GET['el_id_detalle'];
$id_ubicacion_alterna=$_GET['id_ubicacion_alterna'];
$strsql="insert into inv_toma_fisica_detalle_auxiliar 
				(id_detalle,id_ubicacion_alterna,codigo_articulo,cantidad,
				usuario_crea,fecha_creacion,usuario_modifica,fecha_modificacion) values 
				('$el_id_detalle','$id_ubicacion_alterna','$codigo','$cantidad',
				'".$_SESSION['grant']['usr_login']."','".date('Y-m-d H:i:s')."',null,null)";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $instmauxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $instmauxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $instmauxiliar = false;
          $instmauxiliar_erro = $this->Db->ErrorMsg();
      } 

if ($instmauxiliar ===false){
	return array("error"=>"#13 tfisica_auxiliar_agregar Error:".$instmauxiliar_erro .' '.$strsql);
}
$datos=$this->ffisca_totales($el_id_detalle);
if (''<>$datos['error']){
	return $datos;
}
$strsql="select id_encabezado 
           from inv_toma_fisica_detalle
		  where id=$el_id_detalle";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataselecenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataselecenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataselecenca = false;
          $dataselecenca_erro = $this->Db->ErrorMsg();
      } 

if ($dataselecenca ===false){
	return array("error"=>"#24 tfisca_auxiliar_agregar error:".$dataselecenca_erro .' '.$strsql);
}
if (count($dataselecenca )==0){
	return array("error"=>"#27 tfisca_auxiliar_agregar error no se encuenta el id ".$el_id_detalle);
}
$el_id_encabezado=$dataselecenca[0][0];
$msj=$this->inv_act_inventario_toma_fisica($el_id_encabezado);
return array("error"=>$msj);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: tfisca_auxiliar_agregar ------*/


/*----- Scriptcase Locale: PHP Method: tfisca_auxiliar_eliminar ------*/

function tfisca_auxiliar_eliminar()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$cantidad            =$_GET['cantidad'];
$codigo              =$_GET['codigo'];
$el_id               =$_GET['el_id'];
$el_id_detalle       =$_GET['el_id_detalle'];
$id_ubicacion_alterna=$_GET['id_ubicacion_alterna'];

$strsql="update inv_toma_fisica_detalle_auxiliar set cantidad=0
		  WHERE id='".$el_id."'
            AND id_detalle='".$el_id_detalle."'
            AND codigo_articulo='".$codigo."' ";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $modemauxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $modemauxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $modemauxiliar = false;
          $modemauxiliar_erro = $this->Db->ErrorMsg();
      } 

if ($modemauxiliar ===false){
	return array("error"=>"#12 tfisica_auxiliar_modificar Error:".$modemauxiliar_erro .' '.$strsql);
}
$datos=$this->ffisca_totales($el_id_detalle);
if (''<>$datos['error']){
	return $datos;
}

$strsql="delete from inv_toma_fisica_detalle_auxiliar 
		  WHERE id='".$el_id."'
            AND id_detalle='".$el_id_detalle."'
            AND codigo_articulo='".$codigo."' limit 1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $delmauxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $delmauxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $delmauxiliar = false;
          $delmauxiliar_erro = $this->Db->ErrorMsg();
      } 

if ($delmauxiliar ===false){
	return array("error"=>"#12 tfisica_auxiliar_eliminar Error:".$delmauxiliar_erro .' '.$strsql);
}

$strsql="select id_encabezado 
           from inv_toma_fisica_detalle
		  where id=$el_id_detalle";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataselecenca_del = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataselecenca_del[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataselecenca_del = false;
          $dataselecenca_del_erro = $this->Db->ErrorMsg();
      } 

if ($dataselecenca_del ===false){
	return array("error"=>"#23 tfisca_auxiliar_eliminar error:".$dataselecenca_del_erro .' '.$strsql);
}
if (count($dataselecenca_del )==0){
	return array("error"=>"#26 tfisca_auxiliar_eliminar error no se encuenta el id ".$el_id_detalle);
}
$el_id_encabezado=$dataselecenca_del[0][0];
$msj=$this->inv_act_inventario_toma_fisica($el_id_encabezado);
return array("error"=>$msj);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: tfisca_auxiliar_eliminar ------*/


/*----- Scriptcase Locale: PHP Method: tfisca_auxiliar_modificar ------*/

function tfisca_auxiliar_modificar()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$cantidad            =$_GET['cantidad'];
$codigo              =$_GET['codigo'];
$el_id               =$_GET['el_id'];
$el_id_detalle       =$_GET['el_id_detalle'];
$id_ubicacion_alterna=$_GET['id_ubicacion_alterna'];
$strsql="update inv_toma_fisica_detalle_auxiliar set cantidad=$cantidad,id_ubicacion_alterna=$id_ubicacion_alterna,
               usuario_modifica='".$_SESSION['grant']['usr_login']."',
			   fecha_modificacion='".date('Y-m-d H:i:s')."'
		  WHERE id='".$el_id."'
            AND id_detalle='".$el_id_detalle."'
            AND codigo_articulo='".$codigo."' ";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $modmauxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $modmauxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $modmauxiliar = false;
          $modmauxiliar_erro = $this->Db->ErrorMsg();
      } 

if ($modmauxiliar ===false){
	return array("error"=>"#12 tfisica_auxiliar_modificar Error:".$modmauxiliar_erro .' '.$strsql);
}
$datos=$this->ffisca_totales($el_id_detalle);
if (''<>$datos['error']){
	return $datos;
}
$strsql="select id_encabezado 
           from inv_toma_fisica_detalle
		  where id=$el_id_detalle";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataselecenca_mod = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataselecenca_mod[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataselecenca_mod = false;
          $dataselecenca_mod_erro = $this->Db->ErrorMsg();
      } 

if ($dataselecenca_mod ===false){
	return array("error"=>"#23 tfisca_auxiliar_modificar error:".$dataselecenca_mod_erro .' '.$strsql);
}
if (count($dataselecenca_mod )==0){
	return array("error"=>"#26 tfisca_auxiliar_modificar error no se encuenta el id ".$el_id_detalle);
}
$el_id_encabezado=$dataselecenca_mod[0][0];
$msj=$this->inv_act_inventario_toma_fisica($el_id_encabezado);
return array("error"=>$msj);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: tfisca_auxiliar_modificar ------*/


/*----- Scriptcase Locale: PHP Method: traer_marca_de_llanta ------*/

function traer_marca_de_llanta($el_idllanta)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="SELECT b.marca,ifnull(profundidad,0),ifnull(numero_ubicacion,0)
           FROM pre_llantas a
           LEFT JOIN gen_marcas b ON a.marca=b.id
          WHERE numeracion='".$el_idllanta."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datamarcadelallanta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datamarcadelallanta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datamarcadelallanta = false;
          $datamarcadelallanta_erro = $this->Db->ErrorMsg();
      } 

if ($datamarcadelallanta ===false){
	return array("error"=>"Error #6.traer_marca_de_llanta.funciones_generales:".$datamarcadelallanta_erro .' '.$strsql);
}
if (count($datamarcadelallanta )==0){
	return array("error"=>"Error numeracion ".$el_idllanta." no existe");
}
$resultado=$this->color_de_la_profundidad($datamarcadelallanta[0][1],$datamarcadelallanta[0][2]);
$rcol=$resultado['rcol'];
$pf=$resultado['pf'];

return array("error"=>"","id_marca"=>$el_idllanta." ".$datamarcadelallanta[0][0],"rcol"=>$rcol);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: traer_marca_de_llanta ------*/


/*----- Scriptcase Locale: PHP Method: update_inv_salida_encabezado ------*/

function update_inv_salida_encabezado()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$id_salida=$_GET['update_inv_salida_encabezado'];
$id_estimacion=$_GET['id_estimacion'];
$id_esgarantia=$_GET['id_esgarantia'];
$id_numerogarantia=$_GET['id_numerogarantia'];

return array("error"=>"idsalida:".$id_salida.' estimacion:'.$id_estimacion.' garantia:'.$id_esgarantia.' numerogarantia:'.$id_numerogarantia);
$strsql="update inv_salidas_encabezado set estimacionordenreparacionid='".$id_estimacion."' where id='".$id_salida."' limit 1";

return $this->agregar_garantia_lib($id_salida,$id_esgarantia,$id_numerogarantia);

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: update_inv_salida_encabezado ------*/


/*----- Scriptcase Locale: PHP Method: update_pre_llanta ------*/

function update_pre_llanta()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$numero_ubicacion=$_GET['numero_ubicacion'];
$llanta_actual=$_GET['llanta_actual'];
$llanta_nueva=$_GET['llanta_nueva'];
$a_bodega=$_GET['a_bodega'];
$codigo=$_GET['codigo'];
$ubicacion=$_GET['ubicacion'];
$elestado=$_GET['elestado'];
$losmm=floatval($_GET['losmm']);

if (0==intval($llanta_nueva)){
	$llanta_nueva=0;
}

if (!isset($_GET['forzar_cambio'])){
	return array("error"=>"Parametro forzar_cambio no esta definido","preguntar_cambio"=>"0");
}
$forzar_cambio=$_GET['forzar_cambio'];

if ($losmm<4 or $losmm>15){
	return array("error"=>"Error en los milimitros de profundidad del taco dato ingresado:".$losmm,"preguntar_cambio"=>"0");
}

$strsql="select a.ubicacion,ifnull(b.descripcion,''),concat(ifnull(chasis,''),ifnull(vehiculo,'')),
            ifnull((select id_seguridad 
			          from gen_usuario_seguridad_login
					 where login='".$_SESSION['grant']['usr_login']."'
					   and id_seguridad=39),0),a.bodega
            from pre_llantas a
			left join pre_llantas_ubicacion b on a.ubicacion=b.id
		  where a.numeracion='".$llanta_nueva."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datallantaactual = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datallantaactual[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datallantaactual = false;
          $datallantaactual_erro = $this->Db->ErrorMsg();
      } 

if ($datallantaactual ===false){
	return array("error"=>"Error:".$datallantaactual_erro .' '.$strsql,"preguntar_cambio"=>"0");
}
if (count($datallantaactual )<>0){
	$bodega_act=$datallantaactual[0][4];
	
	
	
	if ($bodega_act>8 and $bodega_act<11){
		
	 
	  if (7==$bodega_act){
		$msj='Esta llanta esta en la lista para envio a Cartago';
	  }
	  if (8==$bodega_act){
		$msj='Esta llanta esta en transito a Cartago';
	  }
	  if (9==$bodega_act){
	  	$msj='Esta llanta esta en la lista para envio a Limon';
	  }
	  if (10==$bodega_act){
		$msj='Esta llanta esta en transito a Cartago';
	  }
	  return array("error"=>$msj);
	}
	
	$otroupdate='';
	$cubicacion=3;
  if (2==$ubicacion){
	  $otroupdate=",chasis='".$codigo."',vehiculo=null";
	  $cubicacion=2;
  }
  if (1==$ubicacion){
	  $otroupdate=",vehiculo='".$codigo."',chasis=null";
	  $cubicacion=1;
  }
	$strsql="update pre_llantas set ubicacion='".$cubicacion."',estado=2,bodega=null".$otroupdate.",
	       numero_ubicacion='".$numero_ubicacion."',
	       usuario_modifica='".$_SESSION['grant']['usr_login']."',fecha_modifica='".date('Y-m-d H:i:s')."',
		   profundidad=".$losmm."
           where numeracion='".$llanta_nueva."'";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updllantanueva = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updllantanueva[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updllantanueva = false;
          $updllantanueva_erro = $this->Db->ErrorMsg();
      } 

   if ($updllantanueva ===false){
	 return array("error"=>"Error #36 funciones_generales.update_pre_llanta:".$updllantanueva_erro .' '.$strsql,"preguntar_cambio"=>"0");  
   }
} else {
	$nnumeracion=floatval($llanta_nueva);
	if (0<>$nnumeracion){
		return array("error"=>"Error #45 la numeracion:".$nnumeracion." no existe","preguntar_cambio"=>"0");
	}
}

$strsql="update pre_llantas set bodega='".$a_bodega."',ubicacion=3,chasis=null,vehiculo=null,numero_ubicacion=null,
			usuario_modifica='".$_SESSION['grant']['usr_login']."',fecha_modifica='".date('Y-m-d H:i:s')."',
			estado='".$elestado."'
           where numeracion='".$llanta_actual."'";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updllantaactual = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updllantaactual[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updllantaactual = false;
          $updllantaactual_erro = $this->Db->ErrorMsg();
      } 

   if ($updllantaactual ===false){
	 return array("error"=>"Error #46 funciones_generales.update_pre_llanta:".$updllantaactual_erro .' '.$strsql,"preguntar_cambio"=>"0");  
   }

return array("error"=>"","preguntar_cambio"=>"0");

return array("error"=>
"numero_ubicacion:$numero_ubicacion
 llanta_actual:$llanta_actual
 llanta_nueva:$llanta_nueva
 a_bodega:$a_bodega
 codigo:$codigo
 ubicacion:$ubicacion
 elestado:$elestado","preguntar_cambio"=>"0");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: update_pre_llanta ------*/


/*----- Scriptcase Locale: PHP Method: update_pre_llanta_profundidad ------*/

function update_pre_llanta_profundidad()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$llanta_actual=$_GET['llanta_actual'];
$losmm=floatval($_GET['losmm']);

$strsql="Select numeracion from pre_llantas where numeracion='".$llanta_actual."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_llanta_existe = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_llanta_existe[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_llanta_existe = false;
          $data_llanta_existe_erro = $this->Db->ErrorMsg();
      } 

if ($data_llanta_existe ===false){
	return array("error"=>"Error #7 funciones_generales.update_pre_llanta:".$data_llanta_existe_erro .' '.$strsql);
}
if (count($data_llanta_existe )==0){
	return array("error"=>"Error la numeracion de la llanta no existe :".$llanta_actual);
}
if ($losmm<4 or $losmm>15){
	return array("error"=>"Error #9 funciones_generales.update_pre_llanta en los milimitros de profundidad del taco dato ingresado:".$losmm);
}

$strsql="update pre_llantas set 
			usuario_modifica='".$_SESSION['grant']['usr_login']."',fecha_modifica='".date('Y-m-d H:i:s')."',
			profundidad='".$losmm."'
           where numeracion='".$llanta_actual."'";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updllantaactual_mm = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updllantaactual_mm[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updllantaactual_mm = false;
          $updllantaactual_mm_erro = $this->Db->ErrorMsg();
      } 

   if ($updllantaactual_mm ===false){
	 return array("error"=>"Error #18 funciones_generales.update_pre_llanta:".$updllantaactual_mm_erro .' '.$strsql);  
   }

return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: update_pre_llanta_profundidad ------*/


/*----- Scriptcase Locale: PHP Method: ver_asiento_temporal ------*/

function ver_asiento_temporal($id_compra)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql= $this->genere_script_asiento_id($id_compra);
$strsql=str_replace("a.compania,a.cuenta","a.compania,formato_cuenta(a.cuenta)",$strsql);
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataasiento = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataasiento = false;
          $dataasiento_erro = $this->Db->ErrorMsg();
      } 

if ($dataasiento ===false){
	return array("error"=>'<h1>Error</h1>'.$dataasiento_erro .' '.$strsql,"html"=>'');
}
$tt_cc=0;
$tt_dc=0;

$tt_cd=0;
$tt_dd=0;

$lin='<tr>
		<th>Cuenta</th>
		<th>Nombre</th>
		<th>Detalle</th>
		<th>Debitos</th>
		<th>Creditos</th>
		<th>Debitos $</th>
		<th>Creditos $</th>
		<th>Referencia</th>
		<th>Mes</th>
		<th>Año</th>
		</tr>';
while (!$dataasiento->EOF){
	$tt_cc=$tt_cc+$dataasiento->fields[4];
	$tt_dc=$tt_dc+$dataasiento->fields[6];

	$tt_cd=$tt_cd+$dataasiento->fields[5];
	$tt_dd=$tt_dd+$dataasiento->fields[7];
    $cnombre=str_replace('"','',$dataasiento->fields[2]);
	$cdetalle=str_replace('"','',$dataasiento->fields[3]);
	$cnombre=str_replace("'",'',$cnombre);
	$cdetalle=str_replace("'",'',$cdetalle);
	$lin.="<tr>
	   <td style='text-align:left'>".$dataasiento->fields[1]."</td>
	   <td style='text-align:left'>".$cnombre."</td>
	   <td style='text-align:left'>".$cdetalle."</td>
	   <td style='text-align:right'>".number_format($dataasiento->fields[4],2)."</td>
	   <td style='text-align:right'>".number_format($dataasiento->fields[6],2)."</td>
	   <td style='text-align:right'>".number_format($dataasiento->fields[5],2)."</td>
	   <td style='text-align:right'>".number_format($dataasiento->fields[7],2)."</td>
	   <td>".$dataasiento->fields[8]."</td>
	   <td>".$dataasiento->fields[9]."</td>
	   <td>".$dataasiento->fields[10]."</td>
	</tr>";
	$dataasiento->MoveNext();
}
	$ldif=0;
	$ldifc='';
	if (($tt_cc-$tt_dc)<>0 or ($tt_cd-$tt_dd)<>0){
		$ldif=abs(($tt_cc-$tt_dc))+abs(($tt_cd-$tt_dd));
	}
	if (round($ldif,0)<>0){
		$ldifc='Dif:'.number_format($ldif,2);
	}
	$lin.="<tr>
	   <td style='text-align:left'></td>
	   <td style='text-align:left'></td>
	   <td style='text-align:right'>Totales:</td>
	   <td style='text-align:right'>".number_format($tt_cc,2)."</td>
	   <td style='text-align:right'>".number_format($tt_dc,2)."</td>
	   <td style='text-align:right'>".number_format($tt_cd,2)."</td>
	   <td style='text-align:right'>".number_format($tt_dd,2)."</td>
	   <td>".$ldifc."</td>
	   <td></td>
	   <td></td>
	</tr>";
$dataasiento->Close();

$lindif='';
$msj=$this->verificar_totales_en_compra($id_compra);
if (''<>$msj){
	$lindif="<h3 style='background-color:red'> ".$msj.'<h3>';
}
$chtml='<table border="1">'.$lin.'</table><label>'.$lindif.'</label>';

return array("error"=>"","html"=>$chtml);

return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: ver_asiento_temporal ------*/


/*----- Scriptcase Locale: PHP Method: verificar_dato_ingresado ------*/

function verificar_dato_ingresado($bandera, $datoingresado)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$error='No hay parametro :'.$bandera.' '.$datoingresado;
$elok=0;
if ('form_pre_vehiculo_movil'==$bandera) {
  $error='';
  if (3==strlen($datoingresado)){
	 $strsql="select placa from pre_vehiculo where unidad_numero='".$datoingresado."'";
  } else {
     $strsql="select placa from pre_vehiculo where placa='".$datoingresado."'";
  }
   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexisteplaca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexisteplaca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisteplaca = false;
          $dataexisteplaca_erro = $this->Db->ErrorMsg();
      } 

  if ($dataexisteplaca ===false){
	 return array("error"=>"Error #7.verificar_dato_ingresado:".$dataexisteplaca_erro .' '.$strsql,"ok"=>0,"datoretornado"=>$datoingresado); 
  }
  if (count($dataexisteplaca )==0){
	  return array("error"=>"Placa no existe","ok"=>0,"datoretornado"=>$datoingresado);
  }
  $datoingresado=$dataexisteplaca[0][0];
  $elok=1;
}

if ('form_pre_choferp_movil'==$bandera) {
  $error='';
  if (3==strlen($datoingresado)){
	 $strsql="select codigo from pre_choferp where codigo='".$datoingresado."'";
  } else {
     $strsql="select codigo from pre_choferp where replace(fkpersona,'-','')=replace('".$datoingresado."','-','')";
  }
   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexisteplaca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexisteplaca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisteplaca = false;
          $dataexisteplaca_erro = $this->Db->ErrorMsg();
      } 

  if ($dataexisteplaca ===false){
	 return array("error"=>"Error #7.verificar_dato_ingresado:".$dataexisteplaca_erro .' '.$strsql,"ok"=>0,"datoretornado"=>$datoingresado); 
  }
  if (count($dataexisteplaca )==0){
	  return array("error"=>"Chofer no existe","ok"=>0,"datoretornado"=>$datoingresado);
  }
  $datoingresado=$dataexisteplaca[0][0];
  $elok=1;
}
if ('form_pre_chasis_movil'==$bandera) {
  $error='';
  if (1==1){
	 $strsql="select codigo from pre_chasis where codigo='".$datoingresado."'";
  } else {
     $strsql="select codigo from pre_chasis where replace(fkpersona,'-','')=replace('".$datoingresado."','-','')";
  }
   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexisteplaca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexisteplaca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisteplaca = false;
          $dataexisteplaca_erro = $this->Db->ErrorMsg();
      } 

  if ($dataexisteplaca ===false){
	 return array("error"=>"Error #7.verificar_dato_ingresado:".$dataexisteplaca_erro .' '.$strsql,"ok"=>0,"datoretornado"=>$datoingresado); 
  }
  if (count($dataexisteplaca )==0){
	  return array("error"=>"Codigo de chasis no existe","ok"=>0,"datoretornado"=>$datoingresado);
  }
  $datoingresado=$dataexisteplaca[0][0];
  $elok=1;
}


return array("error"=>$error,"ok"=>$elok,"datoretornado"=>$datoingresado);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: verificar_dato_ingresado ------*/


/*----- Scriptcase Locale: PHP Method: verificar_entrada_para_aplicar_paso1 ------*/

function verificar_entrada_para_aplicar_paso1()
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if (!isset($_GET['id_compra'])){
	return array("error"=>"Falta el parametro de id compra");
} 
$id_compra=$_GET['id_compra'];
$strsql="select compania,estado
           from inv_entradas_encabezado
		 where id=".$id_compra."";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataciaiee = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataciaiee[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataciaiee = false;
          $dataciaiee_erro = $this->Db->ErrorMsg();
      } 

if ($dataciaiee ===false){
	return array("error"=>"Error #10 verificar_Entrada_para_aplicar_paso1:".$dataciaiee_erro .
				 $strsql);
}
if (count($dataciaiee )==0){
	return array("error"=>"Error #13 verificar_Entrada_para_aplicar_paso1 no existe id:".$id_compra);
}
if ($dataciaiee[0][1]<>1){
	return array("error"=>"Error #17 verificar_Entrada_para_aplicar_paso1 ".
				 " el estado actual del documento es :".$dataciaiee[0][1].' id:'.$id_compra);
}

$j_x_cia=$dataciaiee[0][0];
$datos=$this->verificar_entrada_para_aplicar_lib($id_compra,$j_x_cia);

return $datos;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: verificar_entrada_para_aplicar_paso1 ------*/


/*----- Scriptcase Locale: PHP Method: verificar_ubicacion_llanta ------*/

function verificar_ubicacion_llanta($el_valor, $la_ubicacion)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
if ('string'==gettype($el_valor)){
	$el_valor=floatval($el_valor);
}
if ($el_valor==0){
	return array("error"=>"Ubicacion ".$la_ubicacion.' esta en cero y debe tener un valor');
}
return array("error"=>"");

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: verificar_ubicacion_llanta ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function base64_to_jpeg ------*/

function base64_to_jpeg($base64_string, $output_file) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $ifp = fopen( $output_file, 'wb' ); 
	if ($ifp===false){
		return;
	} 
    $data = explode( ',', $base64_string );

	
    fwrite( $ifp, base64_decode( $data[ 1 ] ) );

    fclose( $ifp ); 

    return $output_file; 

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function base64_to_jpeg ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapiconectar ------*/

function rwspapiconectar($id_elservidor,$linea,$patroot,$elusuario){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	
    $api = new WhatsAppAPI($elservidor);
	try {
		$connection_response = $api->createConnection($linea, 2);  
		$imggg='data:image/jsignature;base30,'.$connection_response["qrPath"];
		
		$archivoo=$patroot.'qr_con_'.$linea.'.png';
		
		$this->base64_to_jpeg($imggg, $archivoo);
		if (file_exists($archivoo)){
			$error='';
		} else {
			$error="No pude generar imagen QR del archivo:".$archivoo.' servidor:'.$elservidor;
		}
		if (''==$error){
			$elerrorsql=$this->rwspapi_asignar_cfg($id_elservidor,$linea,$patroot,$elusuario);
		}
		$datos=array("error"=>$error,
		"msjstatus"=>"Connection created successfully!",
		"status"=>$connection_response["status"],
		"response: "=>$connection_response["response"],
		"qrpath"=>$connection_response["qrPath"],
		"sessionpath"=>$connection_response["sessionPath"],
		"elerrorsql"=>$elerrorsql,
		"archivo"=>$archivoo);

		
	} catch (Exception $e) {
		$datos=array("error"=>'Error en la funcion '.$e->getMessage().' servidor:'.$elservidor);
	} 
	return $datos;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapiconectar ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapidesconectar ------*/

function rwspapidesconectar($id_elservidor,$linea,$elusuario){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	$api = new WhatsAppAPI($elservidor);
 try {
     $logout_response = $api->logout($linea);
	 if ($logout_response['status']){
	  $strsql="update whatsapp_rwsp_api_cfg set status=0,fecha='".date('Y-m-d H:i:s')."'  
				            where usuario='".$elusuario."' and linea='".$linea."' and server='".$id_elservidor."'";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insxvghsk = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insxvghsk[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insxvghsk = false;
          $insxvghsk_erro = $this->Db->ErrorMsg();
      } 

	   if ($insxvghsk ===false){
		   $elerrorsql="Error #68:".$insxvghsk_erro .' '.$strsql;
	   }	 
		return array("error"=>"","status"=>1); 
	 }
      return array("error"=>'Error en desconexion:'.$logout_response['MESSAGE'].' '.' srv:'.$elservidor.':'.$linea,"status"=>0);
 } catch (Exception $e) {
     return array("error"=>$e->getMessage().' srv:'.$elservidor.':'.$linea,"status"=>2);
 }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapidesconectar ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapienviar_mensaje ------*/

function rwspapienviar_mensaje($id_elservidor,$linea,$destino,$mensaje,$archivos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

	if (strlen($destino)<11){
		$destino='506'.$destino;
	}
	$listaarcs=explode( ';', $archivos );
	$strfiles='';
    $arc_name='';
	$arc_ubic='';
	for ($i=0;$i<22;$i++){
		if (file_exists($listaarcs[1])){
			$arc_name=$listaarcs[0];
			$arc_ubic=$listaarcs[1];
		}
	}
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	
	$api = new WhatsAppAPI($elservidor);
	try {
		if (''==$arc_name){
		 $response = $api->sendMessage(
			 $linea,
			 $destino,
			 $mensaje,
			 "texto");
		} else {
		 $response = $api->sendMessage(
			 $linea,
			 $destino,
			 $mensaje,
			 "archivo",
			 $arc_name,
		  	 $arc_ubic);
		}
	  if ($response['status']){
		  return array("error"=>'','status'=>1,"elerrorsql"=>'');
	  } else {
		  return array("error"=>' rwsp-api.#136.rwspapienviar_mensaje'.json_encode($response));
	  }
	 } catch (Exception $e) {
		 return array("error"=>$e->getMessage().$elservidor.' rwsp-api.#139.rwspapienviar_mensaje origen:'.$linea.' destino:'.$destino);
	 }

	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapienviar_mensaje ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_validar_numero ------*/

function rwspapi_validar_numero($id_elservidor,$linea,$destino){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	if (strlen($destino)<11){
		$destino='506'.$destino;
	}
	$api = new WhatsAppAPI($elservidor);
   return $api->validateNumber($destino, $linea);	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_validar_numero ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapicargar_grupos ------*/

function rwspapicargar_grupos($id_elservidor,$linea){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $msj=$this->elservidor($id_elservidor);
	if (''<>$msj['error']){
		return $msj;
	}
	$elservidor=$msj['elservidor'];
	$api = new WhatsAppAPI($elservidor);
	try {
		 $response = $api->getGroups($linea);
	  if ($response['status']){
		  return array("error"=>'','status'=>1,"grupos"=>$response['groups']);
	  } else {
		  return array("error"=>' rwsp-api.#136.rwspapicargar_grupos'.json_encode($response));
	  }
	 } catch (Exception $e) {
		 return array("error"=>$e->getMessage().$elservidor.' rwsp-api.#139.rwspapicargar_grupos origen:'.$linea.' destino:'.$destino);
	 }
    
	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapicargar_grupos ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function elservidor ------*/

function elservidor($id_elservidor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="SELECT id, concat(ip_servidor,':',puerto)
               FROM whatsapp_rwsp_api_servidores 
               where id='".$id_elservidor."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datasrevidro = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datasrevidro[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datasrevidro = false;
          $datasrevidro_erro = $this->Db->ErrorMsg();
      } 

	if ($datasrevidro ===false){
		return array("error"=>"Error:".$datasrevidro_erro .' '.$strsql);
	} else {
		if (count($datasrevidro )==0){
			return array("error"=>"Error rwsp-api.#154.elservidor en el id del servidor:".$id_elservidor);
		} else {
			$elservidor=$datasrevidro[0][1];
		}
	}
	return array("error"=>"","elservidor"=>$elservidor);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function elservidor ------*/


/*----- Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_asignar_cfg ------*/

function rwspapi_asignar_cfg($id_elservidor,$linea,$patroot,$elusuario){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   $strsql="select linea from whatsapp_rwsp_api_cfg where usuario='".$elusuario."' and linea='".$linea."'";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datasevyz = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datasevyz[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datasevyz = false;
          $datasevyz_erro = $this->Db->ErrorMsg();
      } 

		$elerrorsql='';
	   if ($datasevyz ===false){
		   $elerrorsql="Error #56:".$datasevyz_erro .' '.$strsql;
	   } else {
		  if (count($datasevyz )==0){
			 $strsql="insert into whatsapp_rwsp_api_cfg (usuario,linea,SERVER,STATUS,fecha) VALUES
				   ('".$elusuario."','".$linea."','".$id_elservidor."',1,'".date('Y-m-d H:i:s')."')";
		  } else {
			  $strsql="update whatsapp_rwsp_api_cfg set status=1,fecha='".date('Y-m-d H:i:s')."'  
						where usuario='".$elusuario."' and linea='".$linea."' and server='".$id_elservidor."'";
		  }
		    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insvghsk = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insvghsk[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insvghsk = false;
          $insvghsk_erro = $this->Db->ErrorMsg();
      } 

		   if ($insvghsk ===false){
			   $elerrorsql="Error rwsp-api.#68.rwspapi_asignar_cfg:".$insvghsk_erro .' '.$strsql;
		   }
	   }	
	return $elerrorsql;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: rwsp-api.php => function rwspapi_asignar_cfg ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function trae_numero_asiento ------*/

function trae_numero_asiento($Lcompania,$Lmes,$Lano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$strsql="select compania
			   from con_periodo_fiscal_compania
			  where periodo_fiscal=$Lano
				and compania='".$Lcompania."'"; 
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataperiodof = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataperiodof[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataperiodof = false;
          $dataperiodof_erro = $this->Db->ErrorMsg();
      } 

	if ($dataperiodof ===false){
		echo "<h1>Error:".$dataperiodof_erro .'</h1>'.$strsql;
		return -1;
	}
	if (count($dataperiodof )==0){
		$strsql="insert into con_periodo_fiscal_compania (compania,periodo_fiscal,estado,mes_inicial) values
					 ('$Lcompania',$Lano,1,'10')";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_dataperiodof = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_dataperiodof[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_dataperiodof = false;
          $ins_dataperiodof_erro = $this->Db->ErrorMsg();
      } 

		if ($ins_dataperiodof ===false){
			echo "<h1>Error:".$ins_dataperiodof_erro .'</h1>'.$strsql;
			return -1;		
		 }		
	}
	$strsql="select asiento
	          from con_periodo_fiscal_compania_meses
			 where compania='$Lcompania'
			   and mes='$Lmes'
			   and ano='$Lano' for update ";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $get_conse_asiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $get_conse_asiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $get_conse_asiento = false;
          $get_conse_asiento_erro = $this->Db->ErrorMsg();
      } 

	if ($get_conse_asiento ===false){
		echo "<h1>Error:".$get_conse_asiento_erro .'</h1>'.$strsql;
		return -1;
	}
	if (count($get_conse_asiento )==0){
		$strsql="insert into con_periodo_fiscal_compania_meses
		          (periodo_fiscal,compania,mes,ano,orden,asiento) values 
				  ('$Lano','$Lcompania','$Lmes','$Lano','$Lmes',1)";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_conse_asiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_conse_asiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_conse_asiento = false;
          $ins_conse_asiento_erro = $this->Db->ErrorMsg();
      } 

		if ($ins_conse_asiento ===false){
		   echo "<h1>Error:".$ins_conse_asiento_erro .'</h1>'.$strsql;	
		   return -1;
		} else {
		  return 1;	
		}
	} else {
		   return $get_conse_asiento[0][0];
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function trae_numero_asiento ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function actualizar_numero_asiento ------*/

function actualizar_numero_asiento($Lcompania,$Lmes,$Lano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="update con_periodo_fiscal_compania_meses set asiento=asiento+1
			 where compania='$Lcompania'
			   and mes='$Lmes'
			   and ano='$Lano'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upda_conse_asiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upda_conse_asiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upda_conse_asiento = false;
          $upda_conse_asiento_erro = $this->Db->ErrorMsg();
      } 

			if ($upda_conse_asiento ===false){
			   return  "<h1>Error:".$upda_conse_asiento_erro .'</h1>'.$strsql;
			} else {
		      return '';
			}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function actualizar_numero_asiento ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function ejecutar_strsql ------*/

function ejecutar_strsql($eje_strsql) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		 
      $nm_select = $eje_strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($ejecutarstrsql = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ejecutarstrsql = false;
          $ejecutarstrsql_erro = $this->Db->ErrorMsg();
      } 

		if ($ejecutarstrsql  === false) {
			
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error ' . $ejecutarstrsql_erro  . $eje_strsql;
;
			echo 'Error ' . $ejecutarstrsql_erro  . $eje_strsql;
			return false;
		}
		return true;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function ejecutar_strsql ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function aplica_asiento ------*/

function aplica_asiento($la_compania,$la_division,$el_mes,$el_ano,$el_numeroasiento,$el_periodofiscal,$el_estado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$totaldebitos_local=0;
	$totalcreditos_local=0;
	$totaldebitos_extranjero=0;
	$totalcreditos_extranjero=0;
	$hay_lineas='N';
	$hay_que_reversar='N';
	$elwhere=" where a.ano='".$el_ano."'
		 and a.mes='".$el_mes."'
		 and a.compania='".$la_compania."'
		 and a.division=".$la_division."
		 and a.numeroasiento='".$el_numeroasiento."'";
    if ($el_estado<>1 and $el_estado<>2 and $el_estado<>3){
		echo "Error en el estado de asiento:".$el_numeroasiento.' estado:'.$el_estado;
		return 0;
	}
	
    if (1==$el_estado){
	}
    if (2==$el_estado){
		$hay_lineas='N';
	}

	if (3==$el_estado){
		echo "El asiento esta anulado ".$el_numeroasiento;
		return 0;
	}
	$strsql="select SUM(a.debitos_local) debitos_local,
	                SUM(a.creditos_local) creditos_local,
       				SUM(a.debitos_extranjero) debitos_extranjero,
					SUM(a.creditos_extranjero) creditos_extranjero,
					(select count(*) from con_periodo_fiscal_compania_meses where periodo_fiscal=".$el_periodofiscal." 
					  and compania='".$la_compania."') meses
	    from con_asientos_detalle a ".$elwhere;
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $asientocuadrado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $asientocuadrado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $asientocuadrado = false;
          $asientocuadrado_erro = $this->Db->ErrorMsg();
      } 

	if ($asientocuadrado ===false){
		echo "Error:".$asientocuadrado_erro .' '.$strsql;
	} else {
		if (count($asientocuadrado )<>0){
			if ($asientocuadrado[0][4]<>12){
			   echo "Error en la tabla con_periodo_fiscal_compania_meses, debe tener 12 meses y tiene:".$asientocuadrado[0][4];
			   return -1;
			}
			$hay_lineas='S';
			$totaldebitos_local=$asientocuadrado[0][0];
			$totalcreditos_local=$asientocuadrado[0][1];
			$totaldebitos_extranjero=$asientocuadrado[0][2];
			$totalcreditos_extranjero=$asientocuadrado[0][3];

			if ($totaldebitos_local<>$totalcreditos_local or 
			   $totaldebitos_extranjero<>$totalcreditos_extranjero) {
				echo "Error: el asiento esta descuadrado <br>".
					"Debitos:$totaldebitos_local<br>
					 Creditos:$totalcreditos_local";
				return 0;
			}

		}
	}
	$strsql="update con_asientos_encabezado set
	          		debitos_local=$totaldebitos_local,
	                creditos_local=$totalcreditos_local,
       				debitos_extranjero=$totaldebitos_extranjero,
					creditos_extranjero=$totalcreditos_extranjero ".str_replace('a.',"",$elwhere);
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updateencabezado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updateencabezado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updateencabezado = false;
          $updateencabezado_erro = $this->Db->ErrorMsg();
      } 

	if ($updateencabezado ===false){
		echo "Error en update ".$updateencabezado_erro .' '.$strsql;
		return -1;
	}
	    $strlin1="a.debitos_local,a.creditos_local,a.debitos_extranjero,a.creditos_extranjero";
	if ('S'==$hay_que_reversar){
		$strlin1="a.creditos_local,a.debitos_local,a.creditos_extranjero,a.debitos_extranjero";
	}
	$strsql="SELECT a.cuenta,".$strlin1.",b.mes,b.ano,b.orden,a.centro_costo,c.orden orden_mes_actual
			  FROM con_asientos_detalle a,
				con_periodo_fiscal_compania_meses b,
				con_periodo_fiscal_compania_meses c
			    ".$elwhere."
				AND a.compania=b.compania
				AND b.periodo_fiscal=".$el_periodofiscal."
				AND a.mes=c.mes
    			AND a.ano=c.ano
    			AND b.orden>=c.orden
			  ORDER BY b.orden,ano,mes";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($asientoaaplicar_a = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $asientoaaplicar_a = false;
          $asientoaaplicar_a_erro = $this->Db->ErrorMsg();
      } 

	if ($asientoaaplicar_a ===false){
		echo "Error:".$asientoaaplicar_a_erro .' '.$strsql;
		return -1;
    } else {
	}
	while (!$asientoaaplicar_a->EOF) {
          echo $asientoaaplicar_a->fields[0].$asientoaaplicar_a->fields[1].','.$asientoaaplicar_a->fields[2].'<br>';
          $asientoaaplicar_a->MoveNext();
    }
    $asientoaaplicar_a->Close();
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function aplica_asiento ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function aplica_saldo_cuenta ------*/

function aplica_saldo_cuenta($la_compania,$la_division,$el_mes,$el_ano,$la_cuenta,$el_periodofiscal,
							 $el_orden_mes_actual,$el_orden,
							$debitos_local,
							$creditos_local,
							$debitos_extranjero,
							$creditos_extranjero){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$existe_saldo='N';
	$celwhere=" where 
		     compania='".$la_compania."'
		 and division=".$la_division."
		 and cuenta='".$la_cuenta."'
		 and mes='".$el_mes."'
         and ano='".$el_ano."'";
	$strsql="select compania
			  FROM con_saldos_cuentas ".$celwhere;
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $verisaldocuenta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $verisaldocuenta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $verisaldocuenta = false;
          $verisaldocuenta_erro = $this->Db->ErrorMsg();
      } 

   if ($verisaldocuenta ===false){
	   echo "Error:".$verisaldocuenta_erro .' '.$strsql;
	   return -1;
	} else {
	   if (count($verisaldocuenta )==0){
		   $existe_saldo='N';
	   } else {
		   $existe_saldo='S';
	   }
	}
	if ($existe_saldo=='N'){
		if ($el_orden_mes_actual==$el_orden){
			$strsql="insert into con_saldos_cuentas
			(compania,division,cuenta,anomes,mes,ano,periodo_Fiscal,saldo_inicial,debitos,creditos,saldo_final,
			saldo_inicial_extranjero,debitos_extranjero,creditos_extranjero,saldo_final_extranjero) values (
			'$la_compania',$la_division,'$la_cuenta',$el_ano.$el_orden_mes_actual,'$el_mes','$el_ano',$el_periodofiscal,
			0,$debitos_local,$creditos_local,$debitos_local-$creditos_local,
			$debitos_extranjero,$creditos_extranjero,$debitos_extranjero-$creditos_extranjero)";	
			 
      $nm_select = $trsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $inssaldocuentas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $inssaldocuentas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $inssaldocuentas = false;
          $inssaldocuentas_erro = $this->Db->ErrorMsg();
      } 

			if ($inssaldocuentas ===false){
				echo "Error:".$inssaldocuentas_erro .' '.$strsql;
				return -1;
			}
		}
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function aplica_saldo_cuenta ------*/


/*----- Scriptcase Locale: PHP Method: con_utils.php => function aplica_saldo_centro_costo ------*/

function aplica_saldo_centro_costo(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: con_utils.php => function aplica_saldo_centro_costo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_msg_whatsapp_boleta ------*/

function enviar_msg_whatsapp_boleta($elid_boleta,$el_mensaje,$el_tel1,$el_tel2,$c_token_qr,$c_puerto){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   unset($_SESSION['enviar_msj_whatsapp']);
	   if (0<>floatval($elid_boleta)){
			if (isset($_SESSION['enviar_msj_whatsapprt'])){
 		 $ctabladespacho="(
					SELECT a.*,
					CONCAT(IF(f.nombre IS NULL,'',f.nombre),' ',
					   IFNULL(tc.descripcion,''),
					   IF(3 = c.numero_ejes,' 3 ejes ',''),
					   IFNULL(IF(1 = pec.esdelacasa,'',' propio'),''),
					   ' Retorno','' ) AS nombre
					FROM pre_chasis_despacho_retorno a 
					 LEFT JOIN pre_chasis c ON(a.chasis = c.codigo) 
					 LEFT JOIN pre_propietario_equipo pec ON(pec.codigo = c.Fk_codigo_pre_propietario_equipo)
					 LEFT JOIN v_pre_rutas f ON(a.cliente = f.cliente AND a.ruta_destino = f.codigo) 
					 LEFT JOIN pre_tipo_contenedor2 tc FORCE INDEX (PRIMARY) ON(a.tipo_contenedor = tc.id)
					 where a.id=".$elid_boleta.") ";
			   unset($_SESSION['enviar_msj_whatsapprt']);
		   } else {
			   $ctabladespacho="(
					SELECT a.*,
					CONCAT(IF(f.nombre IS NULL,'',f.nombre),' ',
					   IFNULL(tc.descripcion,''),
					   IF(3 = c.numero_ejes,' 3 ejes ',''),
					   IFNULL(IF(1 = pec.esdelacasa,'',' propio'),''),
					   IF(1 = a.es_retorno,' Retorno','') ) AS nombre
					FROM pre_chasis_despacho a  
					 LEFT JOIN pre_chasis c ON(a.chasis = c.codigo) 
					 LEFT JOIN pre_propietario_equipo pec ON(pec.codigo = c.Fk_codigo_pre_propietario_equipo)
					 LEFT JOIN v_pre_rutas f ON(a.cliente = f.cliente AND a.ruta_destino = f.codigo) 
					 LEFT JOIN pre_tipo_contenedor2 tc FORCE INDEX (PRIMARY) ON(a.tipo_contenedor = tc.id)
					 where a.id=".$elid_boleta.") ";
		   }
		
$strsql="
		select DATE_FORMAT(a.fecha_Creacion,'%Y%m%d%H%i%s') fecha_Creacion_qr,
							ifnull(pcsc.url_sistema_choferes,'') url_sistema_choferes,
							rtrim(ltrim(ifnull(gpc.nombre,bp.nombre))) nombre_chofer,
							rtrim(ltrim(bp.movil)) movil_chofer,
							ifnull(rtrim(ltrim(ifnull(ucmm.celular_empresa,ifnull(ucm.celular_empresa,uc.celular_empresa)))),'') movil_despachador,
							rtrim(ltrim(uc.nombre_resumen)) despachador,
							rtrim(ltrim(a.nombre)) nombre_ruta,
							concat(ifnull(pcsc.url_sistema_choferes,''),'?b=',DATE_FORMAT(a.fecha_Creacion,'%Y%m%d%H%i%s'),a.id) url,
							'' token_whatsapp,
							'' puerto_whatsapp,
							'' token_general,
							'' puerto_general,
							'' celular_copia,
							ifnull(ucmm.configuracion_whatsapp,1) configuracion_whatsapp,
							ifnull(ucmm.cfg_rwsp,'') cfg_rwsp,
							ifnull(ucmm.cfg_linea,'') cfg_linea,
							ifnull(ucmm.cfg_server,0) cfg_server
								  from ".$ctabladespacho." a
								 left join gen_persona gpc on gpc.cedula=a.cedula_chofer
								 left join pre_choferp b on a.chofer=b.codigo
								 left join gen_persona bp on bp.cedula=b.fkpersona
								 left join pre_control pcsc on pcsc.id=1
								 left join v_gen_usuario uc on uc.usuario=a.usuario
								 left join v_gen_usuario ucm on ucm.usuario=a.usuario_modifica
								 left join v_gen_usuario ucmm on ucmm.usuario='".$_SESSION['grant']['usr_login']."'
							where a.id='".$elid_boleta."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadelaboleta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadelaboleta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadelaboleta = false;
          $datadelaboleta_erro = $this->Db->ErrorMsg();
      } 

		if ($datadelaboleta ===false){
			return array("error"=>"Error:".$datadelaboleta_erro .' '.$strsql);
		}
		if (count($datadelaboleta )==0){
			return array("error"=>"Error boleta:".$elid_boleta." noexiste");
		}

		$fecha_Creacion_qr=$datadelaboleta[0][0];
		$url_sistema_choferes=$datadelaboleta[0][1];
		$nombre_chofer=$datadelaboleta[0][2];
		$movil_chofer='506'.$datadelaboleta[0][3];
		$movil_despachador='506'.$datadelaboleta[0][4];
		$celular_empresa='506'.$datadelaboleta[0][12];
		$despachador=$datadelaboleta[0][5];
		$nombre_ruta=$datadelaboleta[0][6];
		$url=$datadelaboleta[0][7];
		$c_token_qr=$datadelaboleta[0][8];
		$c_puerto=$datadelaboleta[0][9];
		$configuracion_whatsapp=$datadelaboleta[0][13];
		$ucmm_cfg_rwsp=$datadelaboleta[0][14];
		$ucmm_cfg_linea=$datadelaboleta[0][15];
		$ucmm_cfg_server=$datadelaboleta[0][16];
		
		if (''==$c_token_qr){
			$c_token_qr=$datadelaboleta[0][10];
			$c_puerto=$datadelaboleta[0][11];
		}

		$mensaje="Despacho generado
\n\nBoleta:*".$elid_boleta."* 
\n\nChofer:*".$nombre_chofer."* +".$movil_chofer."  
\n\nDespachador:*".$despachador."* +".$movil_despachador." 
\n\nRuta:*".$nombre_ruta."* 
\n\nurl :".$url;
		$mensaje="Despacho generado
Boleta:*".$elid_boleta."* 
Chofer:*".$nombre_chofer."* +".$movil_chofer."  
Despachador:*".$despachador."* +".$movil_despachador." 
Ruta:*".$nombre_ruta."* 
url :".$url;
		
		$mensaje=htmlspecialchars($mensaje);
	    if (($_SERVER["SERVER_NAME"]=='localhost') or 'oquiros'==$_SESSION['grant']['usr_login']){
			$movil_chofer='50687110011';
			$movil_despachador='50687110011';
		}
		   
		} else { 
		   $url='';
		   $mensaje=$el_mensaje;
		   $movil_chofer=$el_tel1;
		   $movil_despachador=$el_tel2;
		   $celular_empresa=$el_tel2;
		}
		if (''<>$movil_despachador){
	    	$celular_empresa=$movil_despachador;
		}
	    $archivo='';
	    if (0==$ucmm_cfg_server){
				$msj=$this->enviar_whatsapp_waapi($mensaje,$movil_chofer,$celular_empresa,$archivo,$configuracion_whatsapp);
				if (''==$msj['error']){
					return $msj;
					  if (1==2){ 
					   $obj = json_decode($msj['respuesta']);
					   if ('OK'==$obj->{'message'}){
						   $arr_r=$obj->{'data'};
						   if ('Enviado'==$arr_r[0]->{'estado'} and (''==$celular_empresa)){
							   return array("error"=>"");
						   }
						   if ('Enviado'==$arr_r[0]->{'estado'} and (''<>$celular_empresa and 'Enviado'==$arr_r[1]->{'estado'})){
								 return array("error"=>"");
						   } else {
							   return array("error"=>"Mensaje a al despachador:".$movil_chofer.' estado:'.$arr_r[0]->{'estado'}.
													 " Mensaje a ".$_SESSION['grant']['usr_login']." :".
														$celular_empresa.' estado:'.$arr_r[1]->{'estado'});
						   }
						} else {
						  return array("error"=>$msj['respuesta']);
						}
				  } else {
				  }
				} else {
				  return array("error"=>$msj['error']);
				}
	  	} 
	   if (0<>$ucmm_cfg_server){
		   $archivo='';
		   $f_archivo='';
		   $n_archivo='';
		   
			if (isset($_SESSION['enviar_msj_whatsapparc'])){
				$f_archivo=$_SESSION['enviar_msj_whatsapparc'];
			}

			if (isset($_SESSION['enviar_msj_whatsappnarc'])){
				$n_archivo=$_SESSION['enviar_msj_whatsappnarc'];
			} 
		     if (''<>$archivo and 1==2){
				$info = new SplFileInfo($archivo);
				$archivo=$info->getFilename().';'.$archivo;
			}
		   if (''<>$f_archivo.$n_archivo){
			   $archivo=$n_archivo.';'.$f_archivo;
		   }
		   if (($_SERVER["SERVER_NAME"]=='localhost') or 'oquiros'==$_SESSION['grant']['usr_login']){
		   }
		   return $this->rwspapienviar_mensaje($ucmm_cfg_server,$ucmm_cfg_linea,$movil_chofer,$mensaje,$archivo);
	   }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_msg_whatsapp_boleta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function es_formato_json ------*/

function es_formato_json(string $json): bool {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		try {
			$test = json_decode($json, null, JSON_THROW_ON_ERROR);
			if(is_object($test)) return true;
			return false;
		} catch  (Exception $e) {
			return false;
		}
    
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function es_formato_json ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function encodeURIComponent ------*/

function encodeURIComponent($str)	{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   $str= str_replace(chr(13),'\n',$str);
	   $str= str_replace(chr(10),'\n',$str);	
	   $str= str_replace(chr(15),'',$str);
       $str= str_replace('\n\n\n\n','\n',$str);
	   $str= str_replace('\n\n\n','\n',$str);
	   $str= str_replace('\n\n','\n',$str);
	   $str= str_replace('\t','',$str);

		return $str;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function encodeURIComponent ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function borrar_enviar_whatsapp_ssoqc ------*/

function borrar_enviar_whatsapp_ssoqc($mensaje,$telefono1,$telefono2,$archivo,$url,$configuracion_whatsapp){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  return $this->enviar_whatsapp_waapi($mensaje,$telefono1,$telefono2,$archivo,$configuracion_whatsapp);
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function borrar_enviar_whatsapp_ssoqc ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_si_es_numero ------*/

function verificar_si_es_numero($elnumero){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  
	  if (0==floatval($elnumero)){
		  return 0;
	  } else {
		  return $elnumero;
	  }
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_si_es_numero ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function str_excel_numero ------*/

function str_excel_numero($elnumero){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
			$original=$elnumero;
			$elnumero=str_replace(".","",$elnumero);
			$elnumero=str_replace(",","",$elnumero);
			if ($original<>$elnumero){
				return $elnumero/100;
			} else {
				if ("''"=="'".$original."'"){
				   return 0;
				} else {
				   return $original;
				}
			}
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function str_excel_numero ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_libreria_excel ------*/

function existe_libreria_excel(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		if (file_exists('../_lib/prod/third/excel_reader2.php')){

		} else {
			echo "<h1>Error archivo ../_lib/prod/third/excel_reader2.php no existe </h1>";
			echo "<h3>Favor reporte este error porque no podra hacer la carga de datos</h3>";
		}	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_libreria_excel ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function lasemana_de_fecha ------*/

function lasemana_de_fecha($cfecha){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		 date_default_timezone_set('America/Costa_Rica');

		  $fechaActual = $cfecha;	
		  $fechaSegundos = strtotime($fechaActual);	

		 return date('W', $fechaSegundos);	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function lasemana_de_fecha ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_lugar_retiro ------*/

function existe_lugar_retiro($codigoretiro){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select codigo from pre_almacen where codigo='".$codigoretiro."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datalugarretiro = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datalugarretiro[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datalugarretiro = false;
          $datalugarretiro_erro = $this->Db->ErrorMsg();
      } 

		if ($datalugarretiro ===false){
			return 'Error #6 $this->existe_lugar_retiro():'.$existe_lugar_retiro_erro .' '.$strsql;
		} else {
			if (count($datalugarretiro )==0){
				return 'No existe lugar de retiro';
			}
		}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_lugar_retiro ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function crear_conexion_gps ------*/

function crear_conexion_gps(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			$arr_connx = array();
	  if (($_SERVER["SERVER_NAME"]=='localhost')){
		    echo 'Localhost';
		    $arr_connx['server'] = "192.168.0.3";
			$arr_connx['drive'] = "mssqlnative";
		} else {
		    $arr_connx['server'] = "MSSQLServer";
		  $arr_connx['server'] = "192.168.0.3";
			$arr_connx['drive'] = "pdo_dblib";
		  $arr_connx['drive'] = "odbc_mssql";
		  echo "el drive:".$arr_connx['drive'];
		}
			$arr_connx['user'] = "oquiros";
			$arr_connx['password'] = "frzkaqu2";
			$arr_connx['database'] = "GPSGRANT";
			$arr_connx['persistent'] = "N";
	   sc_connection_new('conn_gps',$arr_connx);
	   $_SESSION['conn_gps']='SI';
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function crear_conexion_gps ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ejecute_sqlserver_gps ------*/

function ejecute_sqlserver_gps($strsqlserver){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		  try {
			$camino=__dir__;
			$hostname = "192.168.0.3";
			if (substr($camino,0,16)=='/var/www/wwwroot'){
				$hostname = "MSSQLServer";
			}
			$port = 1433;
			$dbname = "gpsgrant";
			$username = "oquiros";
			$pw = "frzkaqu2";
			$dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
		  } catch (PDOException $e) {
			echo "Failed to get DB handlex: " . $e->getMessage() . "\n";
			$cretorno=array('strsql'=>'','error'=>$e->getMessage());
			return $cretorno;
		  }
		
	    try {
			$stmt=$dbh->prepare($strsqlserver);
			$r=$stmt->execute();
			
		} catch (PDOException $e) {
			$cretorno=array('strsql'=>'','error'=>$e->getMessage().'<br>'.$strsqlserver);
			return $cretorno;
		}

			$cretorno=array('strsql'=>'','error'=>'');
			return $cretorno;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ejecute_sqlserver_gps ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function deme_tipocambio_venta ------*/

function deme_tipocambio_venta($cfechareferencia,$bandera){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$elerrorsihay='';
	$elretunrtc=0;
			$strsql="SELECT fecha,tc_venta,tc_compra
				 FROM gen_tipos_de_cambio
				WHERE fecha=date('".$cfechareferencia."')";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $tipocambio_venta_datatc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $tipocambio_venta_datatc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $tipocambio_venta_datatc = false;
          $tipocambio_venta_datatc_erro = $this->Db->ErrorMsg();
      } 

			if ($tipocambio_venta_datatc ===false){
				$elerrorsihay="Error:".$tipocambio_venta_datatc_erro .' '.$strsql;
			} else {
			  if (count($tipocambio_venta_datatc )<>0){
				  $elretunrtc=$tipocambio_venta_datatc[0][$bandera];
			 } else {
				 $elerrorsihay='Error no existe TC para la fecha:'.$cfechareferencia.' '; 
			 }
			}	
	  return array("error"=>$elerrorsihay,"tc"=>$elretunrtc);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function deme_tipocambio_venta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function es_desarrollo ------*/

function es_desarrollo(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   return $_SERVER["SERVER_NAME"]=='localhost';
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function es_desarrollo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_correo ------*/

function enviar_correo($emaildestino,$emaildestinocc,$emaildestinoBcc,$g_asunto, $g_cuerpo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    if (''==$emaildestino){
			$emaildestino=$emaildestinocc;
		}
		$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
		$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		$cabeceras .= 'To: '. $emaildestino . "\r\n";
		$cabeceras .= 'From: Sistema Automatico Transportes Grant <federico.fuentes@transportesgrant.com>' . "\r\n";
	    if (''<>$emaildestinocc){
		   $cabeceras .= 'Cc: '.$emaildestinocc."\r\n";
		}
	    if (''<>$emaildestinoBcc){
		   $cabeceras .= 'Bcc: '.$emaildestinoBcc."\r\n";
		}

		if ($_SERVER["SERVER_NAME"]=='localhost'){
				$SMTP='mail.transportesgrant.com';
				$Usr='enviodigital@transportesgrant.com';
				$Pw='Tg25738821';
				$From='oscar@ssoqc.com';
				$To='oscar@ssoqc.com';
				$Asunto=$g_asunto;
				$Mensaje=$g_cuerpo.' emaildestinocc:'.$emaildestinocc.' emaildestinoBcc:'.$emaildestinoBcc;
				$Mens_Type='H';
				$Copies='';
				$Copies_Type='';
				$Port='465';
				$Connection_Type='S';
				$Attachment='';

				    include_once($this->Ini->path_third . "/swift/swift_required.php");
    $sc_mail_port     = "$Port";
    $sc_mail_tp_port  = "$Connection_Type";
    $sc_mail_tp_mens  = "$Mens_Type";
    $sc_mail_tp_copy  = "$Copies_Type";
    $sc_mail_count = 0;
    $sc_mail_erro  = "";
    $sc_mail_ok    = true;
    if ($sc_mail_tp_port == "S" || $sc_mail_tp_port == "Y")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 465;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port, 'ssl');
    }
    elseif ($sc_mail_tp_port == "T")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 587;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port, 'tls');
    }
    else
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 25;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port);
    }
    $Con_Mail->setUsername($Usr);
    $Con_Mail->setpassword($Pw);
    $Send_Mail = Swift_Mailer::newInstance($Con_Mail);
    if ($sc_mail_tp_mens == "H")
    {
        $Mens_Mail = Swift_Message::newInstance($Asunto)->setBody($Mensaje)->setContentType("text/html");
    }
    else
    {
        $Mens_Mail = Swift_Message::newInstance($Asunto)->setBody($Mensaje);
    }
    if (!empty($_SESSION['scriptcase']['charset']))
    {
        $Mens_Mail->setCharset($_SESSION['scriptcase']['charset']);
    }
    $Temp_mail = $Attachment;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $Attachment);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Mens_Mail->attach(Swift_Attachment::fromPath($NM_dest));
        }
    }
    $Temp_mail = $To;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $To);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Arr_addr = SC_Mail_Address($NM_dest);
            $Mens_Mail->addTo($Arr_addr[0], $Arr_addr[1]);
        }
    }
    $Temp_mail = $Copies;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $Copies);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Arr_addr = SC_Mail_Address($NM_dest);
            if (strtoupper(substr($sc_mail_tp_copy, 0, 2)) == "CC")
            {
                $Mens_Mail->addCc($Arr_addr[0], $Arr_addr[1]);
            }
            else
            {
                $Mens_Mail->addBcc($Arr_addr[0], $Arr_addr[1]);
            }
        }
    }
    $Arr_addr = SC_Mail_Address($From);
    $Err_mail = array();
    $sc_mail_count = $Send_Mail->send($Mens_Mail->setFrom($Arr_addr[0], $Arr_addr[1]), $Err_mail);
    if (!empty($Err_mail))
    {
        $sc_mail_erro = $Err_mail;
        $sc_mail_ok   = false;
    }
;

				if ($sc_mail_ok ){
					$mensaje='Correo enviado con exito';
				} else {
					$mensaje=$sc_mail_erro ;
				}
				return $mensaje;
		}
		mail($emaildestino, $g_asunto, $g_cuerpo,$cabeceras) ;

	  return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_correo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function copiar_rutas_origen_destino ------*/

function copiar_rutas_origen_destino($codigoorigen,$codigodestino){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			$strsql="insert into pre_rutas_nuevas 
			SELECT 0 ,'".$codigodestino."',a.codigo,a.tarifa_seco,a.tarifa,a.tarifa_adicional,a.pago_casa,a.precio_base_particular,a.kilometros,a.pagoxkilometroparticular,a.usuario_crea,a.fecha_creacion,a.usuario_modifica,a.fecha_modificacion,a.estado,a.pre_facturar,a.moneda,a.cobro_diesel_genset,a.precio_base_particular_manual,a.nombre_ruta,a.via,a.totaltarifa,a.tarifaxkilometro,a.opcion_3ejes,a.ajuste_3_ejes_importacion,a.cobro_x_kilometro,a.aumentar_precio,
			a.monto_tres_ejes,a.tarifa_especial,a.usar_gam,a.monto_tres_ejes_seco,a.pagar_peajes,null fecha_inactivacion_automatica,
			a.opcion_rebajar_costo_3_ejes,a.kilometros_vacios,a.pganancia,a.pganancia_seco,a.prefacturar_doble_via
			FROM pre_rutas_nuevas a
			  LEFT JOIN pre_rutas_nuevas b ON a.codigo=b.codigo AND b.cliente='".$codigodestino."'
			WHERE a.cliente='".$codigoorigen."'
			  AND b.codigo IS NULL";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insertrutasnuevasabc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insertrutasnuevasabc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insertrutasnuevasabc = false;
          $insertrutasnuevasabc_erro = $this->Db->ErrorMsg();
      } 

			if ($insertrutasnuevasabc ===false){
				return "Error #397 plano_predio_funciones.copiar_rutas_origen_destino en globales.php:".$insertrutasnuevasabc_erro .' '.$strsql;
			}
			$strsql="UPDATE pre_rutas_nuevas a LEFT JOIN pre_rutas_nuevas b ON a.codigo=b.codigo AND b.cliente='".$codigoorigen."' SET 
				a.tarifa_seco=b.tarifa_seco,
				a.tarifa=b.tarifa,
				a.tarifa_adicional=b.tarifa_adicional,
				a.pago_casa=b.pago_casa,
				a.precio_base_particular=b.precio_base_particular,
				a.kilometros=b.kilometros,
				a.pagoxkilometroparticular=b.pagoxkilometroparticular,
				a.usuario_crea=b.usuario_crea,
				a.fecha_creacion=b.fecha_creacion,
				a.usuario_modifica=b.usuario_modifica,
				a.fecha_modificacion=NOW(),
				a.estado=b.estado,
				a.pre_facturar=b.pre_facturar,
				a.moneda=b.moneda,
				a.cobro_diesel_genset=b.cobro_diesel_genset,
				a.precio_base_particular_manual=b.precio_base_particular_manual,
				a.nombre_ruta=b.nombre_ruta,
				a.via=b.via,
				a.totaltarifa=b.totaltarifa,
				a.tarifaxkilometro=b.tarifaxkilometro,
				a.opcion_3ejes=b.opcion_3ejes,
				a.ajuste_3_ejes_importacion=b.ajuste_3_ejes_importacion,
				a.cobro_x_kilometro=b.cobro_x_kilometro,
				a.aumentar_precio=b.aumentar_precio,
				a.monto_tres_ejes=b.monto_tres_ejes,
				a.tarifa_especial=b.tarifa_especial,
				a.usar_gam=B.usar_gam,
				a.monto_tres_ejes_seco=B.monto_tres_ejes_seco,
				a.pagar_peajes=b.pagar_peajes,
				a.opcion_rebajar_costo_3_ejes=b.opcion_rebajar_costo_3_ejes
				WHERE a.cliente='".$codigodestino."'
				  AND B.CODIGO IS NOT NULL";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updaterutasnuevasabc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updaterutasnuevasabc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updaterutasnuevasabc = false;
          $updaterutasnuevasabc_erro = $this->Db->ErrorMsg();
      } 

			if ($updaterutasnuevasabc ===false){
				return "Error #434 plano_predio_funciones.copiar_rutas_origen_destino en globales.php:".$updaterutasnuevasabc_erro .' '.$strsql;
			}
			return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function copiar_rutas_origen_destino ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_el_registro ------*/

function existe_el_registro($strsqll,$msj){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		 
      $nm_select = $strsqll; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existeelregistro = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existeelregistro[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existeelregistro = false;
          $existeelregistro_erro = $this->Db->ErrorMsg();
      } 

		if ($existeelregistro ===false){
			return array("error"=>"Error:".$existeelregistro_erro .' '.$strsqll);
		}
		if (count($existeelregistro )==0){
			return array("error"=>$msj);
		} else {
			return array("error"=>"");
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_el_registro ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function saida_oqc ------*/

function saida_oqc($txt)
    {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
        if ($this->ok)
        {
            if (isset($_SESSION['scriptcase']['saida_var']) && $_SESSION['scriptcase']['saida_var'])
            {
                $_SESSION['scriptcase']['saida_html'] .= $txt;
            }
            elseif ($this->browser)
            {
                echo $txt;
            }
            else
            {
                if (isset($_SESSION['scriptcase']['saida_word']) && $_SESSION['scriptcase']['saida_word'])
                {
                    $txt = str_replace("&nbsp;", " ", $txt);
                }
                if (!empty($this->charset_in))
                {
                    if (!NM_is_utf8($txt))
                    {
                        $txt = mb_convert_encoding($txt, "UTF-8", $this->charset_in);
                    }
                }
                fwrite($this->pointer, $txt);
            }
        }
    
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function saida_oqc ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cargar_apikeydegooglemaps ------*/

function cargar_apikeydegooglemaps(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT apikey
		  FROM gen_google
		  WHERE id=1";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataapikey = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataapikey[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataapikey = false;
          $dataapikey_erro = $this->Db->ErrorMsg();
      } 

		if ($dataapikey ===false){
			echo "<h2>Error</h2>:".$dataapikey_erro .' '.$strsql;
		}
		if (count($dataapikey )==0){
			echo "No hay apiKey de Google maps";
		} else{
		   $_SESSION['scriptcase']['googlemaps_api_key']=$dataapikey[0][0];
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cargar_apikeydegooglemaps ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_codeco ------*/

function enviar_codeco($elid,$tipo_movimiento,$r_referencia,$el_id_tir){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$eltipoapi=2;
	
	$in_out='';
	$obligar_twr=0;
	$eltwr='';
	$si_envio_edi=0;
	$eltipo='';
	$elcontenedor='';
    $strsql="SELECT IFNULL(b.envio_edi,0) envio_edi,fk_tipo_movimiento
			   FROM pre_movimientocontenedor a
			   LEFT JOIN gen_clientes b ON b.codigo=a.cliente
			  WHERE a.id='".$elid."' 
			  UNION ALL
				SELECT IFNULL(ba.envio_edi,0)+IFNULL(ca.envio_edi,0) envio_edi,
	                IF(1=a.gate,'011','011')
			  FROM pre_Tir_encabezado a
			  LEFT JOIN pre_movimientocontenedor b ON b.id=a.id_movimiento
			  LEFT JOIN gen_clientes ba ON ba.codigo=b.cliente
			  LEFT JOIN pre_chasis_despacho c ON c.id=a.id_despacho
			  LEFT JOIN gen_clientes ca ON ca.codigo=b.cliente
			 WHERE a.id='".$el_id_tir."'";
		
	$strsql="SELECT IFNULL(b.envio_edi,0) envio_edi,tipo_movimiento,IFNULL(obligar_twr,0) obligar_twr,IFNULL(a.twr,'') twr,a.contenedor,a.siglas,IFNULL(d.tipo,'') tipo,in_out
			   FROM v_pre_movimientocontenedor a
			   LEFT JOIN gen_clientes b ON b.codigo=a.cliente
			   LEFT JOIN pre_contenedor d ON d.siglas=a.siglas AND d.numero_contenedor=a.contenedor
			  WHERE a.id='".$elid."'  
			  UNION ALL
				SELECT IFNULL(ba.envio_edi,0)+IFNULL(ca.envio_edi,0) envio_edi,
	                IF(1=a.gate,'002','011'),IFNULL(ba.obligar_twr,IFNULL(ca.obligar_twr,0)) obligar_twr,
	                   IFNULL(cc.valor,IFNULL(aa.valor,'')) twr,a.contenedor,a.siglas,IFNULL(d.tipo,'') tipo,IF(1=a.gate,'IN','OUT')
			  FROM pre_Tir_encabezado a
			  LEFT JOIN pre_movimientocontenedor b ON b.id=a.id_movimiento
			  LEFT JOIN gen_clientes ba ON ba.codigo=b.cliente
			  LEFT JOIN pre_chasis_despacho c ON c.id=a.id_despacho
			  LEFT JOIN gen_clientes ca ON ca.codigo=b.cliente
			  LEFT JOIN pre_chasis_despacho_cualidades_relacion_otros cc ON cc.id_boleta=c.id AND cc.cualidad='TWR'
			  LEFT JOIN pre_tir_encabezado_cualidades aa ON aa.id_tir=a.id AND aa.cualidad='TWR'
			  LEFT JOIN pre_contenedor d ON d.siglas=a.siglas AND d.numero_contenedor=a.contenedor
			 WHERE a.id='".$el_id_tir."'";
		
    $strsqlxsssss="SELECT  IFNULL(ba.envio_edi,0)+IFNULL(ca.envio_edi,0) envio_edi,
	                IF(1=a.gate,'002','011') tipo_movimiento,
	                IF(c.id_asignacion IS NULL,IF(col.id_despacho IS NULL,'2','3'),'4') eltipoapi
			  FROM pre_Tir_encabezado a
			  LEFT JOIN pre_movimientocontenedor b ON b.id=a.id_movimiento
			  LEFT JOIN gen_clientes ba ON ba.codigo=b.cliente
			  LEFT JOIN pre_chasis_despacho c ON c.id=a.id_despacho
			  LEFT JOIN pre_colocaciones col ON col.id_despacho=c.id
			  LEFT JOIN gen_clientes ca ON ca.codigo=b.cliente
			 WHERE a.id='".$el_id_tir."'
			 ";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $verenvio_edi = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $verenvio_edi[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $verenvio_edi = false;
          $verenvio_edi_erro = $this->Db->ErrorMsg();
      } 

	   if ($verenvio_edi ===false){
		   return array("error"=>"Error:".$verenvio_edi_erro .$strsql);
	   } else {
		   if (count($verenvio_edi )!=0){
			   $si_envio_edi=$verenvio_edi[0][0];
			   $tipo_movimiento=$verenvio_edi[0][1];
			   $obligar_twr=$verenvio_edi[0][2];
			   $eltwr=$verenvio_edi[0][3];
			   $elcontenedor=$verenvio_edi[0][4].$verenvio_edi[0][5];
			   $eltipo=$verenvio_edi[0][6];
			   $in_out=$verenvio_edi[0][7];
		   }
	   }
	   if ($si_envio_edi<1){
		   return array("error"=>"");
	   }
		$msj=$this->verificar_codeco_twr($elid,$tipo_movimiento,$r_referencia,$el_id_tir,$obligar_twr,$eltwr,$elcontenedor,$eltipo);
		if (''<>$msj['error']){
			return array("error"=>$msj['error']);
		}
		if (1==$msj['noregistrar']){
			return array("error"=>"");
		}
		
	    $inout='';
	    if ('011'==$tipo_movimiento or 'OUT'==$in_out){
			$inout='OUT';
			if (0==$elid){
				$elid=$el_id_tir;
				$eltipoapi=3;
			}
		}
		if ('002'==$tipo_movimiento or '022'==$tipo_movimiento or '014'==$tipo_movimiento or '019'==$tipo_movimiento or 'IN'==$in_out){
			$inout='IN';
		}
		if ('IN'==$inout){
			$elurl="http://173.248.132.37:5002/api/v1/GateIn/".$elid;
		}
	    if ('OUT'==$inout){
			$elurl="http://173.248.132.37:5002/api/v1/GateOut/".$elid.'/'.$eltipoapi;
		}
	    if (''==$inout){
			return array("error"=>"");
		}
		$parms = array(		);
		$parms = http_build_query($parms);
		$response = sc_webservice("curl", $elurl, 5002, "POST", $parms, array(CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER=>false), 30);
		$respuesta=json_decode($response);
	    $msjrespuesta=str_replace("'","",$respuesta->mensajeDeRespuesta);
		if ($respuesta->procesoConExito){
			$elindicador=1;
			$strsql="insert into pre_movimientocontenedor_codeco 
						(id,respuesta,indicador,fecha,usuario,referencia,tipo_movimiento,id_tir) values 
						('".$elid."','".$msjrespuesta."','".$elindicador."','".date('Y-m-d H:i:s')."',
						'".$_SESSION['grant']['usr_login']."','".$r_referencia."','".$tipo_movimiento."','".$el_id_tir."')";
		
		} else {
			$elindicador=2;
			  $strsql="INSERT INTO pre_errores_envio_codeco (id_tir,el_id,tipo_movimiento,referencia,elerror,fechahora) VALUES 
						 ('".$el_id_tir."','".$elid."','".$tipo_movimiento."','".rtrim($r_referencia)."-3','".$msjrespuesta."','".date('Y-m-d H:i:s')."')";
		}
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsertcodeco = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsertcodeco[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsertcodeco = false;
          $datainsertcodeco_erro = $this->Db->ErrorMsg();
      } 

	    if ($datainsertcodeco ===false){
			return array("error"=>"Error:".$datainsertcodeco_erro .' '.$strsql);
		}
	  return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_codeco ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_codeco_twr ------*/

function verificar_codeco_twr($elid,$tipo_movimiento,$r_referencia,$el_id_tir,$obligar_twr,$eltwr,$elcontenedor,$eltipo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $elerror='';
		if (1==$obligar_twr and ''==$eltwr){
			$elerror.=' falta el twr ';
		}
		if (''==$eltipo){
			$elerror.=' No se encontró el Tipo de Contenedor ISO para el CNTR:'.$elcontenedor;
		}
	  if (''==$elerror){
		  return array("error"=>'',"noregistrar"=>0);
	  }
	  $strsql="INSERT INTO pre_errores_envio_codeco (id_tir,el_id,tipo_movimiento,referencia,elerror,fechahora) VALUES 
	         ('".$el_id_tir."','".$elid."','".$tipo_movimiento."','".$r_referencia."','".$elerror."','".date('Y-m-d H:i:s')."')";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $inselerrorcodeco = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $inselerrorcodeco[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $inselerrorcodeco = false;
          $inselerrorcodeco_erro = $this->Db->ErrorMsg();
      } 

	  if ($inselerrorcodeco ===false){
		  return array("error"=>"Error #201 verificar_codeco_twr ".$inselerrorcodeco_erro .' '.$strsql,"noregistrar"=>0);
	  }
	  return array("error"=>'',"noregistrar"=>1);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_codeco_twr ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function sepuede_hacer_despacho_directo_del_contenedor ------*/

function sepuede_hacer_despacho_directo_del_contenedor($Hsiglas,$Hcontenedor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
				$strsql="SELECT siglas,contenedor,referencia FROM (
				SELECT 
					id,
					siglas,
					contenedor,
					fecha,
					chofer,
					chasis,
					usuario,
					vehiculo,
					rtv_vehiculo,
					observaciones,
					cliente,
					nombre_cliente,
					destino,
					nombre_destino,
					ruta_destino,
					nombre,
					semana,
					vacio,
					usuario_modifica,
					fecha_modificacion,
					fecha_creacion,
					rutanacional,
					litros_diesel,
					litros_genset,
					dolares_seguros,
					bolsa_documentos,
					marchamo_grant,
					elr,
					rtv_chasis,
					fecha_salida_real,
					fecha_ingreso,
					chasis_original,
					nombre_chofer,
				   operacion_viejo,
				   id_asignacion,
				   con_asignacion,
				  tipo_mov,
				  nombre_tipo_mov,
				material_peligroso,
				con_retorno,
				dias,
				ubicacion,
				booking,
				retorno_vacio,
				'Inventario para retornos' referencia
				FROM
					v_pre_chasis_despacho 
				WHERE siglas='$Hsiglas'
				  AND contenedor='$Hcontenedor'
				  AND con_retorno='NO'
				  AND via<>1
				  and tipo_mov IN ('I','1','F','B')
				UNION ALL
				SELECT 
					id,
					siglas,
					contenedor,
					fecha,
					chofer,
					chasis,
					usuario,
					vehiculo,
					rtv_vehiculo,
					observaciones,
					cliente,
					nombre_cliente,
					destino,
					nombre_destino,
					ruta_destino,
					nombre,
					semana,
					vacio,
					usuario_modifica,
					fecha_modificacion,
					fecha_creacion,
					rutanacional,
					litros_diesel,
					litros_genset,
					dolares_seguros,
					bolsa_documentos,
					marchamo_grant,
					elr,
					rtv_chasis,
					fecha_salida_real,
					fecha_ingreso,
					chasis_original,
					nombre_chofer,
				   operacion_viejo,
				   id_asignacion,
				   con_asignacion,
				  tipo_mov,
				  nombre_tipo_mov,
				material_peligroso,
				con_retorno,
				dias,
				ubicacion,
				booking,
				retorno_vacio,
				'Inventario RoundTrip para retornos' referencia
				FROM v_pre_chasis_despacho_retorno_roundtrip_sin_filtro
				WHERE -1=id_retorno  
				  AND siglas='$Hsiglas'
				  AND contenedor='$Hcontenedor'
				  AND tipo_mov IN ('I','1','F','B') AND filtrar_en_retorno_round_trip=1 AND eliminado=0
				UNION ALL
				SELECT 
					id,
					siglas,
					contenedor,
					fecha,
					chofer,
					chasis,
					usuario,
					vehiculo,
					rtv_vehiculo,
					observaciones,
					cliente,
					nombre_cliente,
					destino,
					nombre_destino,
					ruta_destino,
					nombre,
					semana,
					vacio,
					usuario_modifica,
					fecha_modificacion,
					fecha_creacion,
					rutanacional,
					litros_diesel,
					litros_genset,
					dolares_seguros,
					bolsa_documentos,
					marchamo_grant,
					elr,
					rtv_chasis,
					fecha_salida_real,
					fecha_ingreso,
					chasis_original,
					nombre_chofer,
				   	operacion_viejo,
				   	id_asignacion,
				   	con_asignacion,
				  	tipo_mov,
				  	nombre_tipo_mov,
					material_peligroso,
					con_retorno,
					dias,
					ubicacion,
					booking,
					retorno_vacio,
					'Inventario colocado para retornos' referencia
				FROM
					v_pre_chasis_despacho_inv_colocado
				WHERE siglas='$Hsiglas'
				  AND contenedor='$Hcontenedor'
				  AND con_retorno='CO'
				  AND via<>1
				  and tipo_mov IN ('I','1','F','B')
				) a
				UNION ALL
				SELECT siglas,contenedor,'Colocaciones' referencia
				  FROM pre_Colocaciones
				 WHERE siglas='$Hsiglas'
				   AND contenedor='$Hcontenedor'
				   AND condicion_actual=1
				   ";
       
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexisteinvcolo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexisteinvcolo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisteinvcolo = false;
          $dataexisteinvcolo_erro = $this->Db->ErrorMsg();
      } 

	  if ($dataexisteinvcolo ===false){
		 return array("error"=>"Error #177 Se puede hacer despacho directo del contenedor:".$dataexisteinvcolo_error .' '.$strsql); 
	  } else {
		  if (count($dataexisteinvcolo )==0){
			  return array("error"=>'',"continuar"=>'SI');
		  } else {
			  return array("error"=>'',"continuar"=>'NO',
						 "motivo"=>' No puede hacer despacho porque el contenedor esta en:'.$dataexisteinvcolo[0][2]);
		  }
	  }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function sepuede_hacer_despacho_directo_del_contenedor ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function registrar_click ------*/

function registrar_click($itemmenu){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$usuario=$_SESSION['grant']['usr_login'];
		$itemmenu=str_replace("'","|",$itemmenu);
	    $strsql="select usuario
		          from sec_menu_clicks
				 where usuario='".$usuario."'
				   and id_item_menu='".$itemmenu."'";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existeitem = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existeitem[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existeitem = false;
          $existeitem_erro = $this->Db->ErrorMsg();
      } 

	    if ($existeitem ===false){
			echo "Error:".$existeitem_erro .' '.$strsql;
			return;
		}
	    if (count($existeitem )>0){
				$strsql="update sec_menu_clicks set cantidad=cantidad+1,descripcion='".date('Y-m-d h:i:s')."'
				 where usuario='".$usuario."'
				   and id_item_menu='".$itemmenu."'";
		} else {
		$strsql="insert into sec_menu_clicks 
		             (usuario,id_item_menu,cantidad,descripcion) values 
					 ('".$usuario."','".$itemmenu."',1,'".date('Y-m-d h:i:s')."')";
		}
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insdata = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insdata[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insdata = false;
          $insdata_erro = $this->Db->ErrorMsg();
      } 

		if ($insdata ===false){
		  echo "Error:".$insdata_erro .' '.$strsql;	
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function registrar_click ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_mensaje_whatsapp ------*/

function enviar_mensaje_whatsapp($celular,$mensaje){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$chatapi = sc_call_api('envio_whatsapp', '');
		$chatapi->sendMessage([
		   'phone' => $celular,
		   'body' => $mensaje
		]);

	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_mensaje_whatsapp ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_mensajes_whatsapp ------*/

function traer_mensajes_whatsapp($celular){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$chatapi = sc_call_api('envio_whatsapp', '');
		$data = (array) $chatapi->getMessages();
		$chatId = $celular.'@c.us';
		$chist_messages = '';
		$i=0;
		foreach($data['messages'] as $message){ 
			$array = json_decode(json_encode($message), True);
			if($array['chatId'] == rtrim($chatId)){

				$i++;
				if ($i>1){
					$sender = ($array['fromMe'] == true) ? 
							  $celular : 
							  'Respuesta:'.$array['senderName']." (".$array['author'].")";
					$chist_messages .= $sender;
					$chist_messages.=  "Mensaje: ".$array['body']."";
					$chist_messages .=  ": ".date('Y-m-d H:i:s', $array['time'])."\n\n";
				}
			}
	       }
		return $chist_messages;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_mensajes_whatsapp ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function diferencia_horas ------*/

function diferencia_horas($lafecha,$fhoy){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$lashoras=$this->nm_data->Dif_Horas($fhoy, "yyyy-mm-dd hh:ii:ss", $lafecha , "yyyy-mm-dd hh:ii:ss");
	return $lashoras;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function diferencia_horas ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function act_cedula_hacienda ------*/

function act_cedula_hacienda($cedula){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $strsql="insert into hacienda.sic0001ff 
				SELECT a.*
				  FROM hacienda.sic0001f a
				  LEFT JOIN hacienda.sic0001ff b ON a.cedula=b.cedula
				 WHERE a.cedula='".$cedula."' AND b.cedula IS NULL";  
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $c_dataactcedula = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $c_dataactcedula[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $c_dataactcedula = false;
          $c_dataactcedula_erro = $this->Db->ErrorMsg();
      } 

	if ($c_dataactcedula ===false){
		echo $c_dataactcedula_erro .' '.$strsql;
	 }
	
	$strsql="INSERT INTO pre_chofer_t00
			SELECT a.cedula,CONCAT(a.nombre1,' ',a.apellido1,' ',a.apellido2) nombre
			  FROM hacienda.sic0001ff a
			  LEFT JOIN pre_chofer_t00 b ON a.cedula=b.cedula
			 WHERE a.cedula='".$cedula."' and b.cedula IS NULL";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $c_Ndataactcedula = array();
      $c_ndataactcedula = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $c_Ndataactcedula[$SCy] [$SCx] = $SCrx->fields[$SCx];
                        $c_ndataactcedula[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $c_Ndataactcedula = false;
          $c_Ndataactcedula_erro = $this->Db->ErrorMsg();
          $c_ndataactcedula = false;
          $c_ndataactcedula_erro = $this->Db->ErrorMsg();
      } 

	if ($c_ndataactcedula ===false){
		echo $c_ndataactcedula_erro .' '.$strsql;
	 }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function act_cedula_hacienda ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ultimo_registro_grant ------*/

function ultimo_registro_grant(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		if (1==1){
			$strsql="select last_insert_id()";
		} else {
			
			$strsql="SELECT SCOPE_IDENTITY()";
		}
	  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ultimoregistroinsertado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ultimoregistroinsertado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ultimoregistroinsertado = false;
          $ultimoregistroinsertado_erro = $this->Db->ErrorMsg();
      } 

	 if ($ultimoregistroinsertado ===false){
		 return array("error"=>"Error".$ultimoregistroinsertado_erro .' '.$strsql);
	  } else {
		 return array("error"=>'',
					  "id"=>$ultimoregistroinsertado[0][0]);
	  }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ultimo_registro_grant ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_estado_chasis ------*/

function verificar_estado_chasis($c_chasis){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		if ($c_chasis=='500'){
			return '';
		}
			$strsql=" SELECT a.estado,concat(a.estado,'-',IFNULL(b.descripcion,'Nulo')) descripcion
  						FROM pre_Chasis a
    					LEFT JOIN pre_chasis_estados b ON b.id=a.estado
					   where a.codigo='".$c_chasis."'";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadelchasisestado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadelchasisestado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadelchasisestado = false;
          $datadelchasisestado_erro = $this->Db->ErrorMsg();
      } 

			if ($datadelchasisestado ===false){
				return "Error:".$datadelchasisestado_erro .' '.$strsql;
			}
		    if (count($datadelchasisestado )==0){
				return "Error codigo '".$c_chasis."' de chasis no existe";
			}
		    if (1<>$datadelchasisestado[0][0]){
				return "Error en el estado del chasis, estado actual es:".$datadelchasisestado[0][1];
			}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_estado_chasis ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verifica_chasis_placa ------*/

function verifica_chasis_placa($elchasis,$laplaca){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  if ('999'==$elchasis and 'T00'<>$laplaca){
		  return 'El chasis 999 solo se puede usar con la placa T00';
	  }
	  if ('999'<>$elchasis and 'T00'==$laplaca){
		  return 'La placa T00 solo se puede usar con el chasis 999';
	  }
	
	return '';
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verifica_chasis_placa ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_crea_contenedor ------*/

function existe_crea_contenedor($oqc_siglas,$oqc_contenedor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$elmsg=verificar_digito_en_contenedor($oqc_siglas,$oqc_contenedor,'NO');
	if (''!=$elmsg){
	  return $elmsg;
	}
	
		$strsql="SELECT siglas,numero_contenedor
				   FROM pre_contenedor
				  where siglas='".$oqc_siglas."'
					and numero_contenedor='".$oqc_contenedor."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacprecontexiste = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacprecontexiste[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacprecontexiste = false;
          $datacprecontexiste_erro = $this->Db->ErrorMsg();
      } 

		if ($datacprecontexiste ===false){
			return $datacprecontexiste_erro .' '.$strsql;
		} else {
		  if (count($datacprecontexiste )==0){
			  $strsql="insert into pre_contenedor (id,siglas,numero_contenedor) values 
				 (0,'$oqc_siglas','$oqc_contenedor')";
			   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insprecontexiste = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insprecontexiste[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insprecontexiste = false;
          $insprecontexiste_erro = $this->Db->ErrorMsg();
      } 

			  if ($insprecontexiste ===false){
				 return "Error al ingresar contenedor:".$oqc_siglas.'-'.$oqc_contenedor.' '.
				   $insprecontexiste_erro .'<br>';
			  }
		  }
		}
	return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_crea_contenedor ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_fecha_despacho ------*/

function verificar_fecha_despacho($cFecha,$cCliente){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT dias_maximos_dif_fecha_despacho,
			   DATEDIFF(NOW(),date('".$cFecha."')) DIF1,
			   DATEDIFF(date('".$cFecha."'),NOW()) DIF2
		  FROM gen_clientes
		 WHERE codigo='".$cCliente."'";

		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadiascliente = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadiascliente[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadiascliente = false;
          $datadiascliente_erro = $this->Db->ErrorMsg();
      } 

		if ($datadiascliente ===false){
			
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= "Error:".$datadiascliente_erro .' '.$strsql;
;
			return;
		} else {
		  if (count($datadiascliente )==0){
			 
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= "Error, no hay datos de cliente para determinar los dias de despacho cliente:".$cCliente;
;
			 return;
		  } else {
			 if ($datadiascliente[0][1]>$datadiascliente[0][0]){
				
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= "Error no puede hacer un despacho con ".$datadiascliente[0][0].
								 ' de diferencia con la fecha real cliente:'.$cCliente;
;
				return;
			}
			 if (1==2){
				 
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= "Error en la fecha de despacho, no puede ser en fechas futuras cliente:".$cCliente;
;
				 return;
			 }
		  }
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_fecha_despacho ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function repara_material_peligroso_boleta ------*/

function repara_material_peligroso_boleta($el_id_boleta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		if (0==floatval($el_id_boleta)){
			$el_id_boleta=0;
		}
	  $strsql="select materialpeligroso
	            from pre_chasis_despacho
			   where id='".$el_id_boleta."'";
		
	$strsql="select a.materialpeligroso,ifnull(b.cualidad,'')
		from pre_chasis_despacho a
		left join pre_chasis_despacho_cualidades_relacion b on b.id_boleta=a.id and b.cualidad='MATERIALPELIGROSO'
	   where id='".$el_id_boleta."'";

	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $pasouno = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $pasouno[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $pasouno = false;
          $pasouno_erro = $this->Db->ErrorMsg();
      } 

      if ($pasouno ===false){
		 return "Error #831 repara_material_peligroso_boleta :".$pasouno_erro .' '.$strsql;
	  }
	  if (count($pasouno )==0){
		  return '';
	  }
		$borrar=false;
		$insertar=false;
	  if (1==$pasouno[0][0] and ''<>$pasouno[0][1]){
		  return '';
	  }
	  if (0==$pasouno[0][0]){
		  $borrar=true;
	  }
	  if (1==$pasouno[0][0] and ''==$pasouno[0][1]){
		  $insertar=true;
	  }
	  if ($borrar){
			  $strsql="delete from pre_chasis_despacho_cualidades_relacion
						where id_boleta='".$el_id_boleta."'
						  and cualidad='MATERIALPELIGROSO'";
			   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $pasodos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $pasodos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $pasodos = false;
          $pasodos_erro = $this->Db->ErrorMsg();
      } 

			  if ($pasodos ===false){
				  return 'Error #841 repara_material_peligroso_boleta:'.$pasodos_erro .' '.$strsql;
				}
	   }
	   if ($insertar){   
			  $strsql="insert into pre_chasis_despacho_cualidades_relacion (id_boleta,cualidad) values 
								('".$el_id_boleta."','MATERIALPELIGROSO')";
			   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $pasotres = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $pasotres[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $pasotres = false;
          $pasotres_erro = $this->Db->ErrorMsg();
      } 

			  if ($pasotres ===false){
				  return "Error #847 repara_material_peligroso_boleta :".$pasotres_erro .' '.$strsql;
			  }
	   }
	  return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function repara_material_peligroso_boleta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function repara_material_peligroso ------*/

function repara_material_peligroso($id_movimiento, $el_id_colocacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			$strsql="SELECT material_peligroso
			   FROM pre_colocaciones
			  WHERE colocacion='".$el_id_colocacion."'
				AND 1=material_peligroso";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacolocaxyz = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacolocaxyz[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacolocaxyz = false;
          $datacolocaxyz_erro = $this->Db->ErrorMsg();
      } 

			if ($datacolocaxyz ===false){
			   return "Error:".$datacolocaxyz_erro ;	
			} else {
				if (count($datacolocaxyz )==0){
					return "";
				}
			}

			if (1==$datacolocaxyz[0][0]){
				$strsql="insert into pre_chasis_despacho_cualidades_relacion (id_boleta,cualidad) 
						  values ('".$id_movimiento."','MATERIALPELIGROSO')";
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $delcuamatp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $delcuamatp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $delcuamatp = false;
          $delcuamatp_erro = $this->Db->ErrorMsg();
      } 

			}
			return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function repara_material_peligroso ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cambio_tarifa_particular_pre_rutas ------*/

function cambio_tarifa_particular_pre_rutas($el_cliente,$el_desde,$el_hasta,$km_desde,$km_hasta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $el_resultado='';
		$strsql="update pre_chasis_despacho a
						,pre_rutas b set a.flete_particular =b.flete_particular
				 where a.cliente=b.cliente
				   and b.esnueva=0
				   and a.ruta_destino=b.codigo
				   and date(a.fecha) between '".$el_desde."' and '".$el_hasta."'
				   and a.cliente='".$el_cliente."'  AND a.liquidacion IS NULL
				   and b.kilometros>=".$km_desde." and b.kilometros<=".$km_hasta;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddespachos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddespachos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddespachos = false;
          $upddespachos_erro = $this->Db->ErrorMsg();
      } 

		if ($upddespachos ===false){
			$el_resultado= "<h1>Error:</h1>".$upddespachos_erro .' <br>'.$strsql;
		} else {
			$strsql="update pre_movimientocontenedor a
							,pre_rutas b set a.flete_particular =b.flete_particular
					 where a.cliente=b.cliente
					   and b.esnueva=0
					   and a.ruta_destino=b.codigo
					   and date(a.fecha_hora_movimiento) between '".$el_desde."' and '".$el_hasta."'
					   and a.cliente='".$el_cliente."'  AND a.liquidacion IS NULL
					   and b.kilometros>=".$km_desde." and b.kilometros<=".$km_hasta;
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updmovimientos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updmovimientos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updmovimientos = false;
          $updmovimientos_erro = $this->Db->ErrorMsg();
      } 

			if ($updmovimientos ===false){
				$el_resultado= "<h1>Error:</h1>".$updmovimientos_erro .' <br>'.$strsql;
			} else {
				$el_resultado='';
			  
			}
		}
	
	return $el_resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cambio_tarifa_particular_pre_rutas ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cambio_tarifa_casa_pre_rutas ------*/

function cambio_tarifa_casa_pre_rutas($el_cliente,$el_desde,$el_hasta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $el_resultado='';
		$strsql="update pre_chasis_despacho a
						,pre_rutas b set a.flete_casa =b.flete_casa
				 where a.cliente=b.cliente
				   and a.ruta_destino=b.codigo
				   and date(a.fecha) between '".$el_desde."' and '".$el_hasta."'
				   and a.cliente='".$el_cliente."'  AND a.liquidacion IS NULL";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddespachos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddespachos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddespachos = false;
          $upddespachos_erro = $this->Db->ErrorMsg();
      } 

		if ($upddespachos ===false){
			$el_resultado= "<h1>Error:</h1>".$upddespachos_erro .' <br>'.$strsql;
		} else {
			$strsql="update pre_movimientocontenedor a
							,pre_rutas b set a.flete_casa =b.flete_casa
					 where a.cliente=b.cliente
					   and a.ruta_destino=b.codigo
					   and date(a.fecha_hora_movimiento) between '".$el_desde."' and '".$el_hasta."'
					   and a.cliente='".$el_cliente."'  AND a.liquidacion IS NULL";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updmovimientos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updmovimientos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updmovimientos = false;
          $updmovimientos_erro = $this->Db->ErrorMsg();
      } 

			if ($updmovimientos ===false){
				$el_resultado= "<h1>Error:</h1>".$updmovimientos_erro .' <br>'.$strsql;
			} else {
				$el_resultado='';
			  
			}
		}
	
	return $el_resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cambio_tarifa_casa_pre_rutas ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function crud_solo_admin ------*/

function crud_solo_admin(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	if (1==$_SESSION['grant']['usr_priv_admin']){
		$this->nmgp_botoes["delete"] = 'on';;
		$this->nmgp_botoes["update"] = 'on';;
		$this->nmgp_botoes["new"] = 'on';;
		$this->nmgp_botoes["insert"] = 'on';;
	} else {
		$this->nmgp_botoes["delete"] = 'off';;
		$this->nmgp_botoes["update"] = 'off';;
		$this->nmgp_botoes["new"] = 'off';;
		$this->nmgp_botoes["insert"] = 'on';;
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function crud_solo_admin ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function strfin_tir_tipo_mov ------*/

function strfin_tir_tipo_mov(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strfin_tir_tipo_mov='<select class="form-control" id="id_tir_tipo_movimiento">';
	$strfin_tir_tipo_mov.='<option>A</option>';
	$strfin_tir_tipo_mov.='<option>B</option>';
		$strsql=" SELECT id,CONCAT(resumen,' ',descripcion)
					FROM pre_tir_encabezado_tipo_movimiento
				   ORDER BY orden";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($pre_tir_datatmov = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $pre_tir_datatmov = false;
          $pre_tir_datatmov_erro = $this->Db->ErrorMsg();
      } 

		if ($pre_tir_datatmov ===false){
			echo "<h1>Error:</h1><h3>".$pre_tir_datatmov_erro .'</h3><h5>'.$strsql.'</h5>';
		} else {
			$strfin_tir_tipo_mov='<select class="form-control puedomodificar modificar" id="id_tir_tipo_movimiento">';
			while (!$pre_tir_datatmov->EOF){
				$strfin_tir_tipo_mov.="<option value='".$pre_tir_datatmov->fields[0]."'>".
				                         $pre_tir_datatmov->fields[1]."</option>";
				$pre_tir_datatmov->MoveNext();
			}
			$pre_tir_datatmov->Close();
			$strfin_tir_tipo_mov.="</select>";
		}
	return $strfin_tir_tipo_mov;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function strfin_tir_tipo_mov ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function crear_tir ------*/

function crear_tir($tipo_movimiento,$elid,$gate,$numero_tir,$cod_chasis,$placa_cabezal,$chofer,$propietario){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$elselect='';
    $c_old_gate=$gate;
	$chofer=str_replace("'",'',$chofer);
	if ('Boleta'==$tipo_movimiento){
		$resultado=$this->traer_tir_out($elid);
		if (''==$resultado['error']){
			$numero_tir=$resultado['numero_tir'];
			if (1==$resultado['gate']){
				$gate=2;
			}
			if (2==$resultado['gate']){
				$gate=1;
			}
			$resultado=$this->verificar_tir($numero_tir,$gate);
			if (''==$resultado['error']){
				$numero_tir=$resultado['numero_tir'];
			} else {
				$datos=array("error"=>$resultado['error'].' #38 $this->crear_tir()',
							 "id_tir"=>-1);
				return $datos;
			}
		} else {
			$datos=array("error"=>$resultado['error'].' #220 $this->crear_tir()',
						 "id_tir"=>-1);
			return $datos;
		}
	}
		
if ('oquiros'==$_SESSION['grant']['usr_login']){
}
		
	if ('zona_franca'==$tipo_movimiento and 2==$gate){
		
		$resultado=$this->traer_ultimo_tir_in_zona_franca($propietario);

		if (''==$resultado['error']){
			if(0!=$resultado['numero_tir']){
				$numero_tir=$resultado['numero_tir'];
			}
		} else {
			$datos=array("error"=>$resultado['error'].' #230 $this->crear_tir()',
						 "id_tir"=>-1);
			return $datos;
		}
	}

	if (0==$numero_tir){
	    $numero_tir=$this->traer_consecutivo('001','001','13','17');
	}
	if ('Movimiento'==$tipo_movimiento){
		$otrowheremov='';
		if (isset($_SESSION['booking_mov'])){
			$otrowheremov=" and ad.booking='".$_SESSION['booking_mov']."'";
			unset($_SESSION['booking_mov']);
		}
		$propietario=str_replace("'",'',$propietario);
		$id_movimiento=$elid;
		$id_despacho='null';
	  $elselect="SELECT '$numero_tir',
	  				'".date('Y-m-d H:i:s')."' fecha_hora_movimiento,
					'".$_SESSION['grant']['usr_login']."',
					NULL usuario_modifica,
					NULL fecha_modifica,
	                e.tipo_mov_tir tipo_movimiento,
					$id_movimiento,
					$id_despacho,
					a.fk_numero_contenedor,
					a.fk_siglas_contenedor,
					c.medida tamano,
					a.fk_chasis,
					$gate,
					if(isnull(a.vacio),0,a.vacio),
					if(ifnull(ad.booking_cliente,'')<>'',ad.booking_cliente,ad.booking),
					LEFT(CONCAT(RTRIM(ad.marchamo_cargado),'/',RTRIM(ad.marchamo_vacio)),50) marchamo,
					d.fkcodigopropietario transportista,
					a.fk_chofer,
					b.placa placa_chasis,
					a.fk_vehiculo,
					'' observaciones,
					b.genset,
					0 temperatura_actual,
					'".$_SESSION['grant']['predio_default']."',
					0 temperatura_retorno,
					0 setpoint,
					0 ventilacion,
					ad.requiere_conexion
	  FROM pre_movimientocontenedor a
	  LEFT JOIN pre_chasis b ON a.fk_chasis=b.codigo
	  LEFT JOIN pre_tipo_chasis c ON c.codigo=b.fk_id_tipo_chasis
	  LEFT JOIN pre_asignaciondetalle ad 
		   ON ad.siglas=a.Fk_siglas_contenedor AND ad.contenedor=a.Fk_numero_contenedor 
		      AND ad.viaje=a.Fk_Viaje ".$otrowheremov." and ad.estado <> 11 
	  LEFT JOIN pre_choferp d ON d.codigo=a.fk_chofer
	  LEFT JOIN pre_movimiento e ON e.codigo=fk_tipo_movimiento
	  where a.id=$id_movimiento ";
	}
	if ('Boleta'==$tipo_movimiento){
		$propietario=str_replace("'",'',$propietario);
		$id_movimiento='null';
		$id_despacho=$elid;
		$elselect="SELECT '$numero_tir',
							'".date('Y-m-d H:i:s')."' fecha,
							'".$_SESSION['grant']['usr_login']."',
							NULL,
							NULL,
							a.tipo_mov_tir tipo_movimiento,
							$id_movimiento,
							$id_despacho,
							a.contenedor,
							a.siglas,
							a.medida tamano,
							'$cod_chasis',
							'$gate',
							if(isnull(a.id_vacio),0,a.id_vacio),
							a.booking,
							LEFT(CONCAT(RTRIM(a.marchamo_cargado),'/',RTRIM(a.marchamo_vacio)),50) 'marchamo',
							'$propietario',
							'$chofer',
							(select placa from pre_chasis where codigo='$cod_chasis'),
							'$placa_cabezal',
							'' observaciones,
							a.genset,
							0 temperatura_actual,
							'".$_SESSION['grant']['predio_default']."',
							0 temperatura_retorno,
							setpoint,
							ventilacion,
							a.requiere_conexion
  			FROM v_pre_chasis_despacho a
 			WHERE a.id=$id_despacho";
		
		$elselect="SELECT '$numero_tir',
							'".date('Y-m-d H:i:s')."' fecha,
							'".$_SESSION['grant']['usr_login']."',
							NULL,
							NULL,
							a.tipo_mov_tir tipo_movimiento,
							$id_movimiento,
							$id_despacho,
							a.contenedor,
							a.siglas,
							a.medida tamano,
							'$cod_chasis',
							'$gate',
							if(isnull(a.id_vacio),0,a.id_vacio),
							a.booking,
							LEFT(CONCAT(RTRIM(a.marchamo_cargado),'/',RTRIM(a.marchamo_vacio)),50) 'marchamo',
							'$propietario',
							'$chofer',
							b.placa,
							'$placa_cabezal',
							'' observaciones,
							a.genset,
							0 temperatura_actual,
							'".$_SESSION['grant']['predio_default']."',
							0 temperatura_retorno,
							setpoint,
							ventilacion,
							a.requiere_conexion
  			FROM v_pre_chasis_despacho a
			  left join pre_chasis b on b.codigo='".$cod_chasis."'
 			WHERE a.id=$id_despacho";
	}
	if (''==$elselect and 'zona_franca'==$tipo_movimiento){
		$elselect=str_replace("numero_tir:",$numero_tir,$propietario);
	}
	$strsql="insert into pre_tir_encabezado      	
	          (numero_tir,fecha,usuario_crea,usuario_modifica,fecha_modifica,tipo_movimiento,id_movimiento,id_despacho,
	           contenedor,siglas,tamano,chasis,gate,vacio,booking,marchamo,transportista,chofer,placa_chasis,placa_cabezal,
	           observaciones,genset,temperatura_actual,predio,temperatura_retorno,setpoint,ventilacion,requiere_conexion) ".$elselect;

	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insert_tir = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insert_tir[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insert_tir = false;
          $insert_tir_erro = $this->Db->ErrorMsg();
      } 

	if ($insert_tir ===false){
			$datos=array("error"=>"Error:".$insert_tir_erro .' '.$strsql.' #95 $this->crear_tir()',
						 "id_tir"=>-1);
			return $datos;
	}
	$strsql="select last_insert_id()";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $elid_last_insert = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $elid_last_insert[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $elid_last_insert = false;
          $elid_last_insert_erro = $this->Db->ErrorMsg();
      } 

	if ($elid_last_insert ===false){
		$datos=array("error"=>"Error:".$elid_last_insert_erro .' '.$strsql.' #102 $this->crear_tir()',
					 "id_tir"=>-1);
		return $datos;
	} else {
	  if (count($elid_last_insert )==0){
		$datos=array("error"=>"Error count(elid last insert)==0".' #107 $this->crear_tir()',
					 "id_tir"=>-1);
		return $datos;
	  } else {
		$msj=$this->act_pre_chasis_tir_encabezado($elid_last_insert[0][0],$gate,'globales.php.crear_tir #1150');
		if (''<>$msj['error']){
			return $msj;
		}
		$datos=array("error"=>'',
					 "id_tir"=>$elid_last_insert[0][0]);
		return $datos;
	  }
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function crear_tir ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function act_pre_chasis_tir_encabezado ------*/

function act_pre_chasis_tir_encabezado($id_del_tir,$gate,$j_aplicacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		  if (2==$gate or 1==$gate){
			if (2==$gate){
			$strsql="update pre_chasis a,pre_tir_encabezado n SET 
						a.predio='999',
						a.condicion=5,
						a.aplicacion_log='".$j_aplicacion."',
						a.usuario_log=n.usuario_crea,
						a.siglas=n.siglas,
						a.contenedor=n.contenedor,
						a.id_boleta_despacho=n.id_despacho,
						a.placa_vehiculo=n.placa_cabezal,
						a.fecha_para_dias_fuera=n.fecha,
						a.numero_tir_salida=n.numero_tir
				where n.id='".$id_del_tir."' and a.codigo=n.chasis limit 1";
			} else {
			$strsql="update pre_chasis a,pre_tir_encabezado n SET 
						a.aplicacion_log='".$j_aplicacion."',
						a.usuario_log=n.usuario_crea,
						a.siglas=n.siglas,
						a.contenedor=n.contenedor,
						a.id_boleta_despacho=n.id_despacho,
						a.placa_vehiculo=n.placa_cabezal,
						a.fecha_para_dias_fuera=null,
						a.numero_tir_entrada=n.numero_tir
				where n.id='".$id_del_tir."' and a.codigo=n.chasis limit 1";
			}
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $actactchasispre = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $actactchasispre[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $actactchasispre = false;
          $actactchasispre_erro = $this->Db->ErrorMsg();
      } 

			if ($actactchasispre ===false){
				return array("error"=>"Error #1188 act_pre_chasis_tir:".$actactchasispre_erro .' '.$strsql);
			}
		}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function act_pre_chasis_tir_encabezado ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_ultimo_tir_in_zona_franca ------*/

function traer_ultimo_tir_in_zona_franca($elstrsql){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			 
      $nm_select = $elstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataulttirzona = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataulttirzona[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataulttirzona = false;
          $dataulttirzona_erro = $this->Db->ErrorMsg();
      } 

			if ($dataulttirzona ===false){
				return array("error"=>"Error:".$dataulttirzona_erro .' '.$elstrsql);
			}
			$contenedor=$dataulttirzona[0][8];
			$lassiglas=$dataulttirzona[0][9];
		
			$strsql="select numero_tir 
					   from pre_tir_encabezado
					  where contenedor='".$contenedor."'
						and siglas='".$lassiglas."'
						and gate=1
						and tipo_movimiento=8
					order by fecha desc";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ultimo_in_zf = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ultimo_in_zf[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ultimo_in_zf = false;
          $ultimo_in_zf_erro = $this->Db->ErrorMsg();
      } 

			if ($ultimo_in_zf ===false){
				return array("error"=>"Error:".$ultimo_in_zf_erro .' '.$strsql);
			}
			if (count($ultimo_in_zf )==0){
				return array("error"=>'',"numero_tir"=>0);
			} else {
				return array("error"=>'',"numero_tir"=>$ultimo_in_zf[0][0]);
			}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_ultimo_tir_in_zona_franca ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function encriptar ------*/

function encriptar($eltexto){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		return base64_encode($eltexto.'oscarquiroscotoABCDEFGHIJKLM');
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function encriptar ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function des_encriptar ------*/

function des_encriptar($eltexto){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
     	return str_replace('oscarquiroscotoABCDEFGHIJKLM','',base64_decode($eltexto));
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function des_encriptar ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function usuario_tiene_acceso_on_off ------*/

function usuario_tiene_acceso_on_off($idopcion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		return $this->usuario_tiene_acceso($idopcion)=='SI' ? 'on':'off';
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function usuario_tiene_acceso_on_off ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function usuario_tiene_acceso ------*/

function usuario_tiene_acceso($idopcion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select login 
	           from gen_usuario_seguridad_login 
	          where id_seguridad=$idopcion 
			    and login='".$_SESSION['grant']['usr_login']."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datapermisousario = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datapermisousario[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datapermisousario = false;
          $datapermisousario_erro = $this->Db->ErrorMsg();
      } 

		if ($datapermisousario ===false){
            $resultado="Error:".$datapermisousario_erro ;
		} else {
			if (count($datapermisousario )==0){
            $resultado="";
			} else {
            $resultado="SI";
			}
		  }
	return $resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function usuario_tiene_acceso ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function logout_sistema ------*/

function logout_sistema(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
if (!isset($_SESSION['usr_login'])) {$_SESSION['usr_login'] = "";}
if (!isset($this->sc_temp_usr_login)) {$this->sc_temp_usr_login = (isset($_SESSION['usr_login'])) ? $_SESSION['usr_login'] : "";}
  
    
	if(isset($_COOKIE['usr_data'])){
        unset($_COOKIE['usr_data']);
        setcookie("usr_data", '',time()+60*60*24*30,'/');
    }
	
	$strsql="update gen_usuario	set ultima_salida='.date('Y-m-d H:i:s').' where usuario='".$this->sc_temp_usr_login."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $logoutsistema = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $logoutsistema[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $logoutsistema = false;
          $logoutsistema_erro = $this->Db->ErrorMsg();
      } 

if (isset($this->sc_temp_usr_login)) {$_SESSION['usr_login'] = $this->sc_temp_usr_login;}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function logout_sistema ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ins_rutas_nuevas ------*/

function ins_rutas_nuevas($var_rnuevaccte){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	return;
	
		$strsql="insert into pre_rutas_nueva
				 (id,cliente,codigo,moneda,flete_particular,flete_casa,rebajo_chasis,
				 aplica,ajustado,pagoxkilometroparticular,diesel)
				SELECT 0,'".$var_rnuevaccte."',c.codigo,1,0,0,0,
				0,0,(SELECT e.pagoxkilometroparticular FROM pre_control e LIMIT 1) pagoxkilometroparticular,0
				  FROM pre_rutas_encabezado c
				   LEFT JOIN pre_rutas_nueva b ON b.codigo=c.codigo AND b.cliente='".$var_rnuevaccte."'
				 WHERE b.codigo IS NULL";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insnoexiste = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insnoexiste[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insnoexiste = false;
          $insnoexiste_erro = $this->Db->ErrorMsg();
      } 

		if ($insnoexiste ===false){
		   $resultado="Error:".$insnoexiste_erro .' '.$strsql;
		} else {
			$resultado='';
		}
		return $resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ins_rutas_nuevas ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_tipos_de_cambio ------*/

function traer_tipos_de_cambio($cuantosdias){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$ffinal=date("d-m-Y");
	$finicio=date("d-m-Y",strtotime($ffinal."- ".$cuantosdias." days")); 

	$date1 = new DateTime($finicio);
	$date2 = new DateTime($ffinal);
	$diff = $date1->diff($date2);
	$dias=$diff->days;
	$finicio=str_replace('-','/',$finicio);
	$ffinal=str_replace('-','/',$ffinal);

	$this->procesar_tc($finicio,$ffinal,$dias,'317');
	$this->procesar_tc($finicio,$ffinal,$dias,'318');
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_tipos_de_cambio ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function procesar_tc ------*/

function procesar_tc($finicio,$ffinal,$dias,$codigomoneda) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$doc = new DOMDocument();
		
$elurl='https://gee.bccr.fi.cr/Indicadores/Suscripciones/WS/wsindicadoreseconomicos.asmx/ObtenerIndicadoresEconomicos?Indicador='.$codigomoneda.'&FechaInicio='.$finicio.'&FechaFinal='.$ffinal.'&Nombre=OscarQuirosCoto&SubNiveles=N&CorreoElectronico=oscar@ssoqc.com&Token=TQUQ1SO30Q';

	$error='';
	try {
	$xml = file_get_contents($elurl);
		if ($xml === false){
			return;
		}
	$doc->loadXML($xml);
	} catch (Exception $e){
		echo "<h1>Error en indicadores economicos:</h1>".'<h2>https://gee.bccr.fi.cr</h2> '.$e->getMessage();
		return;
	}
	$ind = $doc->getElementsByTagName('INGC011_CAT_INDICADORECONOMIC')->item(0);
	  for ($i=0;$i<=$dias;$i++){
			$ind = $doc->getElementsByTagName('INGC011_CAT_INDICADORECONOMIC')->item($i);
			if ($ind==null){

			} else {
			 $val = $ind->getElementsByTagName('NUM_VALOR')->item(0);
			 $lfe = $ind->getElementsByTagName('DES_FECHA')->item(0);
			 $xcfecha=substr($lfe->nodeValue,0,10);
			 $tccompra=0;
			 $tcventa=0;
			 if ('317'==$codigomoneda){
				 $tccompra=str_replace(',','',str_replace('.','',number_format($val->nodeValue,2)))/100;
				 $tcventa=-1;
			 } else {
				 $tccompra=-1;
				 $tcventa=str_replace(',','',str_replace('.','',number_format($val->nodeValue,2)))/100;
			 }
			$cwhere="where fecha='$xcfecha' and moneda=2";
			$strsql="select fecha from gen_tipos_de_cambio ".$cwhere;

			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existetc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existetc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existetc = false;
          $existetc_erro = $this->Db->ErrorMsg();
      } 

			if ($existetc ===false){
				echo 'Error:'.$existetc_erro .' '.$strsql;
			} else {
				if (count($existetc )==0){
					if ($tccompra==-1){
						$strsql="insert into gen_tipos_de_cambio (fecha,moneda,tc_compra,tc_venta) values ('$xcfecha',2,0,$tcventa)";
					} else {
						$strsql="insert into gen_tipos_de_cambio (fecha,moneda,tc_compra,tc_venta) values ('$xcfecha',2,$tccompra,0)";
					}
				} else {
					if ($tccompra==-1){
						$strsql="update gen_tipos_de_cambio set tc_venta=".$tcventa.' '.$cwhere;
					} else {
						$strsql="update gen_tipos_de_cambio set tc_compra=".$tccompra.' '.$cwhere;
					}
				}
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updtctc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updtctc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updtctc = false;
          $updtctc_erro = $this->Db->ErrorMsg();
      } 

				if ($updtctc ===false){
					echo 'Error:'.$updtctc_erro .' '.$strsql;
				}
			  }
			} 
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function procesar_tc ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function before_delete_boleta ------*/

function before_delete_boleta($lboleta_id){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$r_resultado=true;
		$strsql="update pre_chasis set id_asignacion=-1,
		          usuario_log='".$_SESSION['grant']['usr_login']."',
				  aplicacion_log='globales #566' where codigo in (
					  select chasis from pre_chasis_despacho 
					  where id=".$lboleta_id.") and id_boleta_despacho=".$lboleta_id;
		    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $chasis_old2 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $chasis_old2[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $chasis_old2 = false;
          $chasis_old2_erro = $this->Db->ErrorMsg();
      } 
	
		   if ($chasis_old2 ===false){
			   $r_resultado=false;
			   return array("error"=>"#650 before_delete_boleta.Error:".$chasis_old2_erro .' '.$strsql);	   
		}
		
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_cualidades_relacion where id_boleta=".$lboleta_id);
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_duas_relacion where id_boleta=".$lboleta_id);
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		$elmsg=$this->ejecute_eje_sql("delete from pre_inventario_contenedor_boleta where id_boleta=".$lboleta_id);
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		$elmsg=$this->ejecute_eje_sql("update pre_colocaciones set id_despacho=NULL,condicion_actual=1 where id_despacho=".$lboleta_id);
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_pendiente_de_asignar where id_despacho=".$lboleta_id);
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}

		
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_cualidades_relacion_otros where valor='".$lboleta_id."'");
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_cualidades_relacion_otros where id_boleta='".$lboleta_id."'");
		if (''<>$elmsg){
			return array("error"=>$elmsg);
		}
		
		$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_calculos_tarifas where id_boleta='".$lboleta_id."'");
			if (''<>$elmsg){
			return array("error"=>$elmsg);
			}
		if (1==$_SESSION['grant']['usr_priv_admin']){
			
			$elmsg=$this->ejecute_eje_sql("delete from ope_boletas_recargos_enca where id_boleta='".$lboleta_id."'");
				if (''<>$elmsg){
					return array("error"=>$elmsg);
				}
				
			$elmsg=$this->ejecute_eje_sql("delete from ope_liquidacion_ajuste_km_tmp where boleta='".$lboleta_id."'");
				if (''<>$elmsg){
					return array("error"=>$elmsg);
				}
			
			$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_documentos_archivo where id_boleta='".$lboleta_id."'");
				if (''<>$elmsg){
					return array("error"=>$elmsg);
				}
			
			$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_t00 where id_boleta='".$lboleta_id."'");
				if (''<>$elmsg){
					return array("error"=>$elmsg);
				}
			
		    $elmsg=$this->ejecute_eje_sql("delete from ope_boletas_para_liquidar_recepcion_doc where id_boleta='".$lboleta_id."'");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("update ope_liquidacion_viajes set id_boleta=null where id_boleta='".$lboleta_id."'");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_autorizacion_retiro where id_boleta='".$lboleta_id."'");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("update pre_tir_chasis_encabezado set id_despacho=null where id_despacho='".$lboleta_id."'");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("update pre_tir_encabezado set id_despacho=null where id_despacho='".$lboleta_id."'");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("update pre_boleta_combustible set boleta_despacho=null 
			                         where boleta_despacho='".$lboleta_id."'
									   and chofer is not null
									   and propietario is not null");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			
			$elmsg=$this->ejecute_eje_sql("update pre_inventario_importacion_cargada set id_boleta=null 
			                         where id_boleta='".$lboleta_id."' ");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			$elmsg=$this->ejecute_eje_sql("delete from pre_chasis_despacho_pendiente_sms where id_boleta='".$lboleta_id."' ");
			if (''<>$elmsg){
				return array("error"=>$elmsg);
			}
			
		} else { 
			$strsql="select distinct refer from (
					select 'Tiene despacho de terceros tabla:pre_chasis_despacho_t00' refer 
						from pre_chasis_despacho_t00 where id_boleta=$lboleta_id
					union all
					 select 'Tiene documentos de recepcion para liquidar tabla:ope_boletas_para_liquidar_recepcion_doc' refer 
					 	from ope_boletas_para_liquidar_recepcion_doc where id_boleta=172328
					union all
					select 'Tiene viajes liquidados tabla:ope_liquidacion_viajes' refer 
						from ope_liquidacion_viajes where id_boleta=$lboleta_id
					union all
					select 'Tiene despacho autorizado para retiro tabla:pre_chasis_despacho_autorizacion_retiro' refer 
						from pre_chasis_despacho_autorizacion_retiro where id_boleta=172328
					union all
					select 'Tiene tir de chasis asociado tabla:pre_tir_chasis_encabezado' refer 
						from pre_tir_chasis_encabezado  where id_despacho=$lboleta_id
					union all
					select 'Tiene tir asociado tabla:pre_tir_encabezado' refer 
						from pre_tir_encabezado where id_despacho=$lboleta_id
					union all
					select 'Tiene boleta de combustible asociada tabla:pre_boleta_combustible' refer 
						from pre_boleta_combustible where boleta_despacho=$lboleta_id
					union all
					select 'Tiene documentos de receccion para liquidar2 tabla:ope_boletas_para_liquidar_recepcion_doc' refer 	
						from ope_boletas_para_liquidar_recepcion_doc WHERE id_boleta=$lboleta_id
					union all
					select 'Tiene documentos en despachos tabla:pre_chasis_despacho_documentos_archivo' refer
					    from pre_chasis_despacho_documentos_archivo where id_boleta=$lboleta_id
					union all
					select 'Tiene ajustes de kilometros tabla:ope_liquidacion_ajuste_km_tmp' refer
					    from ope_liquidacion_ajuste_km_tmp where boleta=$lboleta_id
					union all
					select 'Tiene boleta en importacion cartada:pre_inventario_importacion_cargada' refer
					    from pre_inventario_importacion_cargada where id_boleta=$lboleta_id
					union all
					select 'Tiene boleta recargos:ope_boletas_recargos_enca' refer
					    from ope_boletas_recargos_enca  where id_boleta=$lboleta_id
					union all
					select 'Tiene pendiente de envio SMS' refer
					   from pre_chasis_despacho_pendiente_sms where id_boleta=$lboleta_id
					) a";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($data_porquenoborro = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_porquenoborro = false;
          $data_porquenoborro_erro = $this->Db->ErrorMsg();
      } 

			if ($data_porquenoborro ===false){
				return array("error"=>"Error en before_delete_boleta linea #705 ".$data_porquenoborro_erro .' '.$strsql);
			} else {
				$elmsg='';
				while (!$data_porquenoborro->EOF){
					if (''==$elmsg){
						$elmsg=$data_porquenoborro->fields[0];
					} else {
						$elmsg=$elmsg.'<br>'.$data_porquenoborro->fields[0];
					}
					$data_porquenoborro->MoveNext();
				}
				$data_porquenoborro->Close();
				if (''<>$elmsg){
			         return array("error"=>$elmsg);
			    }
			}
		}  
	  return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function before_delete_boleta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function barra_espera ------*/

function barra_espera(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   if (!isset($_SESSION['grant'])){
		   if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('app_Login') . "/", $this->nm_location, "","_self", 440, 630);
 };
	   }
		
	   if (isset($_SESSION['grant']['usr_login'])){
	   } else {
		   if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('app_Login') . "/", $this->nm_location, "","_self", 440, 630);
 };
	   }
		
		
	if (!isset($_SESSION['barra_espera'])){
		$_SESSION['barra_espera']='SI';
	}
	if ('NO'==$_SESSION['barra_espera']){ } 
	else {
			 if (!file_exists("../_lib/img/scriptcase__NM__ico__NM__sc_horizontal_loading.gif")){
				 echo "No existe archivo de progreso!!!!";
			 } else {
				?>
				<html>
				<head>
				</head>

				<body>
				<center>
					Un momento por favor
				</center>
				<center>
					<img src="../_lib/img/scriptcase__NM__ico__NM__sc_horizontal_loading.gif">
				</center>
				</body>
				</html>
				<?php
			 }
		}
		$_SESSION['barra_espera']='NO';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function barra_espera ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function insert_despacho_duas_relacion ------*/

function insert_despacho_duas_relacion($el_idespacho,$el_dua_exportacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if (''!=$el_idespacho){
         $strsql="delete from pre_chasis_despacho_duas_relacion 
		            where id_boleta=".$el_idespacho."
					  and id_dua=3";
				$elmsg=$this->ejecute_eje_sql($strsql);
				if (''<>$elmsg){
					return $elmsg;
				}
         $strsql="insert into pre_chasis_despacho_duas_relacion 
		            (id_boleta,id_dua,valor) values 
		            (".$el_idespacho.",3,'".$el_dua_exportacion."')";
				$elmsg=$this->ejecute_eje_sql($strsql);
				if (''<>$elmsg){
					return $elmsg;
				}
	}
	  return '';
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function insert_despacho_duas_relacion ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function asignar_recargos_a_boleta ------*/

function asignar_recargos_a_boleta($id_boleta_id){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select id,monto_total from ope_boletas_recargos_enca where id_boleta=".$id_boleta_id;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataenca_recargo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataenca_recargo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataenca_recargo = false;
          $dataenca_recargo_erro = $this->Db->ErrorMsg();
      } 

		if ($dataenca_recargo ===false){
		  echo "<h2>Error:".$dataenca_recargo_erro .'</h2> '.$strsql;	
		} else {
			if (count($dataenca_recargo )===0){
			$strsql="insert into ope_boletas_recargos_enca (id_boleta,monto_total,observaciones,usuario,fecha) values 
			   ('".$id_boleta_id."',0,'','".$_SESSION['grant']['usr_login']."',now())";
			  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insenca_recargo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insenca_recargo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insenca_recargo = false;
          $insenca_recargo_erro = $this->Db->ErrorMsg();
      } 

			 if ($insenca_recargo ===false){
				 echo "<h2>Error:".$insenca_recargo .'</h2> '.$strsql;	
				 return;
			  } else {
				  
      $nm_select = "select last_insert_id()"; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $eldidenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $eldidenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $eldidenca = false;
          $eldidenca_erro = $this->Db->ErrorMsg();
      } 

				 $id_enca =$eldidenca[0][0];
			  }
			} else {
				$id_enca=$dataenca_recargo[0][0];
			}
			 if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('form_ope_boletas_recargos_enca') . "/", $this->nm_location, "id?#?" . NM_encode_input($id_enca) . "?@?","_self", 440, 630);
 };
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function asignar_recargos_a_boleta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function asignar_recargos_a_movimiento ------*/

function asignar_recargos_a_movimiento($id_movimiento_id){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select id,monto_total from ope_boletas_recargos_enca where id_movimiento=".$id_movimiento_id;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataenca_recargom = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataenca_recargom[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataenca_recargom = false;
          $dataenca_recargom_erro = $this->Db->ErrorMsg();
      } 

		if ($dataenca_recargom ===false){
		  echo "<h2>Error:".$dataenca_recargom_erro .'</h2> '.$strsql;	
		} else {
			if (count($dataenca_recargom )===0){
			$strsql="insert into ope_boletas_recargos_enca (id_movimiento,monto_total,observaciones,usuario,fecha) values 
			   ('".$id_movimiento_id."',0,'','".$_SESSION['grant']['usr_login']."',now())";
			  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insenca_recargo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insenca_recargo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insenca_recargo = false;
          $insenca_recargo_erro = $this->Db->ErrorMsg();
      } 

			 if ($insenca_recargo ===false){
				 echo "<h2>Error:".$insenca_recargo .'</h2> '.$strsql;	
				 return;
			  } else {
				  
      $nm_select = "select last_insert_id()"; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $eldidenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $eldidenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $eldidenca = false;
          $eldidenca_erro = $this->Db->ErrorMsg();
      } 

				 $id_enca =$eldidenca[0][0];
			  }
			} else {
				$id_enca=$dataenca_recargom[0][0];
			}
			 if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('form_ope_boletas_recargos_enca') . "/", $this->nm_location, "id?#?" . NM_encode_input($id_enca) . "?@?","_self", 440, 630);
 };
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function asignar_recargos_a_movimiento ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ejecute_eje_sql ------*/

function ejecute_eje_sql($ELstrsql){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		 
      $nm_select = $ELstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ejecuteejesql = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ejecuteejesql[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ejecuteejesql = false;
          $ejecuteejesql_erro = $this->Db->ErrorMsg();
      } 

		if ($ejecuteejesql ===false){
		   return "Error:".$ejecuteejesql_erro .' '.$ELstrsql;	
		} else {
			return '';
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ejecute_eje_sql ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_tipo_de_cambio ------*/

function traer_tipo_de_cambio($lafechatc){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select tc_venta
			  from gen_tipos_de_cambio
			  where fecha='$lafechatc'
			  union all
			  select * from (
			select tc_venta
			  from gen_tipos_de_cambio
			order by fecha desc limit 1
			) a ";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $traetc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $traetc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $traetc = false;
          $traetc_erro = $this->Db->ErrorMsg();
      } 

		if ($traetc ===false){
		   echo "Error:".$traetc_erro .' '.$strsql;
			return -1;
		} else {
			if (count($traetc )==0){
			   return 600;
			} else {
			   return $traetc[0][0];	
			}
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_tipo_de_cambio ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_consecutivo ------*/

function traer_consecutivo($lacia,$ladiv,$elmodaux,$eltipdoc){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$elresultado=$this->traer_consecutivo_array($lacia,$ladiv,$elmodaux,$eltipdoc);
		return $elresultado['consecutivo'];
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_consecutivo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_consecutivo_array ------*/

function traer_consecutivo_array($lacia,$ladiv,$elmodaux,$eltipdoc){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select consecutivo
	  from gen_consecutivos
	 where compania='$lacia'
	   and division=$ladiv
	   and moduloauxiliar=$elmodaux
	   and tipo_documento=$eltipdoc for update";
		
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $numconsecutivo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $numconsecutivo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $numconsecutivo = false;
          $numconsecutivo_erro = $this->Db->ErrorMsg();
      } 

	if ($numconsecutivo ===false){
		return array("error"=>"#1456.traer_consecutivo_array <h1>Error:".$numconsecutivo_erro .'</h1>'.$strsql,'consecutivo'=>-1);
		echo "#1456.traer_consecutivo_array <h1>Error:".$numconsecutivo_erro .'</h1>'.$strsql;
		return -1;
	}
	if (count($numconsecutivo )==0){
		   $numeroliquidacion=1;
			$strsql="insert into gen_consecutivos
					 (compania,division,moduloauxiliar,tipo_documento,consecutivo) values 
					 ('$lacia',$ladiv,$elmodaux,$eltipdoc,1)";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insertconsecutivo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insertconsecutivo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insertconsecutivo = false;
          $insertconsecutivo_erro = $this->Db->ErrorMsg();
      } 

			if ($insertconsecutivo ===false){
				return array("error"=>"#1467.traer_consecutivo_array <h1>Error:".$insertconsecutivo_erro .'</h1>'.$strsql,'consecutivo'=>-1);
				echo "<h1>Error:".$insertconsecutivo_erro .'</h1>'.$strsql;
				return -1;
			} else {
				return array("error"=>"",'consecutivo'=>1);
				return 1;
			}

	} else {
		    $strsql="update gen_consecutivos set consecutivo=consecutivo+1
				      where compania='$lacia'
						and division=$ladiv
						and moduloauxiliar=$elmodaux
						and tipo_documento=$eltipdoc";
		     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updateconsecutivo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updateconsecutivo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updateconsecutivo = false;
          $updateconsecutivo_erro = $this->Db->ErrorMsg();
      } 

			if ($updateconsecutivo ===false){
				return array("error"=>"#1483.traer_consecutivo_array <h1>Error:".$updateconsecutivo_erro .'</h1>'.$strsql,'consecutivo'=>-1);
				echo "<h1>Error:".$updateconsecutivo_erro .'</h1>'.$strsql;
				return -1;
			} else {
				return array("error"=>"",'consecutivo'=>$numconsecutivo[0][0]+1);
			    return $numconsecutivo[0][0]+1;
	        }
	    }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_consecutivo_array ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cedula_ingreso_zona_franca ------*/

function cedula_ingreso_zona_franca($lacedula, $elnombre){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		$elnombre=substr($elnombre,0,99);
		$strsql="SELECT cedula,nombre
				   FROM pre_ingreso_zona_franca_cedulas
				  where cedula='".$lacedula."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $selecel = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $selecel[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $selecel = false;
          $selecel_erro = $this->Db->ErrorMsg();
      } 

		if ($selecel ===false){
		  return "Error:".$selecel_erro .' '.$strsql;	
		} else {
		  if (count($selecel )==0){
			 $strsql="insert into  pre_ingreso_zona_franca_cedulas (cedula,nombre) values 
				('$lacedula','$elnombre')";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $inscedula = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $inscedula[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $inscedula = false;
          $inscedula_erro = $this->Db->ErrorMsg();
      } 

			if ($inscedula ===false){
			   return "Error:".$inscedula_erro .' '.$strsql;	
			}
		  }
		}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cedula_ingreso_zona_franca ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function elimina_caracteres_especiales ------*/

function elimina_caracteres_especiales($eldato){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		$eldato = str_replace("\n", "", $eldato);
		$eldato = str_replace("\r", "", $eldato);
		$eldato = str_replace("'", "", $eldato);
		$eldato=ltrim(rtrim($eldato));
		return rtrim(ltrim($eldato));
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function elimina_caracteres_especiales ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function limpiarCaracteresEspeciales ------*/

function limpiarCaracteresEspeciales($string ){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$string=$this->eliminar_acentos($string);
	 $string = preg_replace('([^A-Za-z0-9 ])', '', $string);
	 return $string;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function limpiarCaracteresEspeciales ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function eliminar_acentos ------*/

function eliminar_acentos($cadena){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		
		$cadena = str_replace(
		array('Á', 'À', 'Â', 'Ä', 'á', 'à', 'ä', 'â', 'ª'),
		array('A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a'),
		$cadena
		);
 
		$cadena = str_replace(
		array('É', 'È', 'Ê', 'Ë', 'é', 'è', 'ë', 'ê'),
		array('E', 'E', 'E', 'E', 'e', 'e', 'e', 'e'),
		$cadena );
 
		$cadena = str_replace(
		array('Í', 'Ì', 'Ï', 'Î', 'í', 'ì', 'ï', 'î'),
		array('I', 'I', 'I', 'I', 'i', 'i', 'i', 'i'),
		$cadena );
 
		$cadena = str_replace(
		array('Ó', 'Ò', 'Ö', 'Ô', 'ó', 'ò', 'ö', 'ô'),
		array('O', 'O', 'O', 'O', 'o', 'o', 'o', 'o'),
		$cadena );
 
		$cadena = str_replace(
		array('Ú', 'Ù', 'Û', 'Ü', 'ú', 'ù', 'ü', 'û'),
		array('U', 'U', 'U', 'U', 'u', 'u', 'u', 'u'),
		$cadena );
 
		$cadena = str_replace(
		array('Ñ', 'ñ', 'Ç', 'ç'),
		array('N', 'n', 'C', 'c'),
		$cadena
		);
		$cadena=utf8_encode($cadena);
		return $cadena;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function eliminar_acentos ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function contenedor_bloqueado ------*/

function contenedor_bloqueado($las_siglas,$el_contenedor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select a.bloqueado,
		              if(isnull(b.descripcion),
		              if(a.bloqueado<>0,'Bloqueado',''),b.descripcion) descripcion,
					  if(isnull(c.estado_actual),3,c.estado_actual) estado_actual,
    				  if(isnull(d.descripcion),'',d.descripcion) nombre_estado
   				   from pre_contenedor a
     				left join pre_contenedor_bloqueos b on a.bloqueado=b.id
					  LEFT JOIN pre_inventario_contenedores C ON a.siglas=c.siglas AND a.numero_contenedor=c.numero_contenedor
					  LEFT JOIN pre_inventario_contenedores_estados d ON c.estado_actual=d.id
				  WHERE a.siglas='".$las_siglas."'
					AND a.numero_contenedor='".$el_contenedor."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $verificarbloqueo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $verificarbloqueo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $verificarbloqueo = false;
          $verificarbloqueo_erro = $this->Db->ErrorMsg();
      } 

		if ($verificarbloqueo ===false){
		  return "Error:".$verificarbloqueo_erro .' '.$strsql;	
		} 
			if (count($verificarbloqueo )<>0){
			   if ($verificarbloqueo[0][0]<>0){
				   return 'El contenedor esta '.$verificarbloqueo[0][1];
			   }
			}
	return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function contenedor_bloqueado ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cancelar_colocacion ------*/

function cancelar_colocacion($lacolocacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		$puedo=false;
		$strsql="
		SELECT CAST(IF(ISNULL(id_despacho),0,id_despacho) AS DECIMAL(12,2)) id_despacho
		  FROM pre_colocaciones
		 WHERE colocacion=".$lacolocacion;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_despa = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_despa[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_despa = false;
          $data_despa_erro = $this->Db->ErrorMsg();
      } 

		if ($data_despa ===false){
			echo '<h1>Error:'.$data_despa_erro .'</h1>';
			return;
		}
		if (count($data_despa )==0){
			$puedo=true;	
		} else {
		   if (0<>$data_despa[0][0]){
			   $puedo=false;
			   echo "<h1>Colocacion:".$lacolocacion." no se puede cancelar puesto que ya tiene despacho</h1>";
		   } else {
			   $puedo=true;
		   }
		}
		if ($puedo){
			$strsql="
			 update pre_colocaciones set condicion_actual=3
			 WHERE colocacion=".$lacolocacion;
		   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_coloca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_coloca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_coloca = false;
          $upd_coloca_erro = $this->Db->ErrorMsg();
      } 

		  if ($upd_coloca ===false){
			echo "<h1>Error:".$upd_coloca_erro .' '.$strsql;  
		  } else {
			echo "<h1>Colocacion:".$lacolocacion." se cancelo de manera exitosa</h1>";
			$this->agregar_log('Cancela colocacion','pre_colocaciones','id:'.$lacolocacion);
		  }
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cancelar_colocacion ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function agregar_a_filtro_fechas ------*/

function agregar_a_filtro_fechas($ofiltro, $odesde, $ohasta, $ocampo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		if (''<>$desde and ''<>$ohasta){
			if (''==$ofiltro){
			  $ofiltro="date(".$ocampo.") between '".$odesde."' and '".$ohasta."'";	
			} else {
			  $ofiltro=$ofiltro." and date(".$ocampo.") between '".$odesde."' and '".$ohasta."'";	
			}
		}
		return $ofiltro;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function agregar_a_filtro_fechas ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function agregar_a_filtro ------*/

function agregar_a_filtro($ofiltro, $ovalor, $ocampo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$ovalor=ltrim(rtrim($ovalor));
		if (NULL===$ovalor){
		  $ovalor='';	
		} 
		if (''<>$ovalor){
			if (''==$ofiltro){
			  $ofiltro=$ocampo." like '%".ltrim(rtrim($ovalor))."%'";	
			} else {
			  $ofiltro=$ofiltro." and ".$ocampo." like '%".ltrim(rtrim($ovalor))."%'";
			}
		}
		return $ofiltro;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function agregar_a_filtro ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function nombre_mes ------*/

function nombre_mes($nmes){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $nnmes=array(
		"01"=>"Ene",
		"02"=>"Feb",
		"03"=>"Mar",
		"04"=>"Abr",
		"05"=>"May",
		"06"=>"Jun",
		"07"=>"Jul",
		"08"=>"Ago",
		"09"=>"Set",
		"10"=>"Oct",
		"11"=>"Nov",
		"12"=>"Dic"
	  );
		if ($nmes<0 or $nmes>12){
		   return $nmes;
		} else {
		   return $nnmes[$nmes];
		}
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function nombre_mes ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ObtenerIP ------*/

function ObtenerIP(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
		$ip = getenv("HTTP_CLIENT_IP");
		else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
		$ip = getenv("HTTP_X_FORWARDED_FOR");
		else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
		$ip = getenv("REMOTE_ADDR");
		else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
		$ip = $_SERVER['REMOTE_ADDR'];
		else
		$ip = "IP desconocida";
		return($ip);
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ObtenerIP ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function agregar_log ------*/

function agregar_log($kaccion,$kaplicacion,$kdescripcion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$kdescripcion=str_replace("'","\'",$kdescripcion);
	$strlog="insert into sc_log (inserted_date,username,application,creator,ip_user,ACTION,description) values ".
		  "('".date('Y-m-d H:i:s')."','".$_SESSION['grant']['usr_login']."','".$kaplicacion."','sistema','".$_SERVER['REMOTE_ADDR']."',
		  '".$kaccion."','".$kdescripcion."')";
		 
      $nm_select = $strlog; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_sc_log = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_sc_log[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_sc_log = false;
          $ins_sc_log_erro = $this->Db->ErrorMsg();
      } 

		if ($ins_sc_log ===false){
            return "Error:".$ins_sc_log_erro .' '.$strlog;
		} else {
           
		}

		if (isset($_SESSION['grant']['vehiculo_asociado'])){
			
			if (''==$_SESSION['grant']['vehiculo_asociado']){
				if ($kaccion=='Reubicacion contenedor'){
					$laplaca_log='null';
			    } else {
					$laplaca_log='';
				}
			} else {
				$laplaca_log="'".$_SESSION['grant']['vehiculo_asociado']."'";
			}
			if (''!=$laplaca_log){
				$strsql="insert into sc_log_vehiculo_asociado 
				    select last_insert_id(),$laplaca_log";
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_sc_log_vehiculo_asociado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_sc_log_vehiculo_asociado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_sc_log_vehiculo_asociado = false;
          $ins_sc_log_vehiculo_asociado_erro = $this->Db->ErrorMsg();
      } 

				if ($ins_sc_log_vehiculo_asociado ===false){
					return 'Error:'.$ins_sc_log_vehiculo_asociado_erro .' '.$strsql;
				}
			}
		}
		
		
	  return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function agregar_log ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function fecha_hora_definida ------*/

function fecha_hora_definida(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$lafechahora='current_timestamp';
		$lafechahora="'".date('Y-m-d H:i:s')."'";
		if (isset($_SESSION['fecha_hora_movimientos'])){
			$lafechahora="'".$_SESSION['fecha_hora_movimientos']."'";
		}
     return $lafechahora;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function fecha_hora_definida ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_el_contenedor ------*/

function existe_el_contenedor($siglas,$contenedor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	 $strsql="SELECT id
			    FROM pre_inventario_contenedores
			   WHERE numero_contenedor='$contenedor'
				 and siglas='$siglas'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existecontenedor_zava = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existecontenedor_zava[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existecontenedor_zava = false;
          $existecontenedor_zava_erro = $this->Db->ErrorMsg();
      } 

	if ($existecontenedor_zava ===false){
		return 'Error:'.$existecontenedor_zava_erro .' '.$strsql;
	} else {
	  if (count($existecontenedor_zava )==0){
		  return 'noexiste';
	  } else {
		  return '';
	  }
	}
	return 'Error';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_el_contenedor ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function select_lista ------*/

function select_lista($latabla, $loscampos, $elvalor){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		$retorna="<select class='form-control' class='form-control' data-toggle='modal'>
		          <option value='0'>Seleccione ..
				  </option>";
		$vapor_strsql="select ".$loscampos." 
						 from ".$latabla."
						order by 2";
		 
      $nm_select = $vapor_strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dat_vapor = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dat_vapor = false;
          $dat_vapor_erro = $this->Db->ErrorMsg();
      } 

		if ($dat_vapor ===false){
			return "<select class='form-control' class='form-control' data-toggle='modal'>
			        <option value='0'>".$dat_vapor_erro ."<br>".$vapor_strsql.
				"..</opcion></select>";
		} else {
		$icant=0;
			while (!$dat_vapor->EOF){
					$es_selected="";
					if ($dat_vapor->fields[0]===$elvalor){
						$es_selected="selected";
						$icant++;
					}
					$retorna.="<option value=".$dat_vapor->fields[0]." ".$es_selected.">".$dat_vapor->fields[1]."</option>";
					$dat_vapor->MoveNext();
				}
				$dat_vapor->Close();
		   if (0==$icant){
			   return $retorna."</select>";
			} else {
			   return "<select class='form-control' class='form-control' data-toggle='modal'>".$retorna.'</select>';
			}
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function select_lista ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_session ------*/

function verificar_session(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   if (isset($_SESSION['grant']['usr_login'])){
	   } else {
		   if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('app_Login') . "/", $this->nm_location, "","_self", 440, 630);
 };
	   }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_session ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function agregar_a_sec_groups_apps_menu ------*/

function agregar_a_sec_groups_apps_menu() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			$strsql="INSERT INTO sec_groups_apps_menu
			   (id,id_menu,group_id,priv_access,priv_insert,priv_delete,priv_update,priv_export,priv_print)
			SELECT DISTINCT 0,a.menu_item,b.group_id,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_access,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_insert,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_delete,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_update,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_export,
			CASE WHEN 1=b.group_id THEN 'Y' ELSE '' END priv_print
			FROM sec_apps a
			LEFT JOIN sec_groups b ON 1=1
			LEFT JOIN sec_groups_apps_menu c ON a.menu_item=id_menu AND b.group_id=c.group_id
			WHERE a.menu_item IS NOT NULL
			AND c.id IS NULL";
			
     $nm_select = $strsql; 
         $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select;
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
         $rf = $this->Db->Execute($nm_select);
         if ($rf === false)
         {
             $this->Erro->mensagem (__FILE__, __LINE__, "banco", $this->Ini->Nm_lang['lang_errm_dber'], $this->Db->ErrorMsg());
             if ($this->Ini->sc_tem_trans_banco)
             {
                 $this->Db->RollbackTrans(); 
                 $this->Ini->sc_tem_trans_banco = false;
             }
             exit;
         }
         $rf->Close();
      
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function agregar_a_sec_groups_apps_menu ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function mensaje_alerta ------*/

function mensaje_alerta($elmensaje,$elmensaje_enca='Error'){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	echo '
		<script src="../_lib/libraries/grp/alertifyjs/alertify.min.js"></script>
		<link rel="stylesheet" href="../_lib/libraries/grp/alertifyjs/css/alertify.min.css">
		<link rel="stylesheet" href="../_lib/libraries/grp/alertifyjs/css/themes/default.min.css">
		<link rel="stylesheet" href="../_lib/libraries/grp/alertifyjs/css/themes/semantic.min.css">
		<link rel="stylesheet" href="../_lib/libraries/grp/alertifyjs/css/themes/bootstrap.min.css">
		<script>alertify.alert("'.$elmensaje_enca.'","'.$elmensaje.'");</script>
		<body>
		</body>
	';
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function mensaje_alerta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function grant_onApplicationInit ------*/

function grant_onApplicationInit(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
if (!isset($_SESSION['usr_login'])) {$_SESSION['usr_login'] = "";}
if (!isset($this->sc_temp_usr_login)) {$this->sc_temp_usr_login = (isset($_SESSION['usr_login'])) ? $_SESSION['usr_login'] : "";}
  
	  if (isset($_SESSION['grant']['usr_login'])){
	     $this->sc_temp_usr_login=$_SESSION['grant']['usr_login'];
	   } else {
		   if (isset($this->sc_temp_usr_login)) {$_SESSION['usr_login'] = $this->sc_temp_usr_login;}
 if (!isset($this->Campos_Mens_erro) || empty($this->Campos_Mens_erro))
 {
$this->nmgp_redireciona_form($this->Ini->path_link . "" . SC_dir_app_name('app_Login') . "/", $this->nm_location, "","_self", 440, 630);
 };
	  }
if (isset($this->sc_temp_usr_login)) {$_SESSION['usr_login'] = $this->sc_temp_usr_login;}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function grant_onApplicationInit ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function buscar_codigo ------*/

function buscar_codigo($latabla,$elcampo,$elcodigo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$xstrsql="select $elcampo 
				   from $latabla
				  where $elcampo='$elcodigo'
				 order by $elcampo limit 1";
         
      $nm_select = $xstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $buscarcodioel = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $buscarcodioel[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $buscarcodioel = false;
          $buscarcodioel_erro = $this->Db->ErrorMsg();
      } 

		if ($buscarcodioel ===false){
			echo "Error:".$buscarcodioel_erro .' '.$xstrsql.' buscar_codigo';
			return 0;
		} else {
			if (count($buscarcodioel )==0){
			   return 1;
		    } else {
			   return 2;
			}
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function buscar_codigo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function buscar_codigo_siguiente ------*/

function buscar_codigo_siguiente($latabla,$elcampo,$elancho,$apartirdel,$otrowhere=''){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$elinicial=str_pad($apartirdel,$elancho,'0', STR_PAD_LEFT);
		$elfinal=str_pad('',$elancho,'9', STR_PAD_LEFT);
		$strsql="select $elcampo 
				   from $latabla
				  where $elcampo>=$apartirdel
				        $otrowhere
				 order by $elcampo limit 1";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $bcampob = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $bcampob[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $bcampob = false;
          $bcampob_erro = $this->Db->ErrorMsg();
      } 

		if ($bcampob ===false){
			echo "Error:".$bcampob_erro .' '.
				$strsql.
				'<br> $this->buscar_codigo(latabla:'.$latabla.
				' elcampo:'.$elcampo.' el ancho:'.$elancho.' apartir del'.$apartirdel;
			return $elfinal;
		} else {
			if (count($bcampob )==0){
				return str_pad('1',$elancho,'0', STR_PAD_LEFT);
			} else {
				$elretorno=$elfinal;
				for ($i=$apartirdel;$i<=$elfinal;$i++){
					$eldato=str_pad($i,$elancho,'0', STR_PAD_LEFT);
					$elresultado=$this->buscar_codigo($latabla,$elcampo,$eldato);
					if (1==$elresultado){
						$elretorno=$eldato;
						return $eldato;
						break;
					}
					if (0==$elresultado){
						$elretorno=$elfinal;
						break;
					}
					
				} 
				return $elresultado;
			} 
		}
		return $elfinal;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function buscar_codigo_siguiente ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_tir_out ------*/

function traer_tir_out($elid){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $strsql="Select numero_tir,gate
             from pre_tir_encabezado 
			where id_despacho=".$elid."
			  ";
   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datatirout = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datatirout[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datatirout = false;
          $datatirout_erro = $this->Db->ErrorMsg();
      } 

  if ($datatirout ===false){
	  $resultado=array("error"=>"Error:".$datatirout_erro .' '.$strsql,
					    "gate"=>0,
					 	"numero_tir"=>-1);
  } else {
	if (count($datatirout )==0){
	  $resultado=array("error"=>"",
					    "gate"=>0,
					 	"numero_tir"=>0);		
	} else {
	  $resultado=array("error"=>"",
					   "gate"=>$datatirout[0][1],
					 	"numero_tir"=>$datatirout[0][0]);
	}
  } 
	
	return $resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_tir_out ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function verificar_tir ------*/

function verificar_tir($numero_tir,$gate){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select numero_tir
          from pre_tir_encabezado
		 where numero_tir='".$numero_tir."'
		   and gate='".$gate."'";
  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datatirverifica = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datatirverifica[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datatirverifica = false;
          $datatirverifica_erro = $this->Db->ErrorMsg();
      } 

 if ($datatirverifica ===false){
		  $resultado=array("error"=>"Error:".$datatirverifica_erro .' '.$strsql,
					    "gate"=>0,
					 	"numero_tir"=>-1);
 } else {
   if (count($datatirverifica )==0){
		  $resultado=array("error"=>"",
					    "gate"=>0,
					 	"numero_tir"=>$numero_tir);
   } else{
		  $resultado=array("error"=>"",
					    "gate"=>0,
					 	"numero_tir"=>0);
   }
 }
 return $resultado;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function verificar_tir ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function ultimo_id_insert ------*/

function ultimo_id_insert(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$strsql="select last_insert_id()";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $el_ultimo_last_insert_id = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $el_ultimo_last_insert_id[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $el_ultimo_last_insert_id = false;
          $el_ultimo_last_insert_id_erro = $this->Db->ErrorMsg();
      } 

	if ($el_ultimo_last_insert_id ===false){
		$datos=array("error"=>"Error:".$el_ultimo_last_insert_id_erro .' '.$strsql.' #1055 $this->ultimo_id_insert()',
					 "el_last_insert_id"=>-1);
		return $datos;
	} else {
	  if (count($el_ultimo_last_insert_id )==0){
		$datos=array("error"=>"Error count(elid last insert)==0".' #1060 $this->ultimo_id_insert()',
					 "el_last_insert_id"=>-1);
		return $datos;
	  } else {
		$datos=array("error"=>'',
					 "el_last_insert_id"=>$el_ultimo_last_insert_id[0][0]);
		return $datos;
	  }
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function ultimo_id_insert ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function htmltoflash2 ------*/

function htmltoflash2($htmlstr){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$resultado=utf8_decode ($htmlstr);
	$resultado=str_replace(array('Á', 'É', 'Í','Ó', 'Ú','Ñ','°'),
						   array('á', 'é', 'í','ó', 'ú','ñ',' '),
						   $resultado);
	
	  return str_replace("&lt;br /&gt;","\n",
		str_replace("<","&lt;",
		  str_replace(">","&gt;",
			mb_convert_encoding(html_entity_decode($resultado),
			"ISO-8859-15","UTF-8"))));

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function htmltoflash2 ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function existe_compania ------*/

function existe_compania($cod_cia){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select codigo from gen_compania where codigo='".$cod_cia."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $t_datadelacia = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $t_datadelacia[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $t_datadelacia = false;
          $t_datadelacia_erro = $this->Db->ErrorMsg();
      } 

	if ($t_datadelacia ===false){
		return array("error"=>"Error existe_compania.#2512:".$t_datadelacia_erro .' '.$strsql);
    }
	if (count($t_datadelacia )==0){
		return array("error"=>"Error compania:".$cod_cia." no existe");
	}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function existe_compania ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function deme_la_bodega_destino_de_llanta ------*/

function deme_la_bodega_destino_de_llanta($el_codigo_de_predio){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="select provincia
           from pre_predio
		  where codigo='".$el_codigo_de_predio."'";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadeprovinciax = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadeprovinciax[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadeprovinciax = false;
          $datadeprovinciax_erro = $this->Db->ErrorMsg();
      } 

	if ($datadeprovinciax ===false){
		return array("error"=>'Error #2528 deme_la_bodega_destino_de_llanta:'.$datadeprovinciax_erro .' '.$strsql);
	} else {
		if (count($datadeprovinciax )<>0){
			if (3==$datadeprovinciax[0][0]){
				return array("error"=>"",'labodeagaact'=>9);
			}
			if (7==$datadeprovinciax[0][0]){
				return array("error"=>"",'labodeagaact'=>7);
			}
		} else {
			return array("error"=>'Error #2538 deme_la_bodega_destino_de_llanta No hay predio por defecto en el usuario actual');
		}
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function deme_la_bodega_destino_de_llanta ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function usuario_puede_seguridad ------*/

function usuario_puede_seguridad($elid_seguridad){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="  select *
			from gen_usuario_seguridad_login
			where login='".$_SESSION['grant']['usr_login']."'
			  and id_seguridad='".$elid_seguridad."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $usuario_puedeseg = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $usuario_puedeseg[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $usuario_puedeseg = false;
          $usuario_puedeseg_erro = $this->Db->ErrorMsg();
      } 

		if ($usuario_puedeseg ===false){
			return array("error"=>"Error #2555 usuario_puede_seguridad.globales.php ".$usuario_puede_seguridad_erro .' '.$strsql);
		}
		if (count($usuario_puedeseg )==0){
			return array("error"=>"","puede"=>"NO");
		} else {
			return array("error"=>"","puede"=>"SI");
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function usuario_puede_seguridad ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function es_un_numero ------*/

function es_un_numero($el_montonumerico){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if (0==floatval($el_montonumerico)){
		return 0.00;
	}
	return $el_montonumerico;
	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function es_un_numero ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function global_act_code ------*/

function global_act_code($caracteres=5,$especiales='NO'){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if ('NO'==$especiales){
		$chars  = 'abcdefghijklmnopqrstuvxywz';
		$chars .= '0123456789';
	} else {
		$chars  = 'abcdefghijklmnopqrstuvxywz';
		$chars .= 'ABCDEFGHIJKLMNOPQRSTUVXYWZ';
		$chars .= '0123456789!@$*.,;:';
	}
		$max = strlen($chars)-1;
		$act_code = "";
		for($i=0; $i < $caracteres; $i++)
		{
			$act_code .= $chars[mt_rand(0, $max)];
		}

		return $act_code;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function global_act_code ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function global_send_mail_message ------*/

function global_send_mail_message($param_message,$usr_email,$lang_subject_mail){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$mail_smtp_server = 'mail.transportesgrant.com';        
		$mail_smtp_user = 'enviodigital@transportesgrant.com';                   
		$mail_smtp_pass = 'Tg25738821';			
		$mail_from = 'enviodigital@transportesgrant.com';          
		$mail_to          = $usr_email;         
		$mail_message     = $param_message;
		$mail_subject     = $lang_subject_mail; 
		$mail_format      = 'H';                       

		    include_once($this->Ini->path_third . "/swift/swift_required.php");
    $sc_mail_port     = "465";
    $sc_mail_tp_port  = "S";
    $sc_mail_tp_mens  = "$mail_format";
    $sc_mail_tp_copy  = "";
    $sc_mail_count = 0;
    $sc_mail_erro  = "";
    $sc_mail_ok    = true;
    if ($sc_mail_tp_port == "S" || $sc_mail_tp_port == "Y")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 465;
        $Con_Mail = Swift_SmtpTransport::newInstance($mail_smtp_server, $sc_mail_port, 'ssl');
    }
    elseif ($sc_mail_tp_port == "T")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 587;
        $Con_Mail = Swift_SmtpTransport::newInstance($mail_smtp_server, $sc_mail_port, 'tls');
    }
    else
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 25;
        $Con_Mail = Swift_SmtpTransport::newInstance($mail_smtp_server, $sc_mail_port);
    }
    $Con_Mail->setUsername($mail_smtp_user);
    $Con_Mail->setpassword($mail_smtp_pass);
    $Send_Mail = Swift_Mailer::newInstance($Con_Mail);
    if ($sc_mail_tp_mens == "H")
    {
        $Mens_Mail = Swift_Message::newInstance($mail_subject)->setBody($mail_message)->setContentType("text/html");
    }
    else
    {
        $Mens_Mail = Swift_Message::newInstance($mail_subject)->setBody($mail_message);
    }
    if (!empty($_SESSION['scriptcase']['charset']))
    {
        $Mens_Mail->setCharset($_SESSION['scriptcase']['charset']);
    }
    $Temp_mail = $mail_to;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $mail_to);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Arr_addr = SC_Mail_Address($NM_dest);
            $Mens_Mail->addTo($Arr_addr[0], $Arr_addr[1]);
        }
    }
    $Arr_addr = SC_Mail_Address($mail_from);
    $Err_mail = array();
    $sc_mail_count = $Send_Mail->send($Mens_Mail->setFrom($Arr_addr[0], $Arr_addr[1]), $Err_mail);
    if (!empty($Err_mail))
    {
        $sc_mail_erro = $Err_mail;
        $sc_mail_ok   = false;
    }
;

		if ($sc_mail_ok )
		{
			return '';
		}
		else
		{
			return $sc_mail_erro ;
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function global_send_mail_message ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function Ejecutar_Comando ------*/

function Ejecutar_Comando($command, &$outputStr, &$errorStr, $inputStr = null)
    {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	   

	   
	   $descriptors = [
                0 => ["pipe", "r"],
                1 => ["pipe", "w"],
                2 => ["pipe", "w"],
        ];
        $process = proc_open($command, $descriptors, $fd);
        if (is_resource($process)) {
            
            if ($inputStr !== null) {
                fwrite($fd[0], $inputStr);
            }
            fclose($fd[0]);
            
            $outputStr = stream_get_contents($fd[1]);
            fclose($fd[1]);
            
            $errorStr = stream_get_contents($fd[2]);
            fclose($fd[2]);
            
            $retval = proc_close($process);
            return $retval;
        } else {
            
            return -1;
        }
    
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function Ejecutar_Comando ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cargar_cedula_lib_global ------*/

function cargar_cedula_lib_global($lib_lacedula){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	        if (''==$lib_lacedula){
				return array("error"=>'',"nombre"=>'',"cedula"=>'');
			}
			$strsql="SELECT initcap(nombre),cedula
			FROM gen_persona
			WHERE replace(cedula,'-','')='".str_replace('-','',$lib_lacedula)."'
			union all
			select nombre,cedula
			from (
			select distinct IFNULL(nombre_responsable,'') nombre,cedula_responsable cedula
			from pre_llantas_movimientos_encabezado
			WHERE replace(cedula_responsable,'-','')='".str_replace('-','',$lib_lacedula)."'
			group by IFNULL(nombre_responsable,''),cedula_responsable
			) a
			union all
			select nombre,cedula
			from (
			select distinct IFNULL(nombre_responsable,'') nombre,cedula_responsable cedula
			from pre_llantas_desechar_encabezado
			WHERE replace(cedula_responsable,'-','')='".str_replace('-','',$lib_lacedula)."'
			group by IFNULL(nombre_responsable,''),cedula_responsable
			) a
			";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $buscar_en_persona = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $buscar_en_persona[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $buscar_en_persona = false;
          $buscar_en_persona_erro = $this->Db->ErrorMsg();
      } 

			if ($buscar_en_persona ===false){
			     return array("error"=>"Error:".$buscar_en_persona_erro .' '.$strsql,"nombre"=>'',"cedula"=>'');
			} else {
					if (count($buscar_en_persona )==0){
						return array("error"=>'',"nombre"=>'',"cedula"=>'');
					} else {
						return array("error"=>'',"nombre"=>$buscar_en_persona[0][0],"cedula"=>$buscar_en_persona[0][1]);
					}
			}
        return array("error"=>"llegue al final ","nombre"=>'',"cedula"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cargar_cedula_lib_global ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function traer_rango_de_fechas_segum_semana ------*/

function traer_rango_de_fechas_segum_semana($kk_semana,$kk_ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  	  
	  
		$cfechaini='';
		$cfechafin='';
		$lfechaini=$kk_ano.'-01-01';
		$kk_continuar=true;
		$kk_i=0;
		$lasemana=substr($kk_semana,0,2);
		while ($kk_continuar){
		   $lfechaini = 
         $this->nm_data->CalculaData($lfechaini, "yyyy-mm-dd", "+", 1, 0, 0, "aaaa-mm-dd",  "yyyy-mm-dd"); 
      ;
		   $lsemana=date("W",strtotime($lfechaini));
		   if ($lasemana==$lsemana){
			 $cfechaini=$lfechaini;
			 $cfechafin=
         $this->nm_data->CalculaData($cfechaini, "yyyy-mm-dd", "+", 6, 0, 0, "aaaa-mm-dd",  "yyyy-mm-dd"); 
      ;
			 $kk_continuar=false;
		   }
			$kk_i++;
			if ($kk_i>365){
				$kk_continuar=false;
			}
		}
		$strsql="select date_format('".$cfechaini."','%d/%b/%Y'),date_format('".$cfechafin."','%d/%b/%Y')";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datafechasinifin = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datafechasinifin[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datafechasinifin = false;
          $datafechasinifin_erro = $this->Db->ErrorMsg();
      } 

		if ($datafechasinifin ===false){
			return array("error"=>'Error:'.$datafechasinifin_erro .' '.$strsql);
		} else {
			$fechasinifin='del:'.$datafechasinifin[0][0].' al:'.$datafechasinifin[0][1];
		}
	  return array("error"=>"",'fechasinifin'=>$fechasinifin);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function traer_rango_de_fechas_segum_semana ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi ------*/

function enviar_whatsapp_waapi($mensaje,$telefono1,$telefono2,$archivo,$configuracion_whatsapp){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$c_id_conf=1;
	$archivo='';
	$narchivo='';
	
	if (isset($_SESSION['enviar_msj_whatsapparc'])){
		$archivo=$_SESSION['enviar_msj_whatsapparc'];
	}

	if ($configuracion_whatsapp<>0){
		$c_id_conf=$configuracion_whatsapp;
	}
	
	$strsql="  select url,identificador1,authorization_bearer
     from api_whatsapp_configuracion
     where id='".$c_id_conf."'";
	$strsql="select url,
       identificador1,
       authorization_bearer,
       estado,
       enviar_copia,
       IFNULL(celular_copia,''),
       enviar_archivos,
       enviar_copia_a_despachador
	   from api_whatsapp_configuracion
	   where id='".$c_id_conf."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datawaapi = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datawaapi[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datawaapi = false;
          $datawaapi_erro = $this->Db->ErrorMsg();
      } 

	if ($datawaapi ===false){
		return array("error"=>"Error #2741 enviar_whatsapp_waapi:".$datawaapi_erro .' '.$strsql);
	}
	if (count($datawaapi )==0){
		return array("error"=>"Error #2741 enviar_whatsapp_waapi no existe configuracion provedor=1 ".$strsql);		
	}
	$url=$datawaapi[0][0];
	$instancia=$datawaapi[0][1];
	$url=str_replace('instancia',$instancia,$url);
	$authorization_bearer=$datawaapi[0][2];
    $l_estado=$datawaapi[0][3];
    $l_enviar_copia=$datawaapi[0][4];
    $l_celular_copia=$datawaapi[0][5];
    $l_enviar_archivos=$datawaapi[0][6];
    $l_enviar_copia_a_despachador=$datawaapi[0][7];
	if (strlen($l_celular_copia)<9 and ''<>$l_celular_copia) {
		$l_celular_copia='506'.$l_celular_copia;
	}
	
	if (strlen($telefono1)<9 and ''<>$telefono1) {
		$telefono1='506'.$telefono1;
	}
	if (strlen($telefono2)<9 and ''<>$telefono2) {
		$telefono2='506'.$telefono2;
	}
		
    $msj=array("error"=>"","respuesta"=>'hola');    
	if (1==$l_estado){
		
			$msj=$this->enviar_whatsapp_waapi_mensaje($telefono1,$mensaje,$url,$authorization_bearer);
			if (''<>$telefono2 and 1==$l_enviar_copia_a_despachador){
				$msj=$this->enviar_whatsapp_waapi_mensaje($telefono2,$mensaje,$url,$authorization_bearer);
			}
			if (1==$l_enviar_copia and ''<>$l_celular_copia){
				$msj=$this->enviar_whatsapp_waapi_mensaje($l_celular_copia,$mensaje,$url,$authorization_bearer);
			}
		
		if (file_exists($archivo) and 1==$l_enviar_archivos){
			$msj=$this->enviar_whatsapp_waapi_mensaje_archivo($telefono1,$mensaje,$url,$authorization_bearer,$archivo);
			if (''<>$telefono2 and 1==$l_enviar_copia_a_despachador){
				$msj=$this->enviar_whatsapp_waapi_mensaje_archivo($telefono2,$mensaje,$url,$authorization_bearer,$archivo);
			}
			if (1==$l_enviar_copia and ''<>$l_celular_copia){
				$msj=$this->enviar_whatsapp_waapi_mensaje_archivo($l_celular_copia,$mensaje,$url,$authorization_bearer,$archivo);
			}
		} 
	}
	return $msj;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi_mensaje_archivo ------*/

function enviar_whatsapp_waapi_mensaje_archivo($numero,$mensaje,$url,$authorization_bearer,$archivo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$datos_binarios = file_get_contents($archivo);
	$bb64=base64_encode($datos_binarios);

	if (isset($_SESSION['enviar_msj_whatsappnarc'])){
		$nombre_arc=$_SESSION['enviar_msj_whatsappnarc'];
		$caption_arc=$_SESSION['enviar_msj_whatsappnarc'];
	} else {
		$info = new SplFileInfo($archivo);
		$nombre_arc=$info->getFilename();
		$caption_arc=$info->getFilename();
	}
	$url=str_replace('send-message','send-media',$url);
	$curl = curl_init();
	
	curl_setopt_array($curl, [
	  CURLOPT_URL => $url,
	  CURLOPT_RETURNTRANSFER => true,
	  CURLOPT_ENCODING => "",
	  CURLOPT_MAXREDIRS => 10,
	  CURLOPT_TIMEOUT => 30,
	  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	  CURLOPT_CUSTOMREQUEST => "POST",
	  CURLOPT_POSTFIELDS => json_encode([
		'mediaBase64' => "$bb64",
		'mediaCaption' => $caption_arc,
		'mediaName' => $nombre_arc,
		'chatId' => $numero.'@c.us'
	  ]),
	  CURLOPT_HTTPHEADER => [
		"accept: application/json",
		"authorization: Bearer ".$authorization_bearer,
		"content-type: application/json"
	  ],
	]);

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

	curl_close($curl);
	if ($err) {
	  return array("error"=>"cURL Error #:" . $err,"respuesta"=>'');
	} else {
	  return array("error"=>"" . $err,"respuesta"=>$response);
	}

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi_mensaje_archivo ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi_mensaje ------*/

function enviar_whatsapp_waapi_mensaje($numero,$mensaje,$url,$authorization_bearer){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
		$curl = curl_init();

		curl_setopt_array($curl, [
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		  CURLOPT_POSTFIELDS => json_encode([
			'chatId' =>  $numero.'@c.us',
			'message' => $mensaje
		  ]),
		  CURLOPT_HTTPHEADER => [
			"accept: application/json",
			"authorization: Bearer ".$authorization_bearer,
			"content-type: application/json"
		  ],
		]);

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

		curl_close($curl);

		if ($err) {
		  return array("error"=>"cURL Error #:" . $err);
		} else {
		  return array("error"=>"","respuesta"=>"","larespuesta"=>$response);
		}	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function enviar_whatsapp_waapi_mensaje ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function deme_monto_en_letras ------*/

function deme_monto_en_letras($l_monto,$la_moneda='colones.'){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$cmonto=$l_monto;
	$l_deci =$l_monto-intval($l_monto);
	$l_monto=intval($l_monto);
	$formatterES = new NumberFormatter("es", NumberFormatter::SPELLOUT);
	if ($l_deci==0){
		$montoenletras= $formatterES->format($l_monto);
		$montoenletras=ucwords($montoenletras);	
		$montoenletras.=' '.$la_moneda;
	} else {
        $montoenletras= $formatterES->format($l_monto);
		$montoenletras=ucwords($montoenletras);
		$montoenletras.=' '.$la_moneda.' con '.number_format($l_deci*100).'/100';
	}
	$montoenletras=str_replace(' Y ',' y ',$montoenletras);
	  return $montoenletras;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function deme_monto_en_letras ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function datos_iniciales_encabezado_empresa ------*/

function datos_iniciales_encabezado_empresa($x_compania){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT initcap(g.nombre) nombre_compania,
						g.telefono,
						g.direccion,
						g.e_mail_acciones,
						g.telefono_acciones,
						g.cedula_juridica
						  FROM gen_compania g
						  WHERE codigo='".$x_compania."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacia = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacia[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacia = false;
          $datacia_erro = $this->Db->ErrorMsg();
      } 

		if ($datacia ===false){
			return array("error"=>"Error #2892 datos_iniciales_encabezado_empresa.globales.php:".$datacia_erro .' '.$strsql);
		} 
		if (count($datacia )==0){
			return array("error"=>"Error: No hay datos");
		}
		return array("error"=>'',
					"nombre_empresa"=>str_replace('S.a.','S.A.',$datacia[0][0]),
					"telefono"=>$datacia[0][1],
					"direccion"=>$datacia[0][2],
					"e_mail_acciones"=>$datacia[0][3],
					"telefono_acciones"=>$datacia[0][4],
					"cedula_juridica"=>$datacia[0][5]);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function datos_iniciales_encabezado_empresa ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function limpiar_el_string_global ------*/

function limpiar_el_string_global($string){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $string = trim($string);
 
    $string = str_replace(
        array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
        array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
        $string
    );
 
    $string = str_replace(
        array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
        array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
        $string
    );
 
    $string = str_replace(
        array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
        array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
        $string
    );
 
    $string = str_replace(
        array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
        array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
        $string
    );
 
    $string = str_replace(
        array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
        array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
        $string
    );
 
    $string = str_replace(
        array('ñ', 'Ñ', 'ç', 'Ç'),
        array('n', 'N', 'c', 'C',),
        $string
    );
 
    $string = str_replace(
        array("\\", "¨", "º", "-", "~",
             "#", "@", "|", "!", "\"",
             "·", "$", "%", "&", "/",
             "(", ")", "?", "'", "¡",
             "¿", "[", "^", "<code>", "]",
             "+",  "¨", "´",
             ">", "< ", ";", ",", ":",
             ".", " "),' ',$string);
    return $string;
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function limpiar_el_string_global ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function validar_varios_correos ------*/

function validar_varios_correos($l_listadecorreos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$numcorreo = explode(";", $l_listadecorreos);
    $mmerrores='';
	for ($k=0;$k<count($numcorreo);$k++){
		if ($this->validateEmail($numcorreo[$k])){
			
		} else {
			$mmerrores.='('.$numcorreo[$k].') ';
		}
	}

	return array("error"=>$mmerrores);

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function validar_varios_correos ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function validateEmail ------*/

function validateEmail($hh_email) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $regex = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
    return preg_match($regex, $hh_email) === 1;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function validateEmail ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function cambiar_nombre_archivo_lib ------*/

function cambiar_nombre_archivo_lib($k_archivo,$k_tipo,$k_id,$k_la_cedula,$k_n_lacedula,$la_tablaext,$carpeta_foto){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$caminocompleto=$this->Ini->path_doc . $carpeta_foto . $k_la_cedula . '/expediente/' . '/'.$k_archivo;
		$caminocompleto=str_replace("//","/",$caminocompleto);

		$strsql="select lower(replace(descripcion,' ','_')) nombre
		  from gen_persona_documentos_expediente_tipo
		 where id=".$k_tipo;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ntipo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ntipo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ntipo = false;
          $ntipo_erro = $this->Db->ErrorMsg();
      } 

		if ($ntipo ===false){
			return array('error'=>'Error:'.$ntipo_erro .' '.$strsql,"nombrearchivo"=>'');
		} 
		if (count($ntipo )==0){
			return array('error'=>'Error en el tipo '.$k_tipo.' no existe'.$strsql,"nombrearchivo"=>'');
		}
	    if (''<>$k_n_lacedula){
			$prefijoarchivo=$ntipo[0][0].'_'.$k_n_lacedula.'_'.$k_la_cedula.'.pdf';
		} else {
			$prefijoarchivo=$ntipo[0][0].'_'.$k_la_cedula.'.pdf';
		}
		$archivonuevo=$this->Ini->path_doc . $carpeta_foto . $k_la_cedula . '/expediente/' .$prefijoarchivo;
		if (file_exists($caminocompleto)){
			rename($caminocompleto, $archivonuevo);
			if (file_exists($archivonuevo)){
				$k_archivo=$prefijoarchivo;
				$strsql="update ".$la_tablaext." set archivo='".$prefijoarchivo."' where id='".$k_id."'";
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updexarc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updexarc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updexarc = false;
          $updexarc_erro = $this->Db->ErrorMsg();
      } 

				if ($updexarc ===false){
					return array("error"=>"Error:".$updexarc_erro .' '.$strsql,"nombrearchivo"=>'');
				}
			}

		} else {
			return array("error"=>'Archivo:'.$caminocompleto.' no encontrado',"nombrearchivo"=>'');
		}
		return array("error"=>"","nombrearchivo"=>$prefijoarchivo);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function cambiar_nombre_archivo_lib ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function SC_function_0 ------*/

function SC_function_0(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$paraverporquepasa='1';

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function SC_function_0 ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function modificar_encabezado_de_proforma ------*/

function modificar_encabezado_de_proforma($elid_proforma,$si_update = 'SI'){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$v_m_casa=0;
	$v_m_part=0;
	$v_subtotal=0;
	$v_impuesto=0;
	$v_eltotal=0;
	$v_lasemana='';
 $strsqla= " SELECT t_casa,t_part,t_subtotal,ROUND(t_impuesto,2) t_impuesto,t_subtotal+ROUND(t_impuesto,2) total,
	   DATE_FORMAT(NOW(),'%v-%y') semana,ifnull(cantidad,0) cantidad FROM (
		SELECT  SUM(CAST(IF(tipo_chofer='C',tarifa_viaje,0) AS DECIMAL(12,2))) t_casa ,
		  SUM(CAST(IF(tipo_chofer='P',tarifa_viaje,0) AS DECIMAL(12,2))) t_part,
		  SUM(tarifa_viaje) t_subtotal,
		  SUM(tarifa_viaje*IF(ISNULL(a.id_movimiento),
		                          IF(ISNULL(a.id_boleta),
		                                    if('Servicios'=a.referencia,opspc.paga_iva,g.paga_iva),
		                                    c.paga_iva),
		                      d.paga_iva)*impuesto/100) t_impuesto,
		  count(*) cantidad
		  FROM ope_prefactura_viajes a
		  
		  LEFT JOIN gen_impuesto_de_ventas b ON b.id=1
		  LEFT JOIN pre_chasis_despacho c ON c.id=a.id_boleta
		  LEFT JOIN pre_movimientocontenedor d ON d.id=a.id_movimiento
		  LEFT JOIN ope_boletas_recargos_deta e ON e.id=a.id_recargo_deta
		  LEFT JOIN ope_boletas_recargos_enca f ON f.id=e.id_enca
		  LEFT JOIN pre_chasis_despacho g ON g.id=f.id_boleta
		    left join ope_prefactura_servicios_por_cliente opspc on opspc.id=a.id_tabla_servicios
		    left join ope_prefactura_servicios ff on ff.id=opspc.servicio
		    left join gen_clientes_prefactura_servicios gps on gps.cliente=opspc.cliente and gps.servicio=opspc.servicio
		    left join gen_monedas mn on mn.id=gps.moneda
		 WHERE  a.pre_factura=".$elid_proforma.") a";

     
      $nm_select = $strsqla; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $asele_monto = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $asele_monto[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $asele_monto = false;
          $asele_monto_erro = $this->Db->ErrorMsg();
      } 

	if ($asele_monto ===false){
	   return array("error"=>"Error #3116.sql_update_enca_proforma:".$asele_monto_erro .' '.$strsqla,"strsql"=>$strsqla);
	} else {
		$v_m_casa=$this->verificar_si_es_numero($asele_monto[0][0]);
		$v_m_part=$this->verificar_si_es_numero($asele_monto[0][1]);
		$v_subtotal=$this->verificar_si_es_numero($asele_monto[0][2]);
		$v_impuesto=$this->verificar_si_es_numero($asele_monto[0][3]);
		$v_eltotal=$this->verificar_si_es_numero($asele_monto[0][4]);
		$v_lasemana=$asele_monto[0][5];
		$v_cantidad=$asele_monto[0][6];
		if (0<>$v_cantidad){
				$strsql="update ope_prefactura_encabezado set 
						   monto_casa=$v_m_casa,
						   monto_particular=$v_m_part,
						   subtotal=$v_subtotal,
						   impuesto=$v_impuesto,
						   total=$v_eltotal,
						   semana='$v_lasemana'
						   where id=".$elid_proforma;
				if ('SI'==$si_update){
					 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $aupd_enca_prefa = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $aupd_enca_prefa[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $aupd_enca_prefa = false;
          $aupd_enca_prefa_erro = $this->Db->ErrorMsg();
      } 

					if ($aupd_enca_prefa ===false){
						return array("error"=>"Error #3134.sql_update_enca_proforma:".$aupd_enca_prefa_erro .' '.$strsql,
									 "strsql"=>$strsql,
									 "strsqla"=>$strsqla,
									"v_m_casa"=>$v_m_casa,
									"v_m_part"=>$v_m_part,
									"v_subtotal"=>$v_subtotal,
									"v_impuesto"=>$v_impuesto,
									"v_eltotal"=>$v_eltotal,
									"v_lasemana"=>$v_lasemana,
									"v_cantidad"=>$v_cantidad);
					} //($aupd_enca_prefa ===false)
				} //('SI'==$si_update)
		} //(0<>$v_cantidad)
	} 
	return array("error"=>"",
				 "strsql"=>$strsql,
				 "strsqla"=>$strsqla,
				"v_m_casa"=>$v_m_casa,
				"v_m_part"=>$v_m_part,
				"v_subtotal"=>$v_subtotal,
				"v_impuesto"=>$v_impuesto,
				"v_eltotal"=>$v_eltotal,
				"v_lasemana"=>$v_lasemana,
				"v_cantidad"=>$v_cantidad);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function modificar_encabezado_de_proforma ------*/


/*----- Scriptcase Locale: PHP Method: globales.php => function uno_dos_tre_cuatro_cinco ------*/

function uno_dos_tre_cuatro_cinco(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	echo 'oscarquiroscoto';

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: globales.php => function uno_dos_tre_cuatro_cinco ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function aplicar_traslado ------*/

function aplicar_traslado($g_idencabezado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    $strsql="update inv_traslados_encabezado a,(
		         select sum(cantidad) cantidad,sum(total) total from inv_traslados_detalle where id_encabezado=".$g_idencabezado.") b
				    set a.total_cantidad=b.cantidad,
					    a.total_costo=b.total
				  where id=".$g_idencabezado;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $totalesx = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $totalesx[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $totalesx = false;
          $totalesx_erro = $this->Db->ErrorMsg();
      } 

	    if ($totalesx ===false){
			return array("error"=>"Error #9 <b>aplicar_traslado:".$totalesx_erro .'</b><br>'.$strsql);
		}
		$strsql="select  estado from inv_traslados_encabezado where id=".$g_idencabezado.' for update';
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datablocet = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datablocet[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datablocet = false;
          $datablocet_erro = $this->Db->ErrorMsg();
      } 

		if ($datablocet ===false){
			return array("error"=>"Error #7 <b>aplicar_traslado:".$datablocet_erro .'</b><br>'.$strsql);
		}
		if (count($datablocet )==0){
			return array("error"=>"Error #10 <br>aplicar_traslado: el id ".$g_idencabezado." no existe</b>");
		}
	$strsql=" select a.mes,a.ano,
					 b.mes,b.ano,
					 ifnull(concat(a.ano,'-',a.mes),'namesano') anomes,
					 ifnull(date_format(fecha,'%Y-%m'),'nafecha') anomes2,
					 a.compania,
					 a.division,
					 ifnull(a.numeroasiento,'') numeroasiento
				from inv_traslados_encabezado a,
					 inv_control_companias b
			   where a.compania=b.compania
				 and a.id='".$g_idencabezado."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $vercontrol = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $vercontrol[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $vercontrol = false;
          $vercontrol_erro = $this->Db->ErrorMsg();
      } 

	  if ($vercontrol ===false){
		 return array("error"=>"Error #20 <b>aplicar_traslado:".$vercontrol_erro .'</b><br>'.$strsql); 
	  }
	  if (count($vercontrol )==0){
		 return array("error"=>"Error #24 aplicar_traslado: no existe control"); 
	  }
	  if ($vercontrol[0][0]<>$vercontrol[0][2] or
	      $vercontrol[0][1]<>$vercontrol[0][3]){
			return array("error"=>"Error #28 <b>aplicar_traslado: Error en control el periodo actual es:". $vercontrol[0][0].'/'.$vercontrol[0][1].' y el traslado esta en el periodo:'.$vercontrol[0][2].'/'.$vercontrol[0][3].'</b></b>'); 
	  }
	  if ($vercontrol[0][4]<>$vercontrol[0][5]){
		 return array("error"=>"Error #31 <b>en la fecha del documento:".$vercontrol[0][4].", es diferente al mes y año a aplica:".$vercontrol[0][5].'</b><br>'); 
	  }
	$k_cia=$vercontrol[0][6];
	$k_mes=$vercontrol[0][0];
	$k_ano=$vercontrol[0][1];
	$k_div=$vercontrol[0][7];
	$$k_numeroasiento=$vercontrol[0][8];
    
	  $strsql=$this->generar_sql_traslado($g_idencabezado);
	  
	  $strv=$strsql.' and (ifnull(existencia,0)+cantidad)<0';
	   
      $nm_select = $strv; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataverifica = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverifica = false;
          $dataverifica_erro = $this->Db->ErrorMsg();
      } 

	  if ($dataverifica ===false){
		  return array("error"=>"Error #48 <b>aplicar_traslado:".$dataverifica_erro .' </b><br>'.$strv);
	  }
	  $t=0;
	  $html='';
	  $n_bodega='';
	  while (!$dataverifica->EOF){
		 $l_estado=intval($dataverifica->fields[15]);
		 if (1<>$l_estado){
			 return array("error"=>"Error #56 <b>aplicar_traslado: el id del encabezado no esta pendiente de aplicar</b>");
		 }
		 $t++;
		 $n_bodega=' de Bodega:'.$dataverifica->fields[9];
		 $html=$html.'<tr>
		                <th style="text-align:left">'.$dataverifica->fields[6].'</th>
		                <th style="text-align:left">'.$dataverifica->fields[7].'</th>
		                <th style="text-align:right">'.$dataverifica->fields[3].'</th>
		                <th style="text-align:right">'.$dataverifica->fields[4].'</th>
		              </tr>';
		 $dataverifica->MoveNext();
	  }
	  $dataverifica->Close();
	  if (0<>$t){
		 $html='<label>Lista de articulos los cuales no se puede hacer el traslado '.$n_bodega.'</label>
		        <table border="1">
		         <tr>
				    <th style="text-align:center">Codigo</th>
				    <th style="text-align:center">Descripcion</th>
				    <th style="text-align:center">Traslado</th>
				    <th style="text-align:center">Existencia</th>
				 </tr>'.$html.'</table>';
		 return array("error"=>$html);
	  }

	$msj=$this->traer_consecutivo_array($k_cia,$k_div,9,30);
	if (''<>$msj['error']){
		return $msj;
	}
	$num_trasla=$msj['consecutivo'];
	
	$msj=$this->generar_asiento_traslado($num_trasla,$strsql,$k_cia,$k_mes,$k_ano,$g_idencabezado,$k_numeroasiento);
	if (''<>$msj['error']){
		return $msj;
	}
	$numeroasiento=$msj['numeroasiento'];
	
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($paraplicar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $paraplicar = false;
          $paraplicar_erro = $this->Db->ErrorMsg();
      } 

	if ($paraplicar ===false){
		return array("error"=>"Error #82 <b>aplicar_traslado:".$paraplicar_erro .'</b><br> '.$strsql);
	}
	$t=0;
		
	while (!$paraplicar->EOF){

		$t++;
	   	$k_cia=$paraplicar->fields[0];
	   	$k_div=$paraplicar->fields[1];
	   	$k_bodega=$paraplicar->fields[2];
	   	$k_cantidad=$paraplicar->fields[3];
		$k_codigo=$paraplicar->fields[6];
		$k_bo_destino=$paraplicar->fields[8];
	   	$k_costo=$paraplicar->fields[10];
	   	$k_tipo=$paraplicar->fields[11];
	   	$k_id_exis=$paraplicar->fields[12];
	   	$k_id_deta=$paraplicar->fields[13];
	   	$k_id_enca=$paraplicar->fields[14];
	   	$k_estado=$paraplicar->fields[15];
		
	   	$k_quien_solocita=$paraplicar->fields[16];
	   	$k_quien_recibe=$paraplicar->fields[17];

	   	$k_tc=$paraplicar->fields[18];
		 if (1<>$k_estado){
			 return array("error"=>"Error #126 <b>aplicar_traslado: el id del encabezado no esta pendiente de aplicar</b>");
		 }
		 if ('xxxx'==$k_quien_solocita){
			 return array("error"=>"Error #129 <b>debe indicar la persona que solicitia</b>");
		 }
		 if ('xxxx'==$k_quien_recibe){
			 return array("error"=>"Error #132 <b>debe indicar la persona que recibe</b>");
		 }
		 

	 if (2==$k_tipo){
		 $k_cantidad=-1*$k_cantidad;
		 $k_costo=-1*$k_costo;
	  }
	  $msj=$this->hacer_salida($k_cia,$k_div,$k_bodega,$k_codigo,$k_cantidad,$k_costo);
	  if (''<>$msj['error']){
		  return $msj;
	  }
	  $msj=$this->hacer_entrada($k_cia,$k_div,$k_bo_destino,$k_codigo,abs($k_cantidad),abs($k_costo),$k_id_exis);
	  if (''<>$msj['error']){
		  return $msj;
	  }
	  $idbdest=$msj['elid'];
	  $msj=$this->procesar_series_traslado($k_id_enca,$k_id_deta,$k_id_exis,$idbdest);
	  if (''<>$msj['error']){
		  return $msj;
	  }
	$paraplicar->MoveNext();
	}
	$paraplicar->Close();
	$strsql="update inv_traslados_encabezado set numero='".$num_trasla."',estado=2,numeroasiento='".$numeroasiento."' where id='".$g_idencabezado."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupden = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupden[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupden = false;
          $dataupden_erro = $this->Db->ErrorMsg();
      } 

	if ($dataupden ===false){
		return array("error"=>"Error #120 <b>aplicar_traslado:".$dataupden_erro .' </b><br>'.$strsql);
	}
	
	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function aplicar_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function hacer_salida ------*/

function hacer_salida($lk_cia,$lk_div,$lk_bodega,$lk_codigo,$lk_cantidad,$lk_costo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  
	  $strsql="update inv_existencias set existencia=existencia+".$lk_cantidad.",
	                                      existencia_costo=existencia_costo+".$lk_costo.",
	                                      otros=otros+".$lk_cantidad.",
										  otros_costo=otros_costo+".$lk_costo."
		        where compania='".$lk_cia."'
			      and division='".$lk_div."'
				  and bodega='".$lk_bodega."'
				  and codigo_articulo='".$lk_codigo."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupsalida = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupsalida[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupsalida = false;
          $dataupsalida_erro = $this->Db->ErrorMsg();
      } 

	  if ($dataupsalida ===false){
		  return array("error"=>"Error #138 <b>aplicar_traslado.hacer_salida:".$dataupsalida_erro .'</b><br> '.$strsql);
	  }
	  return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function hacer_salida ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function hacer_entrada ------*/

function hacer_entrada($k_cia,$k_div,$k_bo_destino,$k_codigo,$k_cantidad,$k_costo,$elid){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $strsql="select id from inv_existencias 
		        where compania='".$k_cia."'
			      and division='".$k_div."'
				  and bodega='".$k_bo_destino."'
				  and codigo_articulo='".$k_codigo."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupentrada = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupentrada[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupentrada = false;
          $dataupentrada_erro = $this->Db->ErrorMsg();
      } 

	  if ($dataupentrada ===false){
		  return array("error"=>"Error #151 <b>aplicar_traslado.hacer_salida:".$dataupentrada_erro .'</b><br> '.$strsql);
	  }
	  if (count($dataupentrada )==0){
		  $ccprom=0;
		  if ($k_cantidad<>0){
			  $ccprom=$k_costo/$k_cantidad;
		  }
		 $strsql="insert into inv_existencias 
		          (compania,division,bodega,codigo_articulo,otros,otros_costo,existencia,existencia_costo,costo_promedio,mes,ano)
				  select '".$k_cia."','".$k_div."','".$k_bo_destino."','".$k_codigo."',
						 ".$k_cantidad.",".$k_costo.",".$k_cantidad.",".$k_costo.",".$ccprom.",mes,ano
					from inv_control_companias
					where compania='".$k_cia."'";
		   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insnuewinv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insnuewinv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insnuewinv = false;
          $insnuewinv_erro = $this->Db->ErrorMsg();
      } 

		  if ($insnuewinv ===false){
			  return array("error"=>"Error #166 <b>aplicar_traslado.hacer_entrada_bodega:".$insnuewinv_erro .'</b><br> '.$strsql);
		  }
		   
      $nm_select = "select last_insert_id()"; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ultimoreg = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ultimoreg[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ultimoreg = false;
          $ultimoreg_erro = $this->Db->ErrorMsg();
      } 

		  if ($ultimoreg ===false){
			  return array("error"=>"Error #170 <b>aplicar_traslado.hacer_entrada_bodega:".$ultimoreg_erro .' last_insert_id</b>');
		  }
		  if (count($ultimoreg )==0){
			  return array("error"=>"Error #173 <b>aplicar_traslado.hacer_entrada_bodega:last_insert_id count=0</b>");
		  }
		  $elid=$ultimoreg[0][0];
		  return array("error"=>"","elid"=>$elid);
	  }
	  $elid=$dataupentrada[0][0];
	  $msj=$this->hacer_salida($k_cia, $k_div,$k_bo_destino, $k_codigo, $k_cantidad,$k_costo);
	  if (''<>$msj['error']){
		 return $msj;
	  }
	  return array("error"=>"","elid"=>$elid);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function hacer_entrada ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function procesar_series_traslado ------*/

function procesar_series_traslado($k_id_enca,$k_id_deta,$k_id_exis,$idbdest){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $strsql="SELECT a.serie,
	                  b.id_existencia,
					  b.estado_actual
              FROM inv_traslados_detalle_series a
              LEFT JOIN inv_existencias_series b ON a.serie=b.serie
            WHERE a.id_encabezado='".$k_id_enca."'
              AND a.id_detalle='".$k_id_deta."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataseries = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataseries = false;
          $dataseries_erro = $this->Db->ErrorMsg();
      } 

	  if ($dataseries ===false){
		 return array("error"=>"Error #196 <b>aplicar_traslado.procesar_series_traslado:".$dataseries[0][0].'</b><br> '.$strsql);
	  }
	  while (!$dataseries->EOF){
		$serie=$dataseries->fields[0];
		$elid=$dataseries->fields[1];
		$estaac=$dataseries->fields[2];
		if ($elid<>$k_id_exis){
			return array("error"=>"Error #203 <b>aplicar_traslado.procesar_series_traslado el id de existencia".$k_id_exis." no coincide con el detalle:".$elid."</b>");
		}
		if (1<>$estaac){
			return array("error"=>"Error #206 <b>aplicar traslado.procesar_series_traslado el estado actual debe ser 1, y esta en:".$estaac.'</b>');
		}
		$strsql="update inv_existencias_series set id_existencia=".$idbdest.
		          ",id_traslado='".$k_id_enca."' where serie='".$serie."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updserie = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updserie[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updserie = false;
          $updserie_erro = $this->Db->ErrorMsg();
      } 

		if ($updserie ===false){
			return array("error"=>"Error #212 <b>aplicar_traslado.procesar_series_traslado:".$updserie[0][0].'</b><br> '.$strsql);
		}
	    $dataseries->MoveNext();
	  }
	  $dataseries->Close();
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function procesar_series_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function eliminar_asiento_anterior ------*/

function eliminar_asiento_anterior($num_trasla,$h_strsql,$c_cia,$c_mes,$c_ano,$c_id_encabezado,$numero_asiento_act){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
     $comprobante='Trasla-'.$num_trasla;
	 $astrsql="delete from con_asientos_detalle where compania='".$c_cia."' and numeroasiento='".$numero_asiento_act."' and numerodocumento=".$num_trasla;
	  
      $nm_select = $astrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $delasdet = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $delasdet[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $delasdet = false;
          $delasdet_erro = $this->Db->ErrorMsg();
      } 

	 if ($delasdet ===false){
		 return array("error"=>"Error #308 eliminar_asiento_anterior:".$delasdet_erro .' '.$astrsql);
	 }

	 $strsql="update  con_asientos_encabezado 
	            set debitos_extranjero=0,
				    creditos_extranjero=0,
					debitos_local=0,
					creditos_local=0
	            where compania='".$c_cia."' and numeroasiento='".$numero_asiento_act."'";
	  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $delasenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $delasenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $delasenca = false;
          $delasenca_erro = $this->Db->ErrorMsg();
      } 

	 if ($delasenca ===false){
		 return array("error"=>"Error #314 eliminar_asiento_anterior:".$delasenca_erro .' '.$strsql.' <br><br>'.$astrsql);
	 }
     return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function eliminar_asiento_anterior ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function generar_asiento_traslado ------*/

function generar_asiento_traslado($num_trasla,$h_strsql,$c_cia,$c_mes,$c_ano,$c_id_encabezado,$numero_asiento_act){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  if (''<>$numero_asiento_act){
		  $c_numeroasiento=$numero_asiento_act;
          $msj=$this->eliminar_asiento_anterior($num_trasla,$h_strsql,$c_cia,$c_mes,$c_ano,$c_id_encabezado,$numero_asiento_act);
		  if (''<>$msj['error']){
			 return array("error"=>'Error #303:<b>'.$msj['error'].'</b><br>'); 
		  }	  
	  } else {
		  $c_numeroasiento=$this->trae_numero_asiento($c_cia,$c_mes,$c_ano);
		  $c_numeroasiento=$c_ano.$c_mes.str_pad($c_numeroasiento, 7, "0", STR_PAD_LEFT);
		  $msj=$this->actualizar_numero_asiento($c_cia,$c_mes,$c_ano);
		  if (''<>$msj){
			 return array("error"=>'Error #310:<b>'.$msj.'</b><br>'); 
		  }
	  }
    $comprobante='Trasla-'.$num_trasla;
	if (''<>$numero_asiento_act){
		$strsqljj="update con_asientos_encabezado a 
					left join (select * from (".$h_strsql.") aa ) b on 1=1
					set 
		                  a.debitos_local=abs(b.total_costo),
						  a.creditos_local=abs(b.total_costo),
						  a.debitos_extranjero=abs(b.total_costo)/if(b.tipo_cambio<>0,b.tipo_cambio,500),
						  a.creditos_extranjero=abs(b.total_costo)/if(b.tipo_cambio<>0,b.tipo_cambio,500)
					where a.compania='".$c_cia."' and a.numeroasiento='".$numero_asiento_act."'";
	} else {
		$strsqljj="insert into con_asientos_encabezado (compania,division,anomes,mes,ano,periodofiscal,
								numeroasiento,comprobante,
								fechaproceso,fechaaplicacion,moduloauxiliar,moneda,estado,observaciones,
								debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,tipo_documento,inclusion) 
			select compania,division,concat(ano,mes) anomes,mes,ano,ano periodofiscal,
		'".$c_numeroasiento."' numeroasiento,
		'".$comprobante."' comprobante,
		fecha fechaproceso,null fechaaplicacion,9 moduloauxiliar,1 moneda,1 estado,'' observaciones,
		abs(total_costo)*2 debitos_local,
		abs(total_costo)*2 creditos_local,
		abs(total_costo)/if(tipo_cambio<>0,tipo_cambio,500)*2,
		abs(total_costo)/if(tipo_cambio<>0,tipo_cambio,500)*2,
		'TRAS' tipo_documento,
		'".date('Y-m-d H:i:s')."' inclusion from (".$h_strsql.") a limit 1 ";
	}
    
      $nm_select = $strsqljj; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insasientoe = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insasientoe[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insasientoe = false;
          $insasientoe_erro = $this->Db->ErrorMsg();
      } 

   if ($insasientoe ===false){
	 return array("error"=>"Error #319 <b>Error al crear encabezado de asiento:".$insasientoe_erro .'</b><br>'.$strsqljj,"numeroasiento"=>'');
   }
   $msj=$this->ultimo_registro_grant();
   if (''<>$$msj['error']){
	   return $msj['error'];
   }
   $id_asiento=$msj['id'];
   $strsql="insert into con_asientos_detalle 
   (compania,division,id_asiento,mes,ano,numeroasiento,cuenta,
        debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,descripcionlinea,numerodocumento)  
		SELECT b.compania,
			   b.division,
			   ".$id_asiento." id_asiento,
			   b.mes,
			   b.ano,
			   '".$c_numeroasiento."' numeroasiento,
			   d.cuenta,
			   CAST(0 AS DECIMAL(12,2)) debitos_local,
			   SUM(abs(total)) creditos_local,
			   CAST(0 AS DECIMAL(12,2)) debitos_extranjero,
			   SUM(abs(total)/IFNULL(tcm.tc_venta,IFNULL(tc.tc_venta,500))) creditos_extranjero,
			   'Traslado de bodega:".$num_trasla."' descripcionlinea,'".$num_trasla."'       
		  FROM inv_traslados_detalle a
		   LEFT JOIN inv_traslados_encabezado b ON a.id_encabezado=b.id
		   LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.codigo_articulo=a.codigo_articulo
		   LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria AND d.sub_categoria=c.sub_categoria AND tipo_cuenta=1,
		   (SELECT tc_venta FROM `gen_tipos_de_cambio` ORDER BY fecha DESC LIMIT 1) tc,
		   (SELECT tc.tc_venta FROM gen_tipos_de_cambio tc,inv_traslados_encabezado b WHERE tc.fecha=DATE(b.fecha)) tcm
		   WHERE a.id_encabezado=".$c_id_encabezado."
		GROUP BY b.compania,
			   b.division,
			   b.mes,
			   b.ano,
			   d.cuenta

		UNION ALL
		SELECT b.compania,
			   b.division,
			   ".$id_asiento." id_asiento,
			   b.mes,
			   b.ano,
			   '".$c_numeroasiento."' numeroasiento,
			   '131001000000' cuenta,
			   SUM(abs(total)) debitos_local,
			   CAST(0 AS DECIMAL(12,2)) creditos_local,
			   SUM(abs(total)/IFNULL(tcm.tc_venta,IFNULL(tc.tc_venta,500))) debitos_extranjero,
			   CAST(0 AS DECIMAL(12,2)) creditos_extranjero,
			   'Traslado de bodega:".$num_trasla."' descripcionlinea,'".$num_trasla."'      
		  FROM inv_traslados_detalle a
		   LEFT JOIN inv_traslados_encabezado b ON a.id_encabezado=b.id
		   LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.codigo_articulo=a.codigo_articulo
		   LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria AND d.sub_categoria=c.sub_categoria AND tipo_cuenta=1,
		   (SELECT tc_venta FROM `gen_tipos_de_cambio` ORDER BY fecha DESC LIMIT 1) tc,
		   (SELECT tc.tc_venta FROM gen_tipos_de_cambio tc,inv_traslados_encabezado b WHERE tc.fecha=DATE(b.fecha)) tcm
		   WHERE a.id_encabezado=".$c_id_encabezado."
		GROUP BY b.compania,
			   b.division,
			   b.mes,
			   b.ano
   ";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $indetasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $indetasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $indetasiento = false;
          $indetasiento_erro = $this->Db->ErrorMsg();
      } 

   if ($indetasiento ===false){
	 return array("error"=>"Error #380 <b>generar_asiento_traslado:".$indetasiento_erro .'</b><br>'.$strsql,"numeroasiento"=>'');  
   }
	  $strsql=str_replace("debitos_local,creditos_local,debitos_extranjero,creditos_extranjero",
						  "creditos_local,debitos_local,creditos_extranjero,debitos_extranjero",$strsql);
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $indetasiento_rv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $indetasiento_rv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $indetasiento_rv = false;
          $indetasiento_rv_erro = $this->Db->ErrorMsg();
      } 

   if ($indetasiento_rv ===false){
	 return array("error"=>"Error #392 <b>generar_asiento_traslado:".$indetasiento_rv_erro .'</b><br>'.$strsql,"numeroasiento"=>'');  
   }
   return array("error"=>"","numeroasiento"=>$c_numeroasiento);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function generar_asiento_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function generar_sql_traslado ------*/

function generar_sql_traslado($g_idencabezado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		  return "
	SELECT b.compania,
		   b.division,
		   b.bodega,
		   abs(a.cantidad) cantidad,
		   IFNULL(c.existencia,0) existencia,
		   IFNULL(c.existencia_costo,0) existencia_costo,
		   a.codigo_articulo,
		   d.descripcion,
		   b.bodega_destino,
		   initcap(e.descripcion) nombre_bodega,
		   abs(if(c.existencia<>0,c.existencia_costo/c.existencia,0)*a.cantidad) promedio,
		   b.tipo,
		   c.id id_existencia,
		   a.id id_detalle,
		   b.id id_encabezado,
		   b.estado,
		   ifnull(pa.nombre,'xxxx') quien_solicita,
		   ifnull(pb.nombre,'xxxx') quien_recibe,
		   IFNULL(tcm.tc_venta,IFNULL(tc.tc_venta,0)) tipo_cambio,
		   b.ano,
		   b.mes,
		   b.fecha,
		   b.total_costo,
		   ifnull(b.numeroasiento,'') numeroasiento
		  FROM inv_traslados_detalle a
		    LEFT JOIN inv_traslados_encabezado b ON a.id_encabezado=b.id
		    LEFT JOIN inv_existencias c ON 
		              c.compania=b.compania 
		          AND c.division=b.division 
		          AND c.bodega=b.bodega 
		          AND c.codigo_articulo=a.codigo_articulo
		    LEFT JOIN inv_catalogo_articulos d ON 
		              d.compania=b.compania 
		          AND d.codigo_articulo=a.codigo_articulo 
		          AND d.division=b.division
		    LEFT JOIN inv_bodega e ON 
		              e.compania=b.compania 
		          AND e.bodega=b.bodega
		          AND e.division=b.division
            left join gen_persona pa on pa.cedula=b.quien_solicita
            left join gen_persona pb on pb.cedula=b.quien_recibe,
			(SELECT tc_venta FROM `gen_tipos_de_cambio` ORDER BY fecha DESC LIMIT 1) tc,
			(SELECT tc.tc_venta FROM gen_tipos_de_cambio tc,inv_traslados_encabezado b 
			        WHERE b.id=".$g_idencabezado." and tc.fecha=DATE(b.fecha)) tcm
		where b.id='".$g_idencabezado."'"; 
	  
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function generar_sql_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_traslados.php => function generar_de_nuevo_asiento_traslado_lib ------*/

function generar_de_nuevo_asiento_traslado_lib($c_id_encabezado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$h_strsql=$this->generar_sql_traslado($c_id_encabezado);

	$strsql="select numero,compania,mes,ano,numeroasiento
				from inv_traslados_encabezado
			where id='".$c_id_encabezado."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataencatras = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataencatras[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataencatras = false;
          $dataencatras_erro = $this->Db->ErrorMsg();
      } 

	if ($dataencatras ===false){
		return array("error"=>"Error funciones_generales.generar_asient_traslado #454:".$dataencatras_erro .' '.$strsql);
	}
	$num_trasla=$dataencatras[0][0];
	$c_cia=$dataencatras[0][1];
	$c_mes=$dataencatras[0][2];
	$c_ano=$dataencatras[0][3];
	$numero_asiento_act=$dataencatras[0][4];

	$msj=$this->generar_asiento_traslado($num_trasla,$h_strsql,$c_cia,$c_mes,$c_ano,$c_id_encabezado,$numero_asiento_act);
	if (''<>$msj['error']){
		$elerror=$msj['error'].' '.$strsql;
		return array("error"=>$elerror);
	}

	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_traslados.php => function generar_de_nuevo_asiento_traslado_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_trasacciones_pendientes_lib ------*/

function verificar_trasacciones_pendientes_lib($vtpl_cia,$vtpl_mes,$vtpl_ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select compania
					from inv_entradas_encabezado 
				where estado<>2 and estado<>3
				  and compania='".$vtpl_cia."'
				  and mes='".$vtpl_mes."'
				  and ano='".$vtpl_ano."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexisteentsinapl = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexisteentsinapl[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisteentsinapl = false;
          $dataexisteentsinapl_erro = $this->Db->ErrorMsg();
      } 

		if ($dataexisteentsinapl ===false){
			return "#6.Error verificar_transacciones_pendientes:<br><b>".$dataexisteentsinapl_erro .'</b><br> '.$strsql;
		}
	    $z_cant=count($dataexisteentsinapl );
		if ($z_cant<>0){
			return 'Error existen '.$z_cant.' compras del mes pendientes de aplicar';
		}
		$strsql="select compania
					from inv_salidas_encabezado 
				where estado<>2 and estado<>3
				  and compania='".$vtpl_cia."'
				  and mes='".$vtpl_mes."'
				  and ano='".$vtpl_ano."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataexistesalsinapl = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataexistesalsinapl[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexistesalsinapl = false;
          $dataexistesalsinapl_erro = $this->Db->ErrorMsg();
      } 

		if ($dataexistesalsinapl ===false){
			return "#22.Error verificar_transacciones_pendientes:<br><b>".$dataexistesalsinapl_erro .'</b><br> '.$strsql;
		}
	    $z_cant=count($dataexistesalsinapl );
		if ($z_cant<>0){
			return 'Error existen '.$z_cant.' salidas del mes pendientes de aplicar';
		}

		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_trasacciones_pendientes_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_entrada_salida_series ------*/

function verificar_entrada_salida_series($iddelmovi,$entradasalida){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
     
		if ('entradas'==$entradasalida){
			$camposercant='cantidad_a_inventario';
			$otrowhere='';
			$otratabla='';
		} else {
			$camposercant='cantidad_salida';
			$otrowhere=''; 
		}
		$strsql=" select b.codigo_articulo,a.id_encabezado,abs(a.".$camposercant.") ".$camposercant.",a.cant_series from (
		          SELECT a.id_encabezado,abs(a.".$camposercant.") ".$camposercant.",IFNULL(cant_series,0) cant_series
					FROM inv_".$entradasalida."_detalle a 
						 LEFT JOIN (SELECT a.id_detalle,COUNT(*) cant_series 
									  FROM inv_".$entradasalida."_detalle_series a
									  WHERE a.id_encabezado=".$iddelmovi." AND IFNULL(a.serie,'')<>''                  
									  GROUP BY a.id_detalle) c ON a.id=c.id_detalle,
						 inv_catalogo_articulos_cualidades_articulo b
				   WHERE a.id_encabezado=".$iddelmovi."
					 AND a.codigo_articulo=b.codigo_articulo
					 AND b.cualidad=5) a,
     			         inv_".$entradasalida."_detalle b 
                   where a.id_encabezado=b.id_encabezado and abs(a.".$camposercant.")<>a.cant_series";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadeseries = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadeseries[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadeseries = false;
          $datadeseries_erro = $this->Db->ErrorMsg();
      } 

		if ($datadeseries ===false){
			return array("error"=>"Error #50 puede_aplicar_este_id:".$datadeseries_erro .' '.$strsql);
		}
		if (count($datadeseries )<>0){
		   if (''==$otrowhere){
		   return array("error"=>"Error #65 puede_aplicar_este_id: Codigo:".$datadeseries[0][0].' tiene error en las series ingresadas');
		   } else {
		   return array("error"=>"Error #67 puede_aplicar_este_id: Codigo:".$datadeseries[0][0].' tiene error en las series ingresadas revisar estados');
		   }
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_entrada_salida_series ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_este_id ------*/

function puede_aplicar_este_id($elidmovimiento,$entradasalida){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
        $msj=$this->verificar_entrada_salida_series($elidmovimiento,$entradasalida);
		if (''<>$msj['error']){
			return $msj;
		}
        $ctblencabezado='inv_salidas_encabezado';
	    if ('entrada'==$entradasalida or 'entradas'==$entradasalida){
			$ctblencabezado='inv_entradas_encabezado';
		}
		$strsql="SELECT a.id,descripcion,d.mes mes_control,d.ano ano_control,c.mes,c.ano
				  FROM con_tipo_documento a,
				  gen_usuario_seguridad_login aa,
				  gen_usuario_seguridad_login_tipo_documento b,
				  ".$ctblencabezado." c,
				  inv_control_companias d 
				 WHERE aa.login='".$_SESSION['grant']['usr_login']."' 
				   and c.id=".$elidmovimiento." and c.tipo_documento=a.id
				   AND aa.id_Seguridad IN (10,12,14,16,9,31,32)
				   AND aa.id_seguridad=b.id_seguridad
				   and a.id IN (9,10,23,24,21,1,2)
				   and a.id=b.tipo_documento
				   AND d.compania=c.compania
				union all
				 select a.tipo_documento,b.descripcion,c.mes mes_control,c.ano ano_control,a.mes,a.ano
				 from ".$ctblencabezado." a,
					  con_tipo_documento b,
					inv_control_companias c
				 where a.id=".$elidmovimiento."
				   and a.tipo_documento=b.id
				   and a.compania=c.compania";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataseguridadx = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataseguridadx[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataseguridadx = false;
          $dataseguridadx_erro = $this->Db->ErrorMsg();
      } 

		if ($dataseguridadx ===false){
			return array("error"=>"Error #23 puede_aplicar_este_id".$dataseguridadx_erro .' '.$strsql);
		}
		if (count($dataseguridadx )==1){
			return array("error"=>"Error #33 El usuario:".$_SESSION['grant']['usr_login'].
						  " no puede aplicar ".$dataseguridadx[0][0].'-'.$dataseguridadx[0][1]);
		}
		if (count($dataseguridadx )==0){
			return array("error"=>"Error #33-1 El usuario:".$_SESSION['grant']['usr_login'].
						  " no puede aplicar ".$strsql);
		}
		if ($dataseguridadx[0][2]<>$dataseguridadx[0][4] or $dataseguridadx[0][3]<>$dataseguridadx[0][5]){
			return array("error"=>"Error #36 no se puede aplicar el periodo es distinto control:".$dataseguridadx[0][2].'/'.$dataseguridadx[0][3].
						' movimiento:'.$dataseguridadx[0][4].'/'.$dataseguridadx[0][5].' id:'.$elidmovimiento.' : '.$ctblencabezado);
		}
	  return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_este_id ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_modificar_toma_fisica_auxiliar ------*/

function puede_modificar_toma_fisica_auxiliar() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=19";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_fisica_auxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_fisica_auxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_fisica_auxiliar = false;
          $data_puede_fisica_auxiliar_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_fisica_auxiliar ===false){
			return array("error"=>'Error #83 : data_puede_crear_compras:<br><b>'.$data_puede_fisica_auxiliar_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_fisica_auxiliar )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_modificar_toma_fisica_auxiliar ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_agregar_toma_fisica_auxiliar ------*/

function puede_agregar_toma_fisica_auxiliar() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=20";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_afisica_auxiliar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_afisica_auxiliar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_afisica_auxiliar = false;
          $data_puede_afisica_auxiliar_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_afisica_auxiliar ===false){
			return array("error"=>'Error #83 : data_puede_crear_compras:<br><b>'.$data_puede_afisica_auxiliar_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_afisica_auxiliar )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_agregar_toma_fisica_auxiliar ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_compras ------*/

function puede_crear_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=8";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_crear_compras = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_crear_compras[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_crear_compras = false;
          $data_puede_crear_compras_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_crear_compras ===false){
			return array("error"=>'Error #49 : data_puede_crear_compras:<br><b>'.$data_puede_crear_compras_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_crear_compras )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_compras ------*/

function puede_aplicar_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=9";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_aplicar_compras = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_aplicar_compras[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_aplicar_compras = false;
          $data_puede_aplicar_compras_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_aplicar_compras ===false){
			return array("error"=>'Error #64 : puede_aplicar_compras:<br><b>'.$data_puede_aplicar_compras_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_aplicar_compras )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_des_aplicar_compras ------*/

function puede_des_aplicar_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=29";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $puede_des_aplicar_compras = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $puede_des_aplicar_compras[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $puede_des_aplicar_compras = false;
          $puede_des_aplicar_compras_erro = $this->Db->ErrorMsg();
      } 

		if ($puede_des_aplicar_compras ===false){
			return array("error"=>'Error #64 : puede_des_aplicar_compras:<br><b>'.$puede_des_aplicar_compras_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($puede_des_aplicar_compras )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_des_aplicar_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_salidas ------*/

function puede_crear_salidas() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=10";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_crear_salidas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_crear_salidas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_crear_salidas = false;
          $data_puede_crear_salidas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_crear_salidas ===false){
			return array("error"=>'Error #80 : puede_crear_salidas:<br><b>'.$data_puede_crear_salidas_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_crear_salidas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_salidas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_salidas ------*/

function puede_aplicar_salidas() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=11";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_aplicar_salidas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_aplicar_salidas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_aplicar_salidas = false;
          $data_puede_aplicar_salidas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_aplicar_salidas ===false){
			return array("error"=>'Error #96 : puede_aplicar_salidas:<br><b>'.$data_puede_aplicar_salidas_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_aplicar_salidas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_salidas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_entradas ------*/

function puede_crear_entradas() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=12";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_crear_entradas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_crear_entradas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_crear_entradas = false;
          $data_puede_crear_entradas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_crear_entradas ===false){
			return array("error"=>'Error #111 : puede_crear_entradas:<br><b>'.$data_puede_crear_entradas_erro .'</b><br>'.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_crear_entradas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_entradas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_entradas ------*/

function puede_aplicar_entradas() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=13";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_aplicar_entradas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_aplicar_entradas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_aplicar_entradas = false;
          $data_puede_aplicar_entradas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_aplicar_entradas ===false){
			return array("error"=>'Error #126 : puede_aplicar_entradas:<br><b>'.$data_puede_aplicar_entradas_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_aplicar_entradas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_entradas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_ajuste_mas_compras ------*/

function puede_crear_ajuste_mas_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=14";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_crear_aj_mas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_crear_aj_mas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_crear_aj_mas = false;
          $data_puede_crear_aj_mas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_crear_aj_mas ===false){
			return array("error"=>'Error #142 : puede_crear_ajuste_mas_compras:<br><b>'.$data_puede_crear_aj_mas_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_crear_aj_mas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_ajuste_mas_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_ajuste_mas_compras ------*/

function puede_aplicar_ajuste_mas_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
			$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=15";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_apl_aj_mas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_apl_aj_mas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_apl_aj_mas = false;
          $data_puede_apl_aj_mas_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_apl_aj_mas ===false){
			return array("error"=>'Error #158 : puede_aplicar_ajuste_mas_compras:<br><b>'.$data_puede_apl_aj_mas_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_apl_aj_mas )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_ajuste_mas_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_ajuste_menos_compras ------*/

function puede_crear_ajuste_menos_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
			$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=16";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_crear_aj_men = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_crear_aj_men[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_crear_aj_men = false;
          $data_puede_crear_aj_men_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_crear_aj_men ===false){
			return array("error"=>'Error #174 : puede_crear_ajuste_menos_compras:<br><b>'.$data_puede_crear_aj_men_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_crear_aj_men )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_crear_ajuste_menos_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_ajuste_menos_compras ------*/

function puede_aplicar_ajuste_menos_compras() {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
   
			$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad=17";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_apl_aj_men = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_apl_aj_men[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_apl_aj_men = false;
          $data_puede_apl_aj_men_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_apl_aj_men ===false){
			return array("error"=>'Error #159 : puede_aplicar_ajuste_menos_compras:<br><b>'.$data_puede_apl_aj_men_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_apl_aj_men )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puede_aplicar_ajuste_menos_compras ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puedo_aplicar_entradas_o_salidas ------*/

function puedo_aplicar_entradas_o_salidas(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT login
				   FROM gen_usuario_seguridad_login
				  WHERE login='".$_SESSION['grant']['usr_login']."'
					AND id_seguridad in (11,13) ";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_puede_aplicar_compras = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_puede_aplicar_compras[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_puede_aplicar_compras = false;
          $data_puede_aplicar_compras_erro = $this->Db->ErrorMsg();
      } 

		if ($data_puede_aplicar_compras ===false){
			return array("error"=>'Error #206 : puedo_aplicar_entradas_o_salidas:<br><b>'.$data_puede_aplicar_compras_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
		}
		if (count($data_puede_aplicar_compras )==0){
			return array("error"=>"","autoriza"=>'NO');
		} else {
			return array("error"=>"","autoriza"=>'SI');
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puedo_aplicar_entradas_o_salidas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_la_toma_fisica ------*/

function aplicar_la_toma_fisica($id_toma_fisica){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$msj=$this->inv_act_inventario_toma_fisica($id_toma_fisica);
	if (''<>$msj){
		return array("error"=>'#218.aplicar_la_toma_fisica:<br><b>'.$msj.'</b>');
	}
	$strsql="select ifnull(existencia,0) existencia,
					ifnull(toma_fisica,0) toma_fisica,
					ifnull(salidas,0) salidas,
					ifnull(entradas,0) entradas,
					compania,
					division,
					bodega,
					ifnull(tc,0) tc,
					mes,
					ano
					from (
			select sum(a.existencia) existencia,
				   sum(a.toma_fisica) toma_fisica,
				   sum(if(a.existencia>a.toma_fisica,a.existencia-a.toma_fisica,0)) salidas,
				   SUM(IF(a.existencia>a.toma_fisica,0,a.toma_fisica-a.existencia)) entradas,
				   b.compania,b.division,b.bodega,
				   (SELECT tc_venta FROM gen_tipos_de_cambio ORDER BY fecha DESC limit 1) tc,
				   ifnull(c.mes,0) mes,
				   ifnull(c.ano,'') ano
			  from inv_existencias a left join inv_control_companias c on a.compania=c.compania,
				   inv_toma_fisica_encabezado b
				   
			  where hay_fisico=1
				and a.compania=b.compania
				and a.division=b.division
				and a.bodega=b.bodega
				and b.estado=1
				and b.id='".$id_toma_fisica."') a";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainvtmf = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainvtmf[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainvtmf = false;
          $datainvtmf_erro = $this->Db->ErrorMsg();
      } 

	if ($datainvtmf ===false){
		return array("error"=>"#250.aplicar_la_toma_fisica Error:<br><b>".$datainvtmf_erro .'</b><br>'.$strsql);
	}
	
	if (count($datainvtmf )==0){
		return array("error"=>"#254.La toma fisica no genera ajuste");
	}
	
	
	$i_salidas =$datainvtmf[0][2];
	$i_entradas=$datainvtmf[0][3];
	$i_compania=$datainvtmf[0][4];
	$i_division=$datainvtmf[0][5];
	$i_bodega  =$datainvtmf[0][6]; 
	$i_tc      =$datainvtmf[0][7];
	$i_mes     =$datainvtmf[0][8];
	$i_ano     =$datainvtmf[0][9];
	
	if ($i_salidas==0 and $i_entradas==0){
		return array("error"=>"#268.La toma fisica no genera ajuste");
	}
	if (0==$i_tc){
		return array("error"=>"#271 Error en el tipo de cambio");
	}
	if (''==$i_mes){
		return array("error"=>"#274 Error en el control MES y año");
	}
	if (''==$i_ano){
		return array("error"=>"#277 Error en el control mes y AÑO");
	}
	
	if (strpos(strtolower($this->Ini->nm_tpbanco), "access") === false && !$this->Ini->sc_tem_trans_banco)
{
    $this->Db->BeginTrans();
    $this->Ini->sc_tem_trans_banco = true;
}

	$msj=$this->aplicar_toma_fisica($id_toma_fisica,$i_salidas,$i_entradas,$i_compania,$i_division,$i_bodega,$i_tc,$i_mes,$i_ano);
	if (''<>$msj['error']){
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->RollbackTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		return array("error"=>"#284.aplicar_la_toma_fisica Error:".$msj['error']);
	} else {
		if ($this->Ini->sc_tem_trans_banco)
{
    $this->Db->CommitTrans();
    $this->Ini->sc_tem_trans_banco = false;
}

		return array("error"=>"");
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_la_toma_fisica ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function generar_encabezado_movimiento_apl_fisico ------*/

function generar_encabezado_movimiento_apl_fisico($id_toma_fisica,$id_tipo_documento,$i_compania,$i_division,$i_bodega,$i_tc,$i_mes,$i_ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $el_numero=$this->traer_consecutivo($i_compania,$i_division,9,$id_tipo_documento);
     if (-1==$el_numero){
		 return array("error"=>"#294.generar_encabezado_movimiento_apl_fisico.<br><b>Error en el numero de consecutivo</b>");
	 }
	 $strsql=" insert into inv_salidas_encabezado
	    (compania,division,bodega,numero,documento_referencia,tipo_documento,fecha,usuario_crea,fecha_creacion,estado,mes,ano) 
		select compania,division,bodega,'".$el_numero."','Apl_fisico:".$id_toma_fisica."','".$id_tipo_documento."',
		last_day('".$i_ano.'-'.$i_mes."-01'),'".$_SESSION['grant']['usr_login']."','".date('Y-m-d H:i:s')."',1,'".$i_mes."','".$i_ano."' 
		from inv_toma_fisica_encabezado where id='".$id_toma_fisica."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ins_movnew = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ins_movnew[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ins_movnew = false;
          $ins_movnew_erro = $this->Db->ErrorMsg();
      } 

	  if ($ins_movnew ===false){
		  return array("error"=>"#303.generar_encabezado_movimiento_apl_fisico:<br><b>".$ins_movnew_erro .'</b><br> '.$strsql);
	  }
	  $msj=$this->ultimo_registro_grant();
	  if (''<>$msj['error']){
		  return array("error"=>"#307.generar_encabezado_movimiento_apl_fisico:".$msj);
	  }
	  return array("error"=>"","id"=>$msj['id']);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function generar_encabezado_movimiento_apl_fisico ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function agregar_detalle_movimiento_apl_fisico ------*/

function agregar_detalle_movimiento_apl_fisico($id_toma_fisica,$el_id_encabezado,$quetipo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $strsql_base="select a.codigo_articulo,
		   a.existencia,
		   a.toma_fisica,
		   if(a.existencia>a.toma_fisica,a.existencia-a.toma_fisica,0) salidas,
		   IF(a.existencia>a.toma_fisica,0,a.toma_fisica-a.existencia) entradas
	  from inv_existencias a,
		   inv_toma_fisica_encabezado b
	  where hay_fisico=1
		and a.compania=b.compania
		and a.division=b.division
		and a.bodega=b.bodega
		and b.id='".$id_toma_fisica."'";

		if ('entrada'==$quetipo){
			$strsql="insert into inv_salidas_detalle (id_encabezado,codigo_articulo,cantidad_salida) 
			   select ".$el_id_encabezado.",codigo_articulo,entradas
				  from (".$strsql_base.") a 
				 where entradas<>0";
		} else {
			$strsql="insert into inv_salidas_detalle (id_encabezado,codigo_articulo,cantidad_salida) 
			   select ".$el_id_encabezado.",codigo_articulo,salidas
				  from (".$strsql_base.") a 
				 where salidas<>0";
		}
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insdetalleapltmf = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insdetalleapltmf[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insdetalleapltmf = false;
          $insdetalleapltmf_erro = $this->Db->ErrorMsg();
      } 

	  if ($insdetalleapltmf ===false){
		  return array("error"=>"#340.agregar_detalle_movimiento_apl_fisico:<br><b>".$insdetalleapltmf_erro .' </b><br>'.$strsql);
	  }
	  return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function agregar_detalle_movimiento_apl_fisico ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_toma_fisica ------*/

function aplicar_toma_fisica($id_toma_fisica,$i_salidas,$i_entradas,$i_compania,$i_division,$i_bodega,$i_tc,$i_mes,$i_ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   
   $id_entrada=0;
   $id_salida =0;
   if (0<>$i_entradas){
	   $msj=$this->generar_encabezado_movimiento_apl_fisico($id_toma_fisica,9,$i_compania,$i_division,$i_bodega,$i_tc,$i_mes,$i_ano); 
	   if (''<>$msj['error']){ 
		   return $msj;
	   }
	   $id_entrada=$msj['id'];	   
	   $msj=$this->agregar_detalle_movimiento_apl_fisico($id_toma_fisica,$id_entrada,'entrada');
	   if (''<>$msj['error']){ 
		   return $msj;
	   }
	   $id_entrada=str_replace(".","",$id_entrada);
	   $id_entrada=str_replace(",","",$id_entrada);
	   $datos=$this->aplicacion_moviento_inv_lib($id_entrada,'NO');

	   if (''<>$datos['error']){
		   return $datos;
	   }
   }

   if (0<>$i_salidas){
	   $msj=$this->generar_encabezado_movimiento_apl_fisico($id_toma_fisica,10,$i_compania,$i_division,$i_bodega,$i_tc,$i_mes,$i_ano);
	   if (''<>$msj['error']){ 
		   return $msj;
	   }
	   $id_salida=$msj['id'];
	   $msj=$this->agregar_detalle_movimiento_apl_fisico($id_toma_fisica,$id_salida,'salida');
	   if (''<>$msj['error']){
		   return $msj;
	   }
	   $datos=$this->aplicacion_moviento_inv_lib($id_salida,'NO');
	   if (''<>$datos['error']){
		   return $datos;
	   }
   }

   $strsql="update inv_toma_fisica_encabezado set estado=3 where id='".$id_toma_fisica."'";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updinvtmestatus = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updinvtmestatus[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updinvtmestatus = false;
          $updinvtmestatus_erro = $this->Db->ErrorMsg();
      } 

   if ($updinvtmestatus ===false){
	   return array("error"=>"#385.aplicar_toma_fisica Error:<br><b>".$updinvtmestatus_erro .'</b><br> '.$strsql);
   }
   return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_toma_fisica ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function inv_act_inventario_toma_fisica ------*/

function inv_act_inventario_toma_fisica($el_id_encabezado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	  $strsql="insert into inv_existencias (compania,division,bodega,codigo_articulo) select b.compania,b.division,b.bodega,a.codigo_articulo
        from inv_toma_fisica_detalle a
        left join inv_toma_fisica_encabezado b on a.id_encabezado=b.id
        left join inv_existencias d on d.compania=b.compania and d.division=b.division and d.bodega=b.bodega and d.codigo_articulo=a.codigo_articulo
       where b.id='".$el_id_encabezado."'
         and d.compania is null
         and a.cantidad<>0";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insexissin = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insexissin[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insexissin = false;
          $insexissin_erro = $this->Db->ErrorMsg();
      } 

	if ($insexissin ===false){
	    return '#401.inv_act_inventario_toma_fisica:<br><b>'.$insexissin_erro .'</b><br> '.$strsql;
	}
		$strsql="update inv_existencias a,
						(select id_encabezado,codigo_articulo,sum(cantidad) cantidad
						   from inv_toma_fisica_detalle b 
						  where id_encabezado='".$el_id_encabezado."'
						  group by id_encabezado,codigo_articulo) b,
						inv_toma_fisica_encabezado c
					set toma_fisica=ifnull(b.cantidad,0),
						hay_fisico=1
				  where b.id_encabezado=c.id
					and b.id_encabezado='".$el_id_encabezado."'
					and a.codigo_articulo=b.codigo_articulo
					and a.compania=c.compania
					and a.bodega=c.bodega
					and c.estado=1";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updinvexisfisico = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updinvexisfisico[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updinvexisfisico = false;
          $updinvexisfisico_erro = $this->Db->ErrorMsg();
      } 

		if ($updinvexisfisico ===false){
			return "#419.inv_act_inventario_toma_fisica Error:<br><b>".$updinvexisfisico_erro .' </b><br>'.$strsql;
		}

	    $strsql="select compania,division,bodega,tomafisicatotal
		           from inv_toma_fisica_encabezado
				  where id='".$el_id_encabezado."'";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $estmtotal = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $estmtotal[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $estmtotal = false;
          $estmtotal_erro = $this->Db->ErrorMsg();
      } 

	    if ($estmtotal ===false){
			return "#427.inv_act_inventario_toma_fisica Error:<br><b>".$estmtotal_erro .'</b><br> '.$strsql;
		}
	    if (count($estmtotal )==0){
			return "#430.inv_act_inventario_toma_fisica en la toma fisica no existe el id:".$el_id_encabezado;
		}
	    $tm_cia=$estmtotal[0][0];
	  	$tm_div=$estmtotal[0][1];
	    $tm_bod=$estmtotal[0][2];
	    $tm_tot=$estmtotal[0][3];
	    if (1==$tm_tot){
			$strsql="update inv_existencias set hay_fisico=1 
			          where compania='".$tm_cia."'
					    and division='".$tm_div."'
						and bodega='".$tm_bod."'";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updinvemfhayfisico = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updinvemfhayfisico[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updinvemfhayfisico = false;
          $updinvemfhayfisico_erro = $this->Db->ErrorMsg();
      } 

			if ($updinvemfhayfisico ===false){
				return '#443.inv_act_inventario_toma_fisica Error:<br><b>'.$updinvemfhayfisico_erro .'</b><br> '.$strsql;
			}
		}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function inv_act_inventario_toma_fisica ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_moviento_inv_lib ------*/

function aplicacion_moviento_inv_lib($elidmovimiento,$aplicar_los_costos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		
	   $strsql="select id from inv_salidas_detalle where id_encabezado=".$elidmovimiento." for update ";
	    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datalockb = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datalockb[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datalockb = false;
          $datalockb_erro = $this->Db->ErrorMsg();
      } 

	   if ($datalockb ===false){
		 return array("error"=>"Error #582.aplicacion_moviento_inv_lib:<br><b>".$datalockb_erro .'</b><br> '.$strsql);
	   }
	   $elidmovimiento=str_replace(".","",$elidmovimiento);
	   $elidmovimiento=str_replace(",","",$elidmovimiento);
		
		$msj=$this->puede_aplicar_este_id($elidmovimiento,'salidas');
		if ($msj['error']<>''){
			return $msj;
		}
			$msj=$this->upd_costos_salidas($elidmovimiento);
			if (''<>$msj['error']){
				return array("error"=>'#459.Error:'.$msj['error']);
			}
			$strsql="SELECT b.compania,a.codigo_articulo,a.cantidad_salida,c.existencia
			  FROM inv_salidas_detalle a
				   left join inv_salidas_encabezado b ON a.id_encabezado=b.id
				   left join inv_existencias c ON a.codigo_articulo=c.codigo_articulo AND b.bodega=c.bodega AND b.compania=c.compania
				   left join inv_catalogo_articulos d on d.codigo_articulo=a.codigo_articulo
			   WHERE a.id_encabezado=".$elidmovimiento."
				 AND IFNULL(c.existencia,0)+a.cantidad_salida<0
				 and d.permitir_negativos=0";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataverifiexistencia = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverifiexistencia = false;
          $dataverifiexistencia_erro = $this->Db->ErrorMsg();
      } 

			if ($dataverifiexistencia ===false){
				return array("error"=>"#471 aplicacion_movimiento_inv Error:<br><b>".$dataverifiexistencia_erro .'</b><br> '.$strsql);	
			}
			$codigossininv='';
			while (!$dataverifiexistencia->EOF){
				if (''==$codigossininv){
					$codigossininv=$dataverifiexistencia->fields[1];
				} else {
					$codigossininv.=','.$dataverifiexistencia->fields[1];
				}
				$dataverifiexistencia->MoveNext();
			}
			$dataverifiexistencia->Close();
			if (''<>$codigossininv){
				return array("error"=>"Error lista de codigos sin existencia:".$codigossininv);
			}
			$strsql="select tipo_documento ,mes,ano,ifnull(total,0),tipo,tipo_cambio from (
				   select a.tipo_documento ,a.mes,a.ano,
					   (select sum(total) from inv_salidas_detalle where id_encabezado='".$elidmovimiento."') total ,b.tipo,
					   a.tipo_cambio
					   from inv_salidas_encabezado a,
					   con_tipo_documento b
					  where a.tipo_documento=b.id AND a.id='".$elidmovimiento."') a";
			$strsql=
			"SELECT tipo_documento ,
				mes,
				ano,
				IFNULL(total,0) total,
				tipo,
				IF(0=IFNULL(tipo_cambio,0),IFNULL(tcm,IFNULL(tc,0)),tipo_cambio) tipo_cambio,
				compania,
				fecha,
				es_internacional
				FROM (
					SELECT a.tipo_documento ,
						a.mes,
						a.ano,
						(SELECT SUM(total) FROM inv_salidas_detalle WHERE id_encabezado='".$elidmovimiento."') total ,b.tipo,
						a.tipo_cambio,
						(SELECT tc_venta FROM `gen_tipos_de_cambio` ORDER BY fecha DESC LIMIT 1) tc,
						(SELECT tc_venta FROM `gen_tipos_de_cambio` tc WHERE tc.fecha=DATE(a.fecha)) tcm,
						a.compania,a.fecha,
						a.es_internacional
					  FROM inv_salidas_encabezado a,con_tipo_documento b
					 WHERE a.tipo_documento=b.id AND a.id='".$elidmovimiento."') a";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datatipo_documento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datatipo_documento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datatipo_documento = false;
          $datatipo_documento_erro = $this->Db->ErrorMsg();
      } 

			if ($datatipo_documento ===false){
				return array("error"=>"Error #515 aplicacion_movimiento_inv:<br><b>".$datatipo_documento_erro .' </b><br>'.$strsql);
			}
			if (count($datatipo_documento )==0){
				return array("error"=>"Error #518 aplicacion_movimiento_inv:".$elidmovimiento." Id de movimiento no existe ".$strsql);
			}
			$x_tipo_documento=$datatipo_documento[0][0];
			$mes =$datatipo_documento[0][1];
			$ano =$datatipo_documento[0][2];
			$tot =$datatipo_documento[0][3];
			$tmov=$datatipo_documento[0][4];
			$ttc =$datatipo_documento[0][5];
			$c_cia =$datatipo_documento[0][6];
			$c_fecha=$datatipo_documento[0][7];
			$e_inter=$datatipo_documento[0][8];
			if (1==$e_inter){
				if ('SI'==$this->usuario_tiene_acceso(18)){
				} else {
					return array("error"=>"Error no puede aplicar movimientos internacionales");
				}
			}
			if ($ttc==0){
				$ttc=600;
			}
			$totd=$tot/$ttc;

			if (9<>$x_tipo_documento and 10<>$x_tipo_documento and 23<>$x_tipo_documento and 24<>$x_tipo_documento){
				return array("error"=>"Error #534 aplicacion_movimiento_inv: <br><b>tipo documento debe ser 9 o 10 solamente</b>");	
			}
			$resultado=$this->verificar_movimiento_para_aplicar_lib($elidmovimiento,$x_tipo_documento);
			if (''<>$resultado['error']){
				return $resultado;
			}

			$resultadob=$this->aplicacion_movimiento_inv_asiento_lib($elidmovimiento,$x_tipo_documento,$mes,$ano,$tot, $c_cia, $totd, $tmov, $c_fecha,$ttc,'');
			if (''<>$resultadob['error']){
				return $resultadob;
			}
			$strsql="update inv_salidas_encabezado set estado=2,numeroasiento='".$resultadob['numeroasiento']."',
			usuario_aplicacion='".$_SESSION['grant']['usr_login']."',fecha_aplicacion='".date('Y-m-d H:i:s')."' where id='".$elidmovimiento."'";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdsalenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdsalenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdsalenca = false;
          $dataupdsalenca_erro = $this->Db->ErrorMsg();
      } 

			if ($dataupdsalenca ===false){
				return array("error"=>"Error #553 aplicacion_movimiento_inv:<br><b>".$dataupdsalenca_erro .'</b><br> '.$strsql);
			}
			$resultadoa=$this->aplicacion_movimiento_inv_registrar_lib($elidmovimiento,$x_tipo_documento,$aplicar_los_costos);
			if (''<>$resultadoa['error']){
				return $resultadoa;
			}
		if ('SI'==$aplicar_los_costos){
			$msj=$this->inv_aplicar_costos_asientos_lib('','');
			if (''<>$msj['error']){
				return array("error"=>$msj['error']);
			} 
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_moviento_inv_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_movimiento_inv_asiento_lib ------*/

function aplicacion_movimiento_inv_asiento_lib($elidmovimiento,$x_tipo_documento,$c_mes,$c_ano,$total,$c_cia,$totald,$tmov,$c_fecha,$ttc,$nnasiento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
			$strsql="select es_internacional from inv_salidas_encabezado where id='".$elidmovimiento."'";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $xeinternacional = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $xeinternacional[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $xeinternacional = false;
          $xeinternacional_erro = $this->Db->ErrorMsg();
      } 

			if ($xeinternacional ==false){
				return array("error"=>"Error #564 aplicacion_movimiento_inv_asiento_lib:<br><b>".$xeinternacional_erro .'</b><br> '.$strsql);
			}
		
		    if (count($xeinternacional )==0){
				return array("error"=>"Error #567 aplicacion_movimiento_inv_asiento_lib <br><b>no existe id de salida:".$elidmovimiento.'</b>');
			}
		    $sies_internacional=$xeinternacional[0][0];
		    $h_creditosdebitos1="SUM(abs(a.total)) debitoc,
			SUM(abs(a.total)/$ttc) debitod,
			SUM(CAST(0 AS DECIMAL(12,2))) creditoc,
			SUM(CAST(0 AS DECIMAL(12,2))) creditod,";
			$h_creditosdebitos2="SUM(CAST(0 AS DECIMAL(12,2))) debitoc,
			SUM(CAST(0 AS DECIMAL(12,2))) debitod,
			SUM(abs(a.total)) creditoc,
			SUM(abs(a.total)/$ttc) creditod,";
			$h_tipocuenta='1';

			$strsql_base="SELECT b.compania,
			d.cuenta,
			e.descripcion nombre_cuenta,
			CONCAT('Consumo bodega ',b.bodega) detalle,
			h_creditosdebitos
			CONCAT(b.documento_referencia,' ',b.numero) referencia,
			b.mes,
			b.ano,
			b.fecha,
			avg(1) moneda
			  FROM inv_salidas_detalle a
			  LEFT JOIN inv_salidas_encabezado b ON a.id_encabezado=b.id
			  LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.division=b.division AND c.codigo_articulo=a.codigo_articulo
			  LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria AND d.sub_categoria=c.sub_categoria AND d.tipo_cuenta=h_tipocuenta
			  LEFT JOIN con_cuentas e ON e.compania=d.compania AND e.cuenta=d.cuenta
			  LEFT JOIN inv_categoria_tipo_cuenta_contable f ON f.id=d.tipo_cuenta
			WHERE id_encabezado='".$elidmovimiento."'
			GROUP BY b.compania,d.cuenta,e.descripcion,CONCAT('Consumo bodega ',b.bodega),
			CONCAT(b.documento_referencia,' ',b.numero),b.mes,b.ano,b.fecha";
		
$strsql_base="SELECT b.compania,
			ifnull(dd.cuenta,d.cuenta) cuenta,
			ifnull(ee.descripcion,e.descripcion) nombre_cuenta,
			CONCAT(IFNULL(cti.detalle,IFNULL(cti2.detalle,'')),' ',IFNULL(ctis.detalle,IFNULL(ctis2.detalle,''))) detalle,
			h_creditosdebitos
			CONCAT(b.documento_referencia,' ',b.numero) referencia,
			b.mes,
			b.ano,
			b.fecha,
			1 moneda
			  FROM inv_salidas_detalle a
			  LEFT JOIN inv_salidas_encabezado b ON a.id_encabezado=b.id
			  LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.division=b.division AND c.codigo_articulo=a.codigo_articulo
			  LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria 
			                                        AND d.sub_categoria=c.sub_categoria AND d.tipo_cuenta=h_tipocuenta
			  LEFT JOIN inv_categoria_inventario cti ON cti.categoria=c.categoria
			  LEFT JOIN inv_categoria_sub_inventario ctis ON ctis.fk_categoria_inventario=c.categoria AND ctis.sub_categoria=c.sub_categoria
			  LEFT JOIN con_cuentas e ON e.compania=d.compania AND e.cuenta=d.cuenta
			  
			  LEFT JOIN inv_catalogo_articulo_categoria_bodega g ON g.compania=b.compania AND g.division=b.division 
			                                                 AND g.codigo_articulo=a.codigo_articulo AND g.bodega=b.bodega 
			  LEFT JOIN inv_categoria_cuentas_contables dd ON dd.compania=g.compania AND dd.categoria=g.categoria 
			                                                 AND dd.sub_categoria=g.sub_categoria AND dd.tipo_cuenta=h_tipocuenta
			  LEFT JOIN con_cuentas ee ON ee.compania=dd.compania AND ee.cuenta=dd.cuenta
			  LEFT JOIN inv_categoria_inventario cti2 ON cti2.categoria=g.categoria
			  LEFT JOIN inv_categoria_sub_inventario ctis2 ON ctis2.fk_categoria_inventario=g.categoria AND ctis2.sub_categoria=g.sub_categoria

			  LEFT JOIN inv_categoria_tipo_cuenta_contable f ON f.id=d.tipo_cuenta
			WHERE id_encabezado='".$elidmovimiento."'
			GROUP BY b.compania,ifnull(dd.cuenta,d.cuenta),ifnull(ee.descripcion,e.descripcion),
			CONCAT(IFNULL(cti.detalle,IFNULL(cti2.detalle,'')),' ',IFNULL(ctis.detalle,IFNULL(ctis2.detalle,''))),
			CONCAT(b.documento_referencia,' ',b.numero),b.mes,b.ano,b.fecha";

			$strsql=$strsql_base;
			if (10==$x_tipo_documento or 24==$x_tipo_documento or '10'==$x_tipo_documento or '24'==$x_tipo_documento or 1==intval($x_tipo_documento)){
				
			  if (1==$sies_internacional){
			   $strsql=str_replace("h_creditosdebitos",$h_creditosdebitos1,str_replace('h_tipocuenta','3',$strsql_base)).' union all '.
					   str_replace("h_creditosdebitos",$h_creditosdebitos2,str_replace('h_tipocuenta','1',$strsql_base));
			  } else {
			   $strsql=str_replace("h_creditosdebitos",$h_creditosdebitos1,str_replace('h_tipocuenta','4',$strsql_base)).' union all '.
					   str_replace("h_creditosdebitos",$h_creditosdebitos2,str_replace('h_tipocuenta','1',$strsql_base));
			  }
			}
			if (9==$x_tipo_documento or 23==$x_tipo_documento or '9'==$x_tipo_documento or '23'==$x_tipo_documento){
				
			  if (1==$sies_internacional){
			   $strsql=str_replace("h_creditosdebitos",$h_creditosdebitos1,str_replace('h_tipocuenta','1',$strsql_base)).' union all '.
					   str_replace("h_creditosdebitos",$h_creditosdebitos2,str_replace('h_tipocuenta','2',$strsql_base));				  
			  } else {
			   $strsql=str_replace("h_creditosdebitos",$h_creditosdebitos1,str_replace('h_tipocuenta','1',$strsql_base)).' union all '.
					   str_replace("h_creditosdebitos",$h_creditosdebitos2,str_replace('h_tipocuenta','4',$strsql_base));
			  }
			}

		    if(''<>$nnasiento){
				$c_numeroasiento=$nnasiento;
				$strsqllz="delete from con_asientos_detalle where numeroasiento='".$c_numeroasiento."' and compania='".$c_cia."'";
				 
      $nm_select = $strsqllz; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deleteasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deleteasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deleteasiento = false;
          $deleteasiento_erro = $this->Db->ErrorMsg();
      } 

				if ($deleteasiento ===false){
					return array("error"=>"Error: #643.aplicacion_movimiento_inv_asiento: <br><b>borrando ".$deleteasiento_erro .'</b>');
				}
			} else {
					$c_numeroasiento=$this->trae_numero_asiento($c_cia,$c_mes,$c_ano);
					if (-1==$c_numeroasiento){
						return array("error"=>"Error: #648.aplicacion_movimiento_inv_asiento: <br><b>Numero de asiento asignado</b>");
					}
			}
		    if (''==$c_numeroasiento){
				return array("error"=>"#653.aplicacion_movimiento_inv_asiento_lib.Error en el numero de asiento ".$c_ano.$c_mes.'-'.$c_numeroasiento);
			}
			$c_numeroasiento=$c_ano.$c_mes.str_pad($c_numeroasiento, 7, "0", STR_PAD_LEFT);
			$comprobante=$tmov.'-'.$elidmovimiento;
			$c_debitoc=abs($total);
			$c_creditoc=abs($total);
			$c_debitod=abs($totald);
			$c_creditod=abs($totald);
			$c_moneda=1;
		
		    if (''==$c_numeroasiento){
				return array("error"=>"#664.aplicacion_movimiento_inv_asiento_lib.<br><b>Error en el numero de asiento ".$c_ano.$c_mes.'</b>');
			}
		
		  if(''<>$nnasiento){
			  $strsqlzz="select id from con_asientos_encabezado where numeroasiento='".$nnasiento."' and compania='".$c_cia."'";
			   
      $nm_select = $strsqlzz; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $traeridasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $traeridasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $traeridasiento = false;
          $traeridasiento_erro = $this->Db->ErrorMsg();
      } 

			  if ($traeridasiento ===false){
				 return array("error"=>"Error: #671.aplicacion_movimiento_inv_asiento:<br><b> ".$traeridasiento_erro .'</b><br>'.$strsqlzz);
			  }
			  if (count($traeridasiento )==0){
				  return array("error"=>"Error: #674.aplicacion_movimiento_inv_asiento<br><b> numero de asiento no existe: ".$nnasiento.'</b>');
			  }
			  $c_numeroasiento=$nnasiento;
			  $cid_asiento=$traeridasiento[0][0];
		  } else {
			$strsqljj="insert into con_asientos_encabezado (compania,division,anomes,mes,ano,periodofiscal,
							numeroasiento,comprobante,
							fechaproceso,fechaaplicacion,moduloauxiliar,moneda,estado,observaciones,
			  				debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,tipo_documento,inclusion) values 				
							('$c_cia',1,'$c_ano$c_mes','$c_mes','$c_ano','$c_ano',
							'$c_numeroasiento','$comprobante','$c_fecha','0000-00-00 00:00:00',9,'$c_moneda',1,'',
							'$c_debitoc','$c_creditoc','$c_debitod','$c_creditod','$tmov','".date('Y-m-d H:i:s')."')";
			 
      $nm_select = $strsqljj; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsertasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsertasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsertasiento = false;
          $datainsertasiento_erro = $this->Db->ErrorMsg();
      } 

			if ($datainsertasiento ===false){
				return array("error"=>"Error: #688.aplicacion_movimiento_inv_asiento_lib:<br><b>".$datainsertasiento_erro .'</b><br> '.$strsqljj);
			}
			 
      $nm_select = 'select last_insert_id()'; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ult_id_asiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ult_id_asiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ult_id_asiento = false;
          $ult_id_asiento_erro = $this->Db->ErrorMsg();
      } 

			if ($ult_id_asiento ===false){
				return array("error"=>"Error: #692.aplicacion_movimiento_inv_asiento_lib:<br><b> last_insert_id:".$ult_id_asiento_erro .'</b>');
			}
			$cid_asiento=$ult_id_asiento[0][0];
		  }
              $j_str_deb_cred="debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,";
		  if (1==$x_tipo_documento){
			  $j_str_deb_cred="creditos_local,debitos_local,creditos_extranjero,debitos_extranjero,";
		  }

			$cstrsql="insert into con_asientos_detalle 
						(compania,division,id_asiento,mes,ano,numeroasiento,cuenta,centro_costo,
						".$j_str_deb_cred."
						referenciatipodecambio,
						tipodecambio,
						descripcionlinea,
						numeroalternodocumento,numerodocumento,lineautomatica
						)
						select '$c_cia',1,'$cid_asiento','$c_mes','$c_ano','$c_numeroasiento',cuenta,'' centro_costo,
						abs(debitoc) debitos_local,
						abs(creditoc) creditos_local,
						abs(debitod) debitos_extranjero,
						abs(creditod) creditos_extranjero,
						0 referenciatipodecambio,
						$ttc tipodecambio,
						detalle descripcionlinea,
						'' numeroalternodocumento,'' numerodocumento,date_format(now(),'%s') from (".$strsql.") k ";
			
			 
      $nm_select = $cstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insedetasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insedetasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insedetasiento = false;
          $insedetasiento_erro = $this->Db->ErrorMsg();
      } 

			if ($insedetasiento ===false){
				return array("error"=>"Error: #714.aplicacion_movimiento_inv_asiento_lib:<br><b>".$insedetasiento_erro .' </b><br>'.$cstrsql);
			}
		    if(''<>$nnasiento){
				return array("error"=>"",'numeroasiento'=>$nnasiento);	
			}
			$msj=$this->actualizar_numero_asiento($c_cia,$c_mes,$c_ano);
			if (''<>$msj){
				return array("error"=>$msj);
			}
			return array("error"=>"",'numeroasiento'=>$c_numeroasiento);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_movimiento_inv_asiento_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_movimiento_inv_registrar_lib ------*/

function aplicacion_movimiento_inv_registrar_lib($elidmovimiento, $x_tipo_documento,$aplicar_los_costos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

			$esunaentrada=false;
			$enradaserie=false;
			$factor=1;
			if (10==$x_tipo_documento or 24==$x_tipo_documento){
				
				$factor=-1;
			}
			if (24==$x_tipo_documento or 23==$x_tipo_documento){
				$esunaentrada=true;
			}
			if (9==$x_tipo_documento or 23==$x_tipo_documento){
			    $enradaserie=true;
			}
			$strsql="SELECT IFNULL(a.codigo_articulo,'noexiste'),
				   abs(a.cantidad_salida),
				   '',
				   b.numero,
				   b.compania,
				   b.division,
				   b.bodega,
				   abs(a.total),
				   a.id
			 FROM inv_salidas_detalle a
			   LEFT JOIN inv_salidas_encabezado b ON a.id_encabezado=b.id
			   LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.codigo_articulo=a.codigo_articulo
			 WHERE a.id_encabezado='".$elidmovimiento."'";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataverarticulos_s = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverarticulos_s = false;
          $dataverarticulos_s_erro = $this->Db->ErrorMsg();
      } 

			if ($dataverarticulos_s ===false){
				return array("error"=>"Error aplicacion_movimiento_inv_registrar_lib #753:<br><b>".$dataverarticulos_s_erro .' </b><br>'.$strsql);
			}
			$oqc=0;
			while (!$dataverarticulos_s->EOF){
				$oqc++;
				$c_articulo=$dataverarticulos_s->fields[0];
				$c_cantidad=$factor*abs($dataverarticulos_s->fields[1]);
				$c_invcuenta=$dataverarticulos_s->fields[2];
				$bnumero_entrada=$dataverarticulos_s->fields[3];
				$bcompania=$dataverarticulos_s->fields[4];
				$bdivision=$dataverarticulos_s->fields[5];
				$bbodega=$dataverarticulos_s->fields[6];
				$asubtotal_colones=$factor*abs($dataverarticulos_s->fields[7]);
				$eliddetalle=$dataverarticulos_s->fields[8];
				if ($enradaserie){
					$msj=$this->procesar_entrada_series_lib($eliddetalle,$elidmovimiento);
				} else {
					$msj=$this->procesar_salida_series_lib($eliddetalle,$elidmovimiento);
				}
				if (''<>$msj['error']){
					$msj['error']='Linea #957 '.$msj['error'];
					return $msj;
				}
				if ('noexiste'==$c_articulo and 'noexiste'==$c_invcuenta){
					return array("error"=>"Error aplicacion_movimiento_inv_registrar_lib #768: No se dedinio codigo de articulo ni codigo de cuenta gasto");
				}
			
				$msj=$this->aplicar_al_inventario($bcompania,$bdivision,$bbodega,$c_articulo,$c_cantidad,$asubtotal_colones,$esunaentrada);
				if (''<>$msj){
					return array("error"=>$msj);
				} 
			if ('SI'==$aplicar_los_costos) {
				$msj=$this->inv_aplicar_costos_lib($bbodega,$c_articulo);
				if (''<>$msj['error']){
					return $msj['error'];
				} 
			}
				if (1==1 ){ 
					$strsql="update inv_catalogo_articulos set permitir_negativos=0 
					          where codigo_articulo='".$c_articulo."' and permitir_negativos=1 
							    and compania='".$bcompania."' limit 1";
					 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updpermitenega = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updpermitenega[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updpermitenega = false;
          $updpermitenega_erro = $this->Db->ErrorMsg();
      } 

					if ($updpermitenega ===false){
						return array("error"=>"#783 Error aplicacion_movimiento_inv_registrar_lib:<br><b>".$updpermitenega_erro .'</b><br> '.$strsql);
					}
				}
				$dataverarticulos_s->MoveNext();
			}
			$dataverarticulos_s->Close();
			if (0==$oqc){
				return array("error"=>"#790 <br><b>aplicacion_movimiento_inv_registrar_lib.No hay lineas en el detalle del movimiento</b><br> ".$strsql);
			} else {
				return array("error"=>'');
			}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_movimiento_inv_registrar_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_entrada_para_aplicar_lib ------*/

function verificar_entrada_para_aplicar_lib($id_compra,$j_x_cia){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

	   
			$strsql="select d1,d2,d3,(select provedor from inv_entradas_encabezado where id='".$id_compra."') provedor
					from (select sum(cantidad_facturada)-sum(cantidad_recibida) d1,
							sum(cantidad_facturada) d2,
							sum(cantidad_recibida) d3
					  from `inv_entradas_detalle`
				where id_encabezado='".$id_compra."') a ";
			$strsql="SELECT SUM(a.cantidad_facturada)-SUM(a.cantidad_recibida) d1,
				SUM(a.cantidad_facturada) d2,
				SUM(a.cantidad_recibida) d3,
				IFNULL(c.codigo,'noexiste') prv,
				IFNULL(d.cuenta,'noexiste') cuenta,
				IFNULL(d.cuenta_gasto,'noexiste') cuenta_gasto,
				IFNULL(e.cuenta,'noexiste') cuenta_conta,
				IFNULL(ee.cuenta,'noexiste') cuenta_gasto_conta,
				b.mes,
				b.ano,
				DATE_FORMAT(fecha,'%m') mfecha,
				DATE_FORMAT(fecha,'%Y') afecha,
				b.tipo_documento
					  FROM inv_entradas_detalle a,
						  inv_entradas_encabezado b
						  LEFT JOIN gen_proveedores c ON c.codigo=b.provedor
						  LEFT JOIN gen_proveedores_cuenta_contable d ON d.compania=b.compania AND d.proveedor=b.provedor
						  LEFT JOIN con_cuentas e ON e.compania=d.compania AND e.cuenta=d.cuenta
						  LEFT JOIN con_cuentas ee ON ee.compania=d.compania AND ee.cuenta=d.cuenta_gasto
				WHERE a.id_encabezado=b.id
				  AND a.id_encabezado='".$id_compra."'
				 GROUP BY c.codigo";

			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datavericomprapl = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datavericomprapl[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datavericomprapl = false;
          $datavericomprapl_erro = $this->Db->ErrorMsg();
      } 

			if ($datavericomprapl ===false){
				return array("error"=>"Error #828 verificar_entrada_para_aplicar_lib <br><b>".$datavericomprapl_erro .'</b><br> '.$strsql);
			}
			if (count($datavericomprapl )==0){
				return array("erroor"=>"Error #831 verificar_entrada_para_aplicar_lib no existe el id_compra:".$id_compra);
			}
			$cprv=$datavericomprapl[0][3];
			if (0<>$datavericomprapl[0][0]){
			}
			if ('noexiste'==$datavericomprapl[0][3]){
				return array("error"=>"Error #839 verificar_entrada_para_aplicar_lib proveedor noexiste");
			}
			if ('noexiste'==$datavericomprapl[0][4]){
				return array("error"=>"Error #842 verificar_entrada_para_aplicar_lib cuenta del provedor:".$cprv." noexiste");
			}
			if ('noexiste'==$datavericomprapl[0][5]){
				return array("error"=>"Error #845 verificar_entrada_para_aplicar_lib cuenta gasto del provedor:".$cprv." noexiste");
			}
			if ('noexiste'==$datavericomprapl[0][6]){
				return array("error"=>"Error #848 verificar_entrada_para_aplicar_lib cuenta gasto del provedor:".$cprv." noexiste");
			}
			if ('noexiste'==$datavericomprapl[0][7]){
				return array("error"=>"Error #851 verificar_entrada_para_aplicar_lib cuenta gasto del provedor:".$cprv." noexiste");
			}
	   		if ($datavericomprapl[0][8]<>$datavericomprapl[0][10]){
				return array("error"=>"Error #955 verificar_entrada_para_aplicar_lib <br><b>en fecha del documento mes no corresponde actual:".
							     $datavericomprapl[0][8].' mes fecha:'.$datavericomprapl[0][10].'</b>');
			}
	   		if ($datavericomprapl[0][9]<>$datavericomprapl[0][11]){
				return array("error"=>"Error #955 verificar_entrada_para_aplicar_lib<br><b> en fecha del documento año no corresponde actual:".
							     $datavericomprapl[0][9].' año fecha:'.$datavericomprapl[0][11].'</b>');
			}
			$j_tipo_doc=$datavericomprapl[0][12];
	        if (21<>$j_tipo_doc){
					$strsql="SELECT estado,b.documento_afectado
					  FROM inv_entradas_encabezado a,
					  inv_entradas_encabezado_documento_afectado b
					WHERE b.id_encabezado=".$id_compra."
					  AND a.numero_factura=b.documento_afectado
					  and a.compania='".$j_x_cia."'
					  AND a.tipo_documento=21";	
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataverestadodact = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataverestadodact[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverestadodact = false;
          $dataverestadodact_erro = $this->Db->ErrorMsg();
      } 

				if ($dataverestadodact ===false){
					return array("error"=>"Error #995 verificar_entrada_para_aplicar_lib:<br><b>".$dataverestadodact_erro .'</b><br> '.$strsql);
				}
				if (count($dataverestadodact )==0){
					return array("error"=>"Error #998 verificar_entrada_para_aplicar_lib: <br><b>No existe documento afectado</b>");
				}
				if (2<>$dataverestadodact[0][0]){
					return array("error"=>"Error #998 verificar_entrada_para_aplicar_lib:<br><b> el documento afectado ".
								        $dataverestadodact[0][1]." estado:".$dataverestadodact[0][0]." no se ha aplicado</b> ");
				}
			}
	        $strsql="select count(*)
					   from inv_entradas_detalle
					  where id_encabezado=".$id_compra."
						and cantidad_a_inventario=0";
	   		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacontarencero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacontarencero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacontarencero = false;
          $datacontarencero_erro = $this->Db->ErrorMsg();
      } 

			if ($datacontarencero ===false){
				return array("error"=>"Error #1011 verificar_entrada_para_aplicar_lib :<br><b>".$datacontarencero_erro .'</b><br> '.$strsql);
			}
	        if (count($datacontarencero )>0){
				if ($datacontarencero[0][0]<>0){
					return array("error"=>"Error #1015 verificar_entrada_para_aplicar_lib <br><b>Hay articulos con cantidad a inventario en cero</b> ");
				}
			}
			return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_entrada_para_aplicar_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_movimiento_para_aplicar_lib ------*/

function verificar_movimiento_para_aplicar_lib($elidmovimiento, $x_tipo_documento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

		

			$strsql="
			SELECT a.codigo_articulo,c.descripcion,IFNULL(e.cuenta,'noexiste') existe
			  FROM inv_salidas_detalle a
			  LEFT JOIN inv_salidas_encabezado b ON a.id_encabezado=b.id
			  LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.division=b.division AND c.codigo_articulo=a.codigo_articulo
			  LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria 
															AND d.sub_categoria=c.sub_categoria AND d.tipo_cuenta=d_tipo_cuenta
			  LEFT JOIN con_cuentas e ON e.compania=d.compania AND e.cuenta=d.cuenta
			  where a.id_encabezado='".$elidmovimiento."'";

			$strsql="SELECT DISTINCT 
			   CONCAT(IFNULL(c.categoria,''    ),' ',IFNULL(f.detalle,''),'/',
					  IFNULL(c.sub_categoria,''),' ',IFNULL(g.detalle,'')),
					  IFNULL(e.cuenta,concat('Codigo:',ifnull(a.codigo_articulo,''),' no existe en cia:',ifnull(b.compania,''))) existe
			  FROM inv_salidas_detalle a
			  LEFT JOIN inv_salidas_encabezado b ON a.id_encabezado=b.id
			  LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.division=b.division AND c.codigo_articulo=a.codigo_articulo
			  LEFT JOIN inv_categoria_cuentas_contables d ON d.compania=c.compania AND d.categoria=c.categoria 
					AND d.sub_categoria=c.sub_categoria AND d.tipo_cuenta=d_tipo_cuenta
			  LEFT JOIN con_cuentas e ON e.compania=d.compania AND e.cuenta=d.cuenta
			  LEFT JOIN inv_categoria_inventario f ON f.categoria=c.categoria
			  LEFT JOIN inv_categoria_sub_inventario g ON g.fk_categoria_inventario=c.categoria AND g.sub_categoria=c.sub_categoria
			  WHERE a.id_encabezado='".$elidmovimiento."'";

			if (9==$x_tipo_documento or 23==$x_tipo_documento){
				
				$strsql=str_replace("d_tipo_cuenta","1",$strsql).' union all '.
						str_replace("d_tipo_cuenta","2",$strsql).' union all '.
						str_replace("d_tipo_cuenta","3",$strsql);
			}
			if (10==$x_tipo_documento or 24==$x_tipo_documento){
			
				$strsql=str_replace("d_tipo_cuenta","1",$strsql).' union all '.
						str_replace("d_tipo_cuenta","4",$strsql);
			}
			$strsql="
			SELECT DISTINCT * FROM ($strsql
			) a WHERE existe like 'Codigo%no%existe%'";
		$ci=0;
		$chtml='';


		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataexisten = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataexisten = false;
          $dataexisten_erro = $this->Db->ErrorMsg();
      } 

		if ($dataexisten ===false){
			return array("Error #911.verificar_movimiento_para_aplicar:<br><b>".$dataexisten_erro .'</b><br> '.$strsql);
		} else {

		   while (!$dataexisten->EOF){
			 $ci++;
				$chtml.=$dataexisten->fields[0]." ".$dataexisten->fields[1]." ".$dataexisten->fields[2]." ".$dataexisten->fields[3]."\n".PHP_EOL;
			 $dataexisten->MoveNext();
		   }
		   $dataexisten->Close();
			if(''<>$chtml){
				$xchtml='<table><tr><td>Codigo<td><td>Descripcion<td><td><td><td>tipo<td></tr>'.$chtml.'</table>';
				return array("error"=>"Error en configuracion de cuentas contables en categorias ".$chtml);
			}
		}

		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_movimiento_para_aplicar_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function inv_verificar_mes_ano_actual ------*/

function inv_verificar_mes_ano_actual($z_mes,$z_ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select mes,ano 
				   from inv_control_companias
				  where compania='".$compania ."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $elcontrolinv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $elcontrolinv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $elcontrolinv = false;
          $elcontrolinv_erro = $this->Db->ErrorMsg();
      } 

		if ($elcontrolinv ===false){
			return array("error"=>"Error:".$elcontrolinv_erro .' '.$strsql,'mes_actual'=>'','ano_actual'=>'');
		} else {
			if (count($elcontrolinv )==0){
				return array("error"=>"Error en el control de inventario para mes y año",'mes_actual'=>'','ano_actual'=>'');
			} else {
				$mes_actual =$elcontrolinv[0][0];
				$ano_actual =$elcontrolinv[0][1];
				if ($mes_actual <>$mes  or $ano_actual <>$ano ){
					return array("error"=>'No se aplica mes en proceso:'.$mes_actual .'/'.$ano_actual .'',
								 'mes_actual'=>$mes_actual ,
								 'ano_actual'=>$ano_actual );
				} else {
					return array("error"=>'',
								 'mes_actual'=>$mes_actual ,
								 'ano_actual'=>$ano_actual );
				}
			}
		}
	return array("error"=>"#961.inv_verificar_mes_ano_actual: <br><b>Llegue al final sin respuestas</b>");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function inv_verificar_mes_ano_actual ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function upd_costos_salidas ------*/

function upd_costos_salidas($z_encabezadosalida){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    $strsql="UPDATE inv_existencias SET costo_promedio=ROUND(existencia_costo/existencia,2) WHERE existencia<>0 AND existencia_costo<>0";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updinvpromedio = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updinvpromedio[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updinvpromedio = false;
          $updinvpromedio_erro = $this->Db->ErrorMsg();
      } 

	    if ($updinvpromedio ===false){
			return array("error"=>"#968.Error.upd_costos_salidas:<br><b>".$updinvpromedio_erro .'</b><br> '.$strsql);
		}
		$strsql="UPDATE inv_salidas_detalle a,
			   inv_salidas_encabezado b
			   SET cantidad_salida=ABS(cantidad_salida)*IF(b.tipo_documento=9 OR b.tipo_documento=23,1,-1),
				   total=ABS(total)*IF(b.tipo_documento=9 OR b.tipo_documento=23,1,-1)
		 WHERE a.id_encabezado=b.id
		   AND a.id_encabezado='".$z_encabezadosalida."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddocumento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddocumento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddocumento = false;
          $upddocumento_erro = $this->Db->ErrorMsg();
      } 

		if ($upddocumento ===false){
			return array("error"=>"#978.Error.upd_costos_salidas:<br><b>".$upddocumento_erro .'</b><br> '.$strsql);
			return;
		}
	    $strsql="update inv_salidas_detalle a,
		        inv_salidas_encabezado b
				set total=0,precio_unitario=0
				where a.id_encabezado=b.id
				  and b.tipo_documento in (10)
				  and a.id_encabezado='".$z_encabezadosalida."'";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetasal = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetasal[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetasal = false;
          $upddetasal_erro = $this->Db->ErrorMsg();
      } 

	    if ($upddetasal ===false){
			return array("error"=>"#989.upd_costos_salidas:<br><b>".$upddetasal_erro .'</b><br> '.$strsql);
		}
	  
			$strsql="update inv_salidas_detalle a,
			   inv_salidas_encabezado b,(
		select ie.codigo_articulo,sum(inv_inicial+entradas) ex_cant,sum(inv_inicial_costo+entradas_costo) ex_costo,
		       avg(ifnull(costo_promedio,0)) costo_promedio
		  from inv_existencias ie,
		       inv_salidas_encabezado e,
			   inv_salidas_detalle d
		where e.id=".$z_encabezadosalida." AND d.id_encabezado=e.id 
		  and e.compania=ie.compania
		  and e.bodega=ie.bodega
		  and (inv_inicial+entradas+costo_promedio)<>0
		  and e.tipo_documento in (9,10)
		  AND ie.codigo_articulo=d.codigo_articulo
		group by ie.codigo_articulo) c

		set               a.precio_unitario=if(0=costo_promedio,round(ex_costo/ex_cant,4),costo_promedio),
			a.total=round(a.cantidad_salida*if(0=costo_promedio,round(ex_costo/ex_cant,4),costo_promedio),2)
		where a.id_encabezado=".$z_encabezadosalida."
		  and b.estado=1
		  and a.id_encabezado=b.id
		  and b.tipo_documento in (9,10)
		  and c.codigo_articulo=a.codigo_articulo
		   ";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdcostossolosalidas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdcostossolosalidas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdcostossolosalidas = false;
          $dataupdcostossolosalidas_erro = $this->Db->ErrorMsg();
      } 

		if ($dataupdcostossolosalidas ===false){
			return array("error"=>'#1017.Error.upd_costos_salidas:<br><b>'.$dataupdcostossolosalidas_erro .'</b><br> '.$strsql);
		} 
	    $strsql="select a.codigo_articulo 
		          from inv_salidas_detalle a ,inv_salidas_encabezado b
				  where (a.total=0 or a.precio_unitario=0)
				    and a.cantidad_salida<>0
				    and a.id_encabezado=b.id
				    and b.tipo_documento in (9,10)
				    and a.id_encabezado='".$z_encabezadosalida."'";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($selecostocero = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $selecostocero = false;
          $selecostocero_erro = $this->Db->ErrorMsg();
      } 

	    if ($selecostocero ===false){
			return array("error"=>"#1028.Error.upd_costos_salidas:<br><b>".$selecostocero_erro .'</b><br> '.$strsql);
		}
	    $cresult='';
	    while (!$selecostocero->EOF){
			if (''==$cresult){
				$cresult=$selecostocero->fields[0];
			} else {
				$cresult=$cresult.','.$selecostocero->fields[0];
			}
			$selecostocero->MoveNext();
		}
	    $selecostocero->Close();
	    if (''<>$cresult){
		  return array("error"=>"#1041.Error.upd_costos_salidas:<br><b>Codigos estan con costo cero, en esta salida:[".$z_encabezadosalida.']-'.$cresult.'</b>');
		}
	$strsql="select ifnull(sum(cantidad_salida),0),ifnull(sum(total),0)
		from inv_salidas_detalle
		where id_encabezado='".$z_encabezadosalida."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $z_eltotalgeneral = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $z_eltotalgeneral[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $z_eltotalgeneral = false;
          $z_eltotalgeneral_erro = $this->Db->ErrorMsg();
      } 

	if ($z_eltotalgeneral ===false){
		return array("error"=>"#1048.Error.upd_costos_salidas:<br><b>".$z_eltotalgeneral_erro .'</b><br> '.$strsql);
	} else {
	  if (count($z_eltotalgeneral )<>0){
		$tucant=$z_eltotalgeneral[0][0];
		$tcost =$z_eltotalgeneral[0][1];
		$strsql="update inv_salidas_encabezado set total_cantidad=$tucant,total_costo=$tcost,
		usuario_modifica='".$_SESSION['grant']['usr_login']."',fecha_modificacion='".date('Y-m-d H:i:s')."' where id='".$z_encabezadosalida."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $z_updtotallinea = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $z_updtotallinea[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $z_updtotallinea = false;
          $z_updtotallinea_erro = $this->Db->ErrorMsg();
      } 

		if ($z_updtotallinea ===false){
			return array("error"=>"#1065.Error.upd_costos_salidas:<br><b>".$z_updtotallinea .'</b><br> '.$strsql);
		}
	  }
	}
	  
	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function upd_costos_salidas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function inv_control ------*/

function inv_control($lcia){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select mes,ano from inv_control_companias where compania='".$lcia."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainvcontrol = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainvcontrol[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainvcontrol = false;
          $datainvcontrol_erro = $this->Db->ErrorMsg();
      } 

	if ($datainvcontrol ===false){
		return array("error"=>"Error inv_control #1068:<br><b>".$datainvcontrol_erro .'</b><br> '.$strsql);
   }
	if (0==count($datainvcontrol )){
		$cmes=date('m');
		$cano=date('Y');
		$strsql="insert into inv_control_companias (compania,mes,ano) values ('$lcia','$cmes','$cano')";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsinvcontrol = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsinvcontrol[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsinvcontrol = false;
          $datainsinvcontrol_erro = $this->Db->ErrorMsg();
      } 

		if ($datainsinvcontrol ===false){
			return array("error"=>"Error #1076 inv_control:<br><b>".$datainsinvcontrol_erro .'</b><br> '.$strsql);
		}
	} else {
		$cmes=$datainvcontrol[0][0];
		$cano=$datainvcontrol[0][1];
	}
	return array("error"=>"","mes"=>$cmes,"ano"=>$cano);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function inv_control ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_al_inventario ------*/

function aplicar_al_inventario($a_bcompania,$a_bdivision,$a_bbodega,$a_c_articulo,$a_c_cantidad,$a_asubtotal_colones,$esentrada){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	if ('noexiste'==$a_c_articulo){
		return '';
	}
	$elwhere="where compania='".$a_bcompania."'
			     and division='".$a_bdivision."'
				 and bodega='".$a_bbodega."'
				 and codigo_articulo='".$a_c_articulo."'";
	$rstrsql="select codigo_articulo 
	            from inv_existencias 
				".$elwhere;
	 
      $nm_select = $rstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $existecodigo = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $existecodigo[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $existecodigo = false;
          $existecodigo_erro = $this->Db->ErrorMsg();
      } 

	if ($existecodigo ===false){
		return 'Error aplicar_al_inventario.#1099:<br><b>'.$existecodigo_erro .'</b><br> '.$rstrsql;
	}
	
	if (count($existecodigo )==0){
		if ($esentrada){
			$rstrsql="insert into inv_existencias (compania,division,bodega,codigo_articulo,entradas,entradas_costo,existencia,existencia_costo)
			 values ('$a_bcompania','$a_bdivision','$a_bbodega','$a_c_articulo',
			 '".$a_c_cantidad."','".$a_asubtotal_colones."','".$a_c_cantidad."','".$a_asubtotal_colones."')";
		} else {
			$rstrsql="insert into inv_existencias (compania,division,bodega,codigo_articulo,salidas,salidas_costo,existencia,existencia_costo)
			 values ('$a_bcompania','$a_bdivision','$a_bbodega','$a_c_articulo',
			 '".$a_c_cantidad."','".$a_asubtotal_colones."','".$a_c_cantidad."','".$a_asubtotal_colones."')";			
		}
	} else {
		if ($esentrada){
			$rstrsql="update inv_existencias set entradas=entradas+'".$a_c_cantidad."',entradas_costo=entradas_costo+'".$a_asubtotal_colones."'";
		} else {
			$rstrsql="update inv_existencias set salidas=salidas+'".$a_c_cantidad."',salidas_costo=salidas_costo+'".$a_asubtotal_colones."'";
		}
		$rstrsql=$rstrsql.",existencia=existencia+'".$a_c_cantidad."',existencia_costo=existencia_costo+'".$a_asubtotal_colones."'
			        ".$elwhere;
	}
	 
      $nm_select = $rstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $aplinventariorstrsql = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $aplinventariorstrsql[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $aplinventariorstrsql = false;
          $aplinventariorstrsql_erro = $this->Db->ErrorMsg();
      } 

	if ($aplinventariorstrsql ===false){
		return 'Error aplicar_al_inventario.#1131:<br><b>'.$aplinventariorstrsql_erro .'</b><br> '.$rstrsql;
      }
	return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicar_al_inventario ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function imprimir_orden_de_compra ------*/

function imprimir_orden_de_compra($elid,$napp,$enviarchivo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$datos=$this->datos_orden_de_compra($elid);
	$eldetalle=$this->detalle_orde_de_compra($elid);
	if (''<>$eldetalle['error']){
		echo 'Error '.$eldetalle['error'].'';
	}
		
		require('../_lib/libraries/grp/librerias_grant/php/imprime_orden_de_compra_class.php');
		require('../_lib/libraries/grp/librerias_grant/php/imprime_orden_de_compra.php');
		$elmensaje=imprima_orden_de_compra_pdf($id ,$this->Ini->path_third,$napp,$datos,$eldetalle['data'],$enviarchivo);
		if (''!=$elmensaje){
			echo $elmensaje;
		}
  
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function imprimir_orden_de_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function autorizar_orden_de_compra ------*/

function autorizar_orden_de_compra($el_id,$c_autoriza,$laaplicacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$elestado='';
	if ('SI'==$c_autoriza){
		$elestado=',estado=3,';
	}
	if ('NO'==$c_autoriza){
		$elestado=',estado=2,';
	}

	$strsql="update inv_orden_de_compra_encabezado set 
                  autorizada='".$c_autoriza."'
				  ".$elestado."
		  fecha_autorizacion='".date('Y-m-d H:i:s')."',
		      quien_autorizo='".$_SESSION['grant']['usr_login']."' where id='".$el_id."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdordendecomprac = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdordendecomprac[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdordendecomprac = false;
          $dataupdordendecomprac_erro = $this->Db->ErrorMsg();
      } 

	if ($dataupdordendecomprac ===false){
		return 'Error #1167 actualizar_orden_de_compra <br><b>'.$dataupdordendecomprac_erro .'</b><br> '.$strsql;
    }
	$kdescripcion=$el_id;
	if ('SI'==$c_autoriza){
		$kaccion='ordenautorizada';
	} else {
		$kaccion='ordennoautorizada';
	}
	$logmsj=$this->agregar_log($kaccion,$laaplicacion,$kdescripcion);
	return $logmsj;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function autorizar_orden_de_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function puedeautorizar_orden_de_compra ------*/

function puedeautorizar_orden_de_compra(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="SELECT login
               FROM gen_usuario_seguridad_login
              WHERE login='".$_SESSION['grant']['usr_login']."'
                AND id_seguridad=5";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datapermisoautorizar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datapermisoautorizar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datapermisoautorizar = false;
          $datapermisoautorizar_erro = $this->Db->ErrorMsg();
      } 

	if ($datapermisoautorizar ===false){
		return array("error"=>'Error #1186 : puedeautorizar_orden_de_compra:<br><b>'.$datapermisoautorizar_erro .'</b><br> '.$strsql,"autoriza"=>'NO');
	}
	if (count($datapermisoautorizar )==0){
		return array("error"=>"","autoriza"=>'NO');
	} else {
		return array("error"=>"","autoriza"=>'SI');
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function puedeautorizar_orden_de_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function boton_autorizarordendecompra ------*/

function boton_autorizarordendecompra(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$permiso=$this->puedeautorizar_orden_de_compra();
		if (''<>$permiso['error']){
			echo 'Error'.$permiso['error'];
		}

		$this->nmgp_botoes["autorizarordendecompra"] = 'off';;
	    $this->nm_btn_disabled["autorizarordendecompra"] = "on";;
		if (1==$_SESSION['grant']['usr_priv_admin'] or 'SI'==$permiso['autoriza']){
		  $this->nmgp_botoes["autorizarordendecompra"] = 'on';;
		  $this->nm_btn_disabled["autorizarordendecompra"] = "off";;
		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function boton_autorizarordendecompra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function datos_orden_de_compra ------*/

function datos_orden_de_compra($id_orden){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $strsql="select compania,
			nombre_compania,
			division,
			bodega,
			numero,
			fecha,
			moneda,
			usuario_crea,
			creado_por,
			fecha_creacion,
			usuario_modifica,
			modificado_por,
			fecha_modificacion,
			autoriza,
			quien_autoriza,
			solicita,
			quien_solicita,
			equipo,
			observaciones,
			estado,
			autorizada,
			provedor,
			nombre_provedor,
			subtotal,
			descuento,
			impuesto,
			total,
			simbolo_moneda,
			logocia,
			quien_autorizo,
			fecha_sistema,
			logo_anulado,
			departamento,
			nombre_departamento,
			vehiculo,
			nombre_division_empresa,
			nombre_division_planilla,
			usuario_autorizo,
			id_estado,
			unidad,
			usuario_autorizo,
			firma_autorizo
			from v_inv_orden_de_compra_encabezado
		  where id='".$id_orden."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadeordenes = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadeordenes[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadeordenes = false;
          $datadeordenes_erro = $this->Db->ErrorMsg();
      } 

	  if ($datadeordenes ===false){
		 return array("error"=>"Error:".$datadeordenes_erro .' '.$strsql); 
	  }
	  if (count($datadeordenes )==0){
		 return array("error"=>"No existe la orden de compra :".$id_orden);
	  }
	  return array("error"=>'',
				"compania"=>$datadeordenes[0][0],
				"nombre_compania"=>$datadeordenes[0][1],
				"division"=>$datadeordenes[0][2],
				"bodega"=>$datadeordenes[0][3],
				"numero"=>$datadeordenes[0][4],
				"fecha"=>$datadeordenes[0][5],
				"moneda"=>$datadeordenes[0][6],
				"usuario_crea"=>$datadeordenes[0][7],
				"creado_por"=>$datadeordenes[0][8],
				"fecha_creacion"=>$datadeordenes[0][9],
				"usuario_modifica"=>$datadeordenes[0][10],
				"modificado_por"=>$datadeordenes[0][11],
				"fecha_modificacion"=>$datadeordenes[0][12],
				"autoriza"=>$datadeordenes[0][13],
				"quien_autoriza"=>$datadeordenes[0][14],
				"solicita"=>$datadeordenes[0][15],
				"quien_solicita"=>$datadeordenes[0][16],
				"equipo"=>$datadeordenes[0][17],
				"observaciones"=>$datadeordenes[0][18],
				"estado"=>$datadeordenes[0][19],
				"autorizada"=>$datadeordenes[0][20],
				"provedor"=>$datadeordenes[0][21],
				"nombre_provedor"=>$datadeordenes[0][22],
				"subtotal"=>$datadeordenes[0][23],
				"descuento"=>$datadeordenes[0][24],
				"impuesto"=>$datadeordenes[0][25],
				"total"=>$datadeordenes[0][26],
				"simbolo_moneda"=>$datadeordenes[0][27],
				"logocia"=>$datadeordenes[0][28],
				"quien_autorizo"=>$datadeordenes[0][29],
				"fecha_sistema"=>$datadeordenes[0][30],
				"logo_anulado"=>$datadeordenes[0][31],
				"departamento"=>$datadeordenes[0][32],
				"nombre_departamento"=>$datadeordenes[0][33],
				"vehiculo"=>$datadeordenes[0][34],
				"nombre_division_empresa"=>$datadeordenes[0][35],
				"nombre_division_planilla"=>$datadeordenes[0][36],
				"usuario_autorizo"=>$datadeordenes[0][37],
				"id_estado"=>$datadeordenes[0][38],
				"unidad"=>$datadeordenes[0][39],
				"usuario_autorizo"=>$datadeordenes[0][40],
				"firma_autorizo"=>$datadeordenes[0][41]   
				 );
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function datos_orden_de_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function detalle_orde_de_compra ------*/

function detalle_orde_de_compra($elid){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select a.id,a.compania,a.division,a.numero,a.codigo_articulo,a.descripcion,a.cantidad_solicitada,
					a.cantidad_recibida,a.precio_unitario,a.paga_impuesto,a.porcentaje_descuento,a.subtotal,
					a.descuento,a.impuesto,a.total
				from inv_orden_de_compra_detalle a,
					 inv_orden_de_compra_encabezado b
				where a.compania=b.compania
				  and a.division=b.division
				  and a.numero=b.numero
				  AND b.para_recauche=0
				  and b.id='".$elid."'
				union all
				select a.id,a.compania,a.division,a.numero,a.codigo_articulo,
				          ifnull(concat('Numeraciones:',n.numeraciones),a.descripcion) descripcion,a.cantidad_solicitada,
									a.cantidad_recibida,a.precio_unitario,a.paga_impuesto,a.porcentaje_descuento,a.subtotal,
									a.descuento,a.impuesto,a.total
								from inv_orden_de_compra_detalle a,
									 inv_orden_de_compra_encabezado b
								left join (
									SELECT GROUP_CONCAT(concat(a.numeracion,' B:',
									                     ifnull(d.boleta_provedor,ifnull(c.boleta_provedor_recauche,''))) ) numeraciones
															FROM pre_llantas_movimientos_detalle a,
															pre_llantas_movimientos_encabezado b,
															pre_llantas c,
															pre_llantas_marcar_para d 
														 WHERE a.id_encabezado=b.id
														   AND b.id_orden_de_compra='".$elid."'
														   and c.numeracion=a.numeracion
														   and d.id_numeracion_llanta=a.numeracion 
														   and d.id_marca=1 
								) n on 1=1
								where a.compania=b.compania
								  and a.division=b.division
								  and a.numero=b.numero
								  and b.id='".$elid."'
								  and b.para_recauche=1
				  ";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($datadetalleorden = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadetalleorden = false;
          $datadetalleorden_erro = $this->Db->ErrorMsg();
      } 

	  if ($datadetalleorden ===false){
		  return array("error"=>"#1316 detalle_orde_de_compra Error:<br><b>".$datadetalleorden_erro .'</b><br> '.$strsql);
	  } else {
		  return array("error"=>"",
						"data"=>$datadetalleorden );
	  }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function detalle_orde_de_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_totales_en_compra ------*/

function verificar_totales_en_compra($id_compra){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select sum(subtotal) subtotal,sum(iva) iva from (
					select sum(subtotal_colones) subtotal,sum(impuesto_colones) iva
					  from inv_entradas_detalle
					  where id_encabezado=".$id_compra."
					  union all
					  select -1*sub_total_colones,-1*impuesto_colones iva
						from inv_entradas_encabezado
					   where id=".$id_compra.") a";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataverificarcompra = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataverificarcompra[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverificarcompra = false;
          $dataverificarcompra_erro = $this->Db->ErrorMsg();
      } 

		if ($dataverificarcompra ===false){
			return array("error"=>"Error #1446 funciones_generales.verificar_totales_en_compra:<br><b>".number_format($dataverificarcompra_erro ,2).'</b><br> '.$strsql);
		}
		if (count($dataverificarcompra )<>0){
		   if (0<>$dataverificarcompra[0][0] or 0<>$dataverificarcompra[0][1]){
			 return "El monto de las lineas no cuadra con el monto total de la compra:".
						  number_format($dataverificarcompra[0][0],2).' iva:'.number_format($dataverificarcompra[0][1],2);  
		   }
		}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_totales_en_compra ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_lib ------*/

function aplicacion_compra_lib($id_compra,$aplicar_los_costos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

	$msj=$this->puede_aplicar_este_id($id_compra,'entradas');
	if (''<>$msj['error']){
		return $msj;
	}

	$strsql="select estado
			   from inv_entradas_encabezado WHERE id='".$id_compra."' for update ";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadelaentrada = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadelaentrada[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadelaentrada = false;
          $datadelaentrada_erro = $this->Db->ErrorMsg();
      } 

	if ($datadelaentrada ===false){
		return array("error"=>"Error #1334 funciones_generales.aplicacion_compra_lib:<br><b>".$datadelaentrada .'</b><br> ',$strsql);
	}
	if (0==count($datadelaentrada )){
		return array("error"=>"Error #1337 funciones_generales.aplicacion_compra_lib: <br><b>Numero de entrada no existe</b>");
	}
	if (1<>$datadelaentrada[0][0]){
		$smk='aplicada';
		if (3==$datadelaentrada[0][0]){
			$smk="anulada";
		}
		if (4==$datadelaentrada[0][0]){
		} else {
		   return array("error"=>"Error #1344 funciones_generales.aplicacion_compra_lib:<br><b> Numero de entrada esta ".$smk.'</b>');
		}
	}
	$msj=$this->verificar_totales_en_compra($id_compra);
	if (''<>$msj){
		 return array("error"=>"#1364 funciones_generales.aplicacion_compra_lib <br><b>".$msj.'</b>');
	}


	$msj=$this->aplicacion_compra_asiento_lib($id_compra,'');
	if (''<>$msj['error']){
		return array("error"=>$msj['error']);
	}
	$c_numeroasiento=$msj['numeroasiento'];

	$strsql="update inv_entradas_encabezado set estado=2,numeroasiento='".$c_numeroasiento."',
	      usuario_aplicacion='".$_SESSION['grant']['usr_login']."',fecha_aplicacion='".date('Y-m-d H:i:s')."' WHERE id='".$id_compra."' limit 1 ";

	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $udatadelaentrada = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $udatadelaentrada[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $udatadelaentrada = false;
          $udatadelaentrada_erro = $this->Db->ErrorMsg();
      } 

	if ($udatadelaentrada ===false){
		return array("error"=>"Error #1361 funciones_generales.aplicacion_compra_lib:<br><b>".$udatadelaentrada .'</b><br> ',$strsql);
	}
	$msj=$this->aplicacion_compra_inventario_lib($id_compra,true,$aplicar_los_costos);
	if (''<>$msj['error']){
		return array("error"=>$msj['error']);
	} 
	if ('SI'==$aplicar_los_costos){
		$msj=$this->inv_aplicar_costos_asientos_lib('','');
		if (''<>$msj['error']){
			return array("error"=>$msj['error']);
		} 
	}
	$strsql="select a.id c_0,
					a.compania c_1,
					a.division c_2,
					a.bodega c_3,
					a.numero_entrada c_4,
					a.tipo_documento c_5,
					a.fecha c_6,
					a.moneda c_7,
					a.numero_factura c_8,
					a.usuario_crea c_9,
					a.fecha_creacion c_10,
					a.usuario_modifica c_11,
					a.fecha_modificacion c_12,
					a.ordendecompra c_13,
					a.cantidad_total c_14,
					a.sub_total_colones c_15,
					a.descuento_colones c_16,
					a.impuesto_colones c_17,
					a.total_documento_colones c_18,
					a.sub_total_dolares c_19,
					a.descuento_dolares c_20,
					a.impuesto_dolares c_21,
					a.total_documento_dolares c_22,
					a.total_exento_colones c_23,
					a.total_exento_dolares c_24,
					a.cedula_emisor c_25,
					a.provedor c_26,
					a.observaciones c_27,
					a.estado c_28,
					a.dias_credito c_29,
					a.tipo_cambio c_30,
					a.actividad_economica c_31,
					c.cuenta c_32,
					c.cuenta_gasto c_33,
					a.tipo_documento C_34
				from inv_entradas_encabezado a 
				 LEFT JOIN gen_proveedores b ON a.provedor=b.codigo
				 LEFT JOIN gen_proveedores_cuenta_contable c ON c.compania=a.compania AND c.proveedor=a.provedor
				where a.id='".$id_compra."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataencacompra = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataencacompra[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataencacompra = false;
          $dataencacompra_erro = $this->Db->ErrorMsg();
      } 

	if ($dataencacompra ===false){
		return array("error"=>"Error #1403 funciones_generales.aplicacion_compra_lib:<br><b>".$dataencacompra_erro .'</b><br> '.$strsql);
	}
	if (count($dataencacompra )==0){
		return array("error"=>"Error #1406 funciones_generales.aplicacion_compra_lib:<br><b> Id ".$id_compra." no encontrado<b>");
	}
	$lacia=$dataencacompra[0][1];
	$ladiv=$dataencacompra[0][2];
	$fecha_factura=$dataencacompra[0][6];
	$lanumerofactura=$dataencacompra[0][8];
	$elprv=$dataencacompra[0][26];
	$lacuentacxp=$dataencacompra[0][32];

	$esub_total_colones=$dataencacompra[0][15];
	$edescuento_colones=$dataencacompra[0][16];
	$eimpuesto_colones=$dataencacompra[0][17];
	$etotal_documento_colones=$dataencacompra[0][18];
	$saldo_colones=$etotal_documento_colones;
	$esub_total_dolares=$dataencacompra[0][19];
	$edescuento_dolares=$dataencacompra[0][20];
	$eimpuesto_dolares=$dataencacompra[0][21];
	$etotal_documento_dolares=$dataencacompra[0][22];
	$saldo_dolares=$etotal_documento_dolares;

	$total_exento_colones=$dataencacompra[0][23];
	$total_exento_dolares=$dataencacompra[0][24];
	$total_gravado_colones=$etotal_documento_colones-$total_exento_colones;
	$total_gravado_dolares=$etotal_documento_dolares-$total_exento_dolares;
	$lreba_colones=0;
	$lreba_dolares=0;
	
			
	$usuario=$_SESSION['grant']['usr_login'];
    $j_td_cxp='CM';
	if (1==$dataencacompra[0][34]){
		$j_td_cxp='NC';

		$esub_total_colones=-1*abs($esub_total_colones);
		$edescuento_colones=-1*abs($edescuento_colones);
		$eimpuesto_colones=-1*abs($eimpuesto_colones);
		$etotal_documento_colones=-1*abs($etotal_documento_colones);
		$saldo_colones=-1*abs($saldo_colones);
		$esub_total_dolares=-1*abs($esub_total_dolares);
		$edescuento_dolares=-1*abs($edescuento_dolares);
		$eimpuesto_dolares=-1*abs($eimpuesto_dolares);
		$etotal_documento_dolares=-1*abs($etotal_documento_dolares);
		$saldo_dolares=-1*abs($saldo_dolares);

		$total_exento_colones=-1*abs($total_exento_colones);
		$total_exento_dolares=-1*abs($total_exento_dolares);
		$total_gravado_colones=-1*abs($total_gravado_colones);
		$total_gravado_dolares=-1*abs($total_gravado_dolares);
	}
	

	$strsql="insert into cxp_documento_pendiente
	(compania,division,documento,tipo_documento,moneda,fecha,fecha_inclusion,usuario_crea,dias_credito,provedor,cuenta,sub_total_colones,descuento_colones,impuesto_colones,total_documento_colones,sub_total_dolares,descuento_dolares,impuesto_dolares,total_documento_dolares,saldo_colones,saldo_dolares,observaciones,estado,
		total_exento_dolares,total_exento_colones,total_gravado_dolares,total_gravado_colones,
		rebajo_comision_colones,rebajo_comision_dolares,numeroasiento) values 
		('$lacia',$ladiv,'$lanumerofactura','".$j_td_cxp."',1,'".$fecha_factura."','".date('Y-m-d H:i:s')."','$usuario',0,'$elprv','$lacuentacxp',
		$esub_total_colones,
		$edescuento_colones,
		$eimpuesto_colones,
		$etotal_documento_colones,
		$esub_total_dolares,
		$edescuento_dolares,
		$eimpuesto_dolares,
		$etotal_documento_dolares,
		$saldo_colones,
		$saldo_dolares,'',1,
		$total_exento_dolares,$total_exento_colones,$total_gravado_dolares,$total_gravado_colones,
		$lreba_colones,$lreba_dolares,'$c_numeroasiento')";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacxcdocumento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacxcdocumento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacxcdocumento = false;
          $datacxcdocumento_erro = $this->Db->ErrorMsg();
      } 

	if ($datacxcdocumento ===false){
		return array("error"=>"Error #1456 funciones_generales.aplicacion_compra_lib:<br><b>".$datacxcdocumento_erro .'</b><br> '.$strsql);
	}
     $strsql="insert into inv_existencias_series (id_existencia,serie,estado_actual,fecha_ultimo_mov,usuario_ultimo_mov,id_encabezado_compra)
		  SELECT d.id id_existencia,IF(IFNULL(a.serie,'')='',NULL,a.serie) serie,1 estado_actual,c.fecha_aplicacion,c.usuario_crea,a.id_encabezado
			FROM inv_entradas_detalle_series a
			LEFT JOIN inv_entradas_detalle b ON a.id_detalle=b.id
			LEFT JOIN inv_entradas_encabezado c ON b.id_encabezado=c.id
			LEFT JOIN inv_existencias d ON  d.compania=c.compania AND d.division=c.division AND d.bodega=c.bodega AND d.codigo_articulo=b.codigo_articulo
		  WHERE a.id_encabezado=".$id_compra;
		   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $inslasseries = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $inslasseries[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $inslasseries = false;
          $inslasseries_erro = $this->Db->ErrorMsg();
      } 

		  if ($inslasseries ===false){
			  return array("error"=>"Error #703.aplicacion_moviento_inv_lib:<br><b>".$inslasseries_erro .' </b><br>'.$strsql);
		  }

	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function genere_script_asiento_id ------*/

function genere_script_asiento_id($nid_compra){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

	return "SELECT a.compania,
			a.cuenta,
			IFNULL(b.descripcion,'noexiste') nombre_cuenta,
			a.detalle,
			abs(a.debitoc) debitoc,
			abs(a.debitod) debitod,
			abs(a.creditoc) creditoc,
			abs(a.creditod) creditod,
			referencia
	,mes,ano,fecha,moneda,tipo_cambio,(SELECT tipo_documento FROM inv_entradas_encabezado WHERE id='".$nid_compra."') tipo_documento 
	FROM (
	SELECT a.compania,b.cuenta,CONCAT('Compras provedor:',a.provedor) detalle,CAST(0 AS DECIMAL(12,2)) debitoc,CAST(0 AS DECIMAL(12,2)) debitod,total_documento_colones creditoc,total_documento_dolares creditod,'Cuenta prv' referencia,
	  a.mes,a.ano,a.fecha,a.moneda,a.tipo_cambio
	  FROM inv_entradas_encabezado a
	  LEFT JOIN gen_proveedores_cuenta_contable b ON a.compania=b.compania AND a.provedor=b.proveedor
	  WHERE a.id='".$nid_compra."'
	  UNION ALL
	  SELECT compania,cuenta,'Compras',a.subtotal_colones debitosc,a.subtotal_dolares debitosd,CAST(0 AS DECIMAL(12,2)) creditosc,CAST(0 AS DECIMAL(12,2))  creditosd,referencia,
	  mes,ano,fecha,moneda,tipo_cambio
	  FROM (
	  SELECT b.compania,IF(ISNULL(e.cuenta),d.cuenta,e.cuenta) cuenta,
			 sum(a.subtotal_colones-a.descuento_colones) subtotal_colones,
			 sum(a.subtotal_dolares-a.descuento_dolares) subtotal_dolares,
			 'Cuenta IVA' referencia,b.mes,b.ano,b.fecha,b.moneda,b.tipo_cambio
	 FROM inv_entradas_detalle a
	   LEFT JOIN inv_entradas_encabezado b ON a.id_encabezado=b.id
	   LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.codigo_articulo=a.codigo_articulo
	   LEFT JOIN inv_cuenta_gasto d ON d.id=a.inv_cuenta_gasto
	   LEFT JOIN inv_categoria_cuentas_contables e ON e.compania=c.compania AND e.categoria=c.categoria and e.sub_categoria=c.sub_categoria AND e.tipo_cuenta=1
	 WHERE a.id_encabezado='".$nid_compra."'
	 GROUP BY b.compania,IF(ISNULL(e.cuenta),d.cuenta,e.cuenta),b.mes,b.ano ) a
	 UNION
		SELECT c.compania,d.cuenta,'IVA' detalle,
			   monto debitosc,
			   dolares debitosd,
			   CAST(0 AS DECIMAL(12,2)) creditosc,CAST(0 AS DECIMAL(12,2))  creditosd,'Cuenta detalle' referencia,
			   c.mes,c.ano,c.fecha,c.moneda,c.tipo_cambio
		FROM inv_entradas_detalle_iva a
		  LEFT JOIN inv_impuesto_tarifas b ON a.codigo_iva=b.codigo
		  LEFT JOIN inv_entradas_encabezado c ON c.id=a.id_encabezado
		  LEFT JOIN con_cuentas_iva d ON d.codigo_iva=a.codigo_iva AND d.compania=c.compania AND d.tipo='CXP'
		  LEFT JOIN con_cuentas e ON e.compania=c.compania AND e.cuenta=d.cuenta
	WHERE a.id_encabezado='".$nid_compra."') a
	LEFT JOIN con_cuentas b ON a.compania=b.compania AND a.cuenta=b.cuenta";

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function genere_script_asiento_id ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_asiento_lib ------*/

function aplicacion_compra_asiento_lib($nid_compra,$numero_asiento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
    $strsql=$this->genere_script_asiento_id($nid_compra);
	$strsqlv=$strsql." where IFNULL(b.descripcion,'noexiste')='noexiste'";
	 
      $nm_select = $strsqlv; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($selectask = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $selectask = false;
          $selectask_erro = $this->Db->ErrorMsg();
      } 

	if ($selectask ===false){
		return array("error"=>"Error: #34.aplicacion_compra_asiento_lib:<br><b>".$selectask_erro .'</b><br> '.$strsqlv);
	}
	$i=0;
	$chtml='';
	while (!$selectask->EOF){

		$c_compania=$selectask->fields[0];
		$c_cuenta=$selectask->fields[1];
		$c_nombre_cuenta=$selectask->fields[2];
		$c_detalle=$selectask->fields[3];
		$c_debitoc=$selectask->fields[4];
		$c_debitod=$selectask->fields[5];
		$c_creditoc=$selectask->fields[6];
		$c_creditod=$selectask->fields[7];
		$c_referencia=$selectask->fields[8];
		
		if (0==$i){
			$chtml="<label style='text-align:center'>Lista de cuentas con problemas</label>
			        <table border='1'>
					  <tr>
					     <th>Cuenta</th>
						 <th>Detalle</th>
						 <th>Debito</th>
						 <th>Credito</th>
						 <th>Ref</th>
					 </tr>";
		}
		$chtml=$chtml."<tr>
		                 <td>".$c_cuenta."</td>
						 <td>".$c_detalle."</td>
						 <td style='text-align:right'>".number_format($c_debitoc,2)."</td>
						 <td style='text-align:right'>".number_format($c_creditoc,2)."</td>
						 <td>".$c_referencia."</td>
						</tr>";
		$i++;
		$selectask->MoveNext();
	}
	$selectask->CLose();
	if ($i>0){
		$chtml=$chtml.'</table>';
		
		return array("error"=>$chtml);
	}
	$strsqlk="select sum(debitoc),
	                 sum(debitod),
					 sum(creditoc),
					 sum(creditod),
					 max(mes) mes,
					 max(ano) ano,
					 max(compania) compania,
					 max(fecha) fecha,
					 max(moneda) moneda,
					 max(tipo_documento) tipo_documento
				from (".$strsql.") b";
	 
      $nm_select = $strsqlk; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ctotalasientoc = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ctotalasientoc[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ctotalasientoc = false;
          $ctotalasientoc_erro = $this->Db->ErrorMsg();
      } 

	if ($ctotalasientoc ===false){
		return array("error"=>"Error: #1577.aplicacion_compra_asiento_lib:<br><b>".$ctotalasientoc_erro .'</b><br> '.$strsqlk);
	}
	if (count($ctotalasientoc )==0){
		return array("error"=>"Error: #1580.aplicacion_compra_asiento_lib: <br><b>no existe documento ".'</b><br> '.$strsqlk);
	}

	$c_debitoc=$ctotalasientoc[0][0];
	$c_debitod=$ctotalasientoc[0][1];
	$c_creditoc=$ctotalasientoc[0][2];
	$c_creditod=$ctotalasientoc[0][3];
	$c_mes=$ctotalasientoc[0][4];
	$c_ano=$ctotalasientoc[0][5];
	$c_cia=$ctotalasientoc[0][6];
	$c_fecha=$ctotalasientoc[0][7];
	$c_moneda=$ctotalasientoc[0][8];
	$c_tipo_documento=$ctotalasientoc[0][9];
	
	if (1==$c_tipo_documento){
		$comprobante='CMP-'.$nid_compra;
	} else {
		$comprobante='CMP-'.$nid_compra;
	}
	if (round($c_debitoc,0)<>round($c_creditoc,0) or round($c_debitod,0)<>round($c_creditod,0)){
		if ((round($c_debitoc,0)-round($c_creditoc,0) + round($c_debitod,0)-round($c_creditod,0))>1) {
		return array("error"=>"Error: #1595.aplicacion_compra_asiento_lib: <br><b>desbalance colones:".number_format($c_debitoc-$c_creditoc,2).
					 'Desbalance dolares:'.number_format($c_debitod-$c_creditod,2).'</b>');
		}
	}

    if (''==$numero_asiento){
		$cclucy=1;
		$c_numeroasiento=$this->trae_numero_asiento($c_cia,$c_mes,$c_ano);
	} else {
		$cclucy=2;
		$c_numeroasiento=$numero_asiento;
	}
	if (-1==$c_numeroasiento){
		return array("error"=>"Error: #1602.aplicacion_compra_asiento_lib: <br><b>Numero de asiento asignado numeroasiento:".$c_numeroasiento.'</b>');
	}


	if (''==$numero_asiento){
		$c_numeroasiento=$c_ano.$c_mes.str_pad($c_numeroasiento, 7, "0", STR_PAD_LEFT);
		
		
		$strsqljj="insert into con_asientos_encabezado 
		   (compania,division,anomes,mes,ano,periodofiscal,numeroasiento,comprobante,fechaproceso,fechaaplicacion,moduloauxiliar,moneda,estado,observaciones,
		  debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,tipo_documento,inclusion) values 
		  	('$c_cia',1,'$c_ano$c_mes','$c_mes','$c_ano','$c_ano','$c_numeroasiento','$comprobante','$c_fecha',
		  	'0000-00-00 00:00:00',9,'$c_moneda',1,'','$c_debitoc','$c_creditoc','$c_debitod','$c_creditod','CM','".date('Y-m-d H:i:s')."')";
		 
      $nm_select = $strsqljj; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datainsertasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datainsertasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datainsertasiento = false;
          $datainsertasiento_erro = $this->Db->ErrorMsg();
      } 

		if ($datainsertasiento ===false){
			return array("error"=>"Error: #1609.aplicacion_compra_asiento_lib:".$datainsertasiento_erro .' '.$strsqljj);
		}
		 
      $nm_select = 'select last_insert_id()'; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ult_id_asiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ult_id_asiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ult_id_asiento = false;
          $ult_id_asiento_erro = $this->Db->ErrorMsg();
      } 

		if ($ult_id_asiento ===false){
			return array("error"=>"Error: #1613.aplicacion_compra_asiento_lib: <br><b>last_insert_id:".$ult_id_asiento_erro .'</b>');
		}
		$cid_asiento=$ult_id_asiento[0][0];		
    } else {
		$c_numeroasiento=$numero_asiento;
		$o_strsql="select id from con_asientos_encabezado where compania='".$c_cia."' and numeroasiento='".$c_numeroasiento."'";
		 
      $nm_select = $o_strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataidasenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataidasenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataidasenca = false;
          $dataidasenca_erro = $this->Db->ErrorMsg();
      } 

		if ($dataidasenca ===false){
			return array("error"=>"Error: #1702.aplicacion_compra_asiento_lib:<b><b>".$dataidasenca_erro .'</b><br> '.$o_strsql);
	     }
		if (count($dataidasenca )==0){
			return array("error"=>"Error: #1705.aplicacion_compra_asiento_lib<br><b> el numero de asiento ".$c_numeroasiento." no existe </b>");
		}
		$cid_asiento=$dataidasenca[0][0];
		$o_strsql="delete from con_asientos_detalle where id_asiento='".$cid_asiento."' and numeroasiento='".$c_numeroasiento."'";
		 
      $nm_select = $o_strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deeletedetaasi = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deeletedetaasi[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deeletedetaasi = false;
          $deeletedetaasi_erro = $this->Db->ErrorMsg();
      } 

		if ($deeletedetaasi ===false){
			return array("error"=>"Error: #1711.aplicacion_compra_asiento_lib: <br><b>".$deeletedetaasi_erro .'</b><br> '.$o_strsql);
		}
    }
	$j_deb_cred_x='debitos_local,creditos_local,debitos_extranjero,creditos_extranjero,';
	
	if (1==$c_tipo_documento){
		$j_deb_cred_x='creditos_local,debitos_local,creditos_extranjero,debitos_extranjero,';
	}
	$cstrsql="insert into con_asientos_detalle 
				(compania,division,id_asiento,mes,ano,numeroasiento,cuenta,centro_costo,
				".$j_deb_cred_x."
				referenciatipodecambio,
				tipodecambio,
				descripcionlinea,
				numeroalternodocumento,numerodocumento,lineautomatica
				)
				select '$c_cia',1,'$cid_asiento','$c_mes','$c_ano','$c_numeroasiento',cuenta,'' centro_costo,
				abs(debitoc) debitos_local,
				abs(creditoc) creditos_local,
				abs(debitod) debitos_extranjero,
				abs(creditod) creditos_extranjero,
				0 referenciatipodecambio,
				tipo_cambio tipodecambio,
				detalle descripcionlinea,
				'' numeroalternodocumento,'' numerodocumento,date_format(now(),'%s') from (".$strsql.") k ";

	 
      $nm_select = $cstrsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insedetasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insedetasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insedetasiento = false;
          $insedetasiento_erro = $this->Db->ErrorMsg();
      } 

	if ($insedetasiento ===false){
		return array("error"=>"Error: #1632.aplicacion_compra_asiento_lib:<br><b>".$insedetasiento_erro .'</b><br> '.$cstrsql);
	}
	$msj=$this->actualizar_numero_asiento($c_cia,$c_mes,$c_ano);
	if (''<>$msj){
		return array("error"=>$msj);
	}
	return array("error"=>'','numeroasiento'=>$c_numeroasiento);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_asiento_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_inventario_lib ------*/

function aplicacion_compra_inventario_lib($nid_compra,$aplicar,$aplicar_los_costos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if ($aplicar){
	   $h_factor=1;
	} else {
	   $h_factor=-1;
	}
	$strsql="SELECT IFNULL(a.codigo_articulo,'noexiste'),
		   a.cantidad_a_inventario,
		   IFNULL(d.descripcion,'noxiste'),
		   b.numero_entrada,
		   b.compania,
		   b.division,
		   b.bodega,
		   a.subtotal_colones,
		   a.descuento_colones,
		   b.tipo_documento
	 FROM inv_entradas_detalle a
	   LEFT JOIN inv_entradas_encabezado b ON a.id_encabezado=b.id
	   LEFT JOIN inv_catalogo_articulos c ON c.compania=b.compania AND c.codigo_articulo=a.codigo_articulo
	   LEFT JOIN inv_cuenta_gasto d ON d.id=a.inv_cuenta_gasto
	 WHERE a.id_encabezado='".$nid_compra."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($dataverarticulos = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataverarticulos = false;
          $dataverarticulos_erro = $this->Db->ErrorMsg();
      } 

	if ($dataverarticulos ===false){
		return array("error"=>"Error aplicacion_compra_inventario #1673:<br><b>".$dataverarticulos_erro .'</b><br> '.$strsql);
	}
	while (!$dataverarticulos->EOF){
		$c_articulo=$dataverarticulos->fields[0];
		$c_cantidad=$h_factor*$dataverarticulos->fields[1];
		$c_invcuenta=$dataverarticulos->fields[2];
		$bnumero_entrada=$dataverarticulos->fields[3];
		$bcompania=$dataverarticulos->fields[4];
		$bdivision=$dataverarticulos->fields[5];
		$bbodega=$dataverarticulos->fields[6];
		$adescuentocolones=$h_factor*$dataverarticulos->fields[8];
		$asubtotal_colones=$h_factor*$dataverarticulos->fields[7]-$adescuentocolones;
		$j_tipo_documento=$dataverarticulos->fields[9];

		if ('noexiste'==$c_articulo and 'noexiste'==$c_invcuenta){
			return array("error"=>"Error aplicacion_compra_inventario #1687: <br><b>No se dedinio codigo de articulo ni codigo de cuenta gasto</b>");
		}
 
		if (1==$j_tipo_documento){
			$c_cantidad=-1*$c_cantidad;
			$asubtotal_colones=-1*$asubtotal_colones;
		}
		$msj=$this->aplicar_al_inventario($bcompania,$bdivision,$bbodega,$c_articulo,$c_cantidad,$asubtotal_colones,true);
		if (''<>$msj){
			return array("error"=>$msj);
		} 
		if ('SI'==$aplicar_los_costos){
			$msj=$this->inv_aplicar_costos_lib($bbodega,$c_articulo);
			if (''<>$msj['error']){
				return $msj['error'];
			} 
		}
		$dataverarticulos->MoveNext();
	}
	$dataverarticulos->Close();
	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function aplicacion_compra_inventario_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function generar_asiento_de_nuevo_ib ------*/

function generar_asiento_de_nuevo_ib($ce_elid, $ce_numeroasiento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		if (''==$ce_numeroasiento){
			return array("error"=>"");
		}
		$x_elidmovimiento=$ce_elid;
		$strsql=
					"SELECT tipo_documento ,
						mes,
						ano,
						IFNULL(total,0) total,
						tipo,
						IF(0=IFNULL(tipo_cambio,0),IFNULL(tcm,IFNULL(tc,0)),tipo_cambio) tipo_cambio,
						compania,
						fecha
						FROM (
							SELECT a.tipo_documento ,
								a.mes,
								a.ano,
								(SELECT SUM(total) FROM inv_salidas_detalle WHERE id_encabezado='".$x_elidmovimiento."') total ,b.tipo,
								a.tipo_cambio,
								(SELECT tc_venta FROM `gen_tipos_de_cambio` ORDER BY fecha DESC LIMIT 1) tc,
								(SELECT tc_venta FROM `gen_tipos_de_cambio` tc WHERE tc.fecha=DATE(a.fecha)) tcm,
								a.compania,a.fecha
							  FROM inv_salidas_encabezado a,con_tipo_documento b
							 WHERE a.tipo_documento=b.id AND a.id='".$x_elidmovimiento."') a";

					 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datatipox_documento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datatipox_documento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datatipox_documento = false;
          $datatipox_documento_erro = $this->Db->ErrorMsg();
      } 

					if ($datatipox_documento ===false){
						return array("error"=>"Error #1879 aplicacion_movimiento_inv:<br><b>".$datatipox_documento_erro .'</b><br> '.$strsql);
					}
					if (count($datatipox_documento )==0){
						return array("error"=>"Error #1882 aplicacion_movimiento_inv:<br><b>".$x_elidmovimiento." Id de movimiento no existe</b>");
					}
					$x_tipo_documento=$datatipox_documento[0][0];
					$x_mes =$datatipox_documento[0][1];
					$x_ano =$datatipox_documento[0][2];
					$x_tot =$datatipox_documento[0][3];
					$x_tmov=$datatipox_documento[0][4];
					$x_ttc =$datatipox_documento[0][5];
					$x_c_cia =$datatipox_documento[0][6];
					$x_c_fecha=$datatipox_documento[0][7];
					if ($x_ttc==0){
						$x_ttc=600;
					}
					$x_totd=$x_tot/$x_ttc;

					if (9<>$x_tipo_documento and 10<>$x_tipo_documento and 23<>$x_tipo_documento and 24<>$x_tipo_documento){
						return array("error"=>"Error #1898 aplicacion_movimiento_inv: <br><b>tipo documento debe ser 9 o 10 solamente:".$x_tipo_documento.'</b>');	
					}

					$resultadob=$this->aplicacion_movimiento_inv_asiento_lib($x_elidmovimiento,$x_tipo_documento,$x_mes,$x_ano,$x_tot, $x_c_cia, $x_totd, $x_tmov, $x_c_fecha,$x_ttc,$ce_numeroasiento);
					if (''<>$resultadob['error']){
						return $resultadob;
					}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function generar_asiento_de_nuevo_ib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function verificar_asiento_antes_de_desaplicar_entrada ------*/

function verificar_asiento_antes_de_desaplicar_entrada($z_cia,$z_div,$z_numeroasiento,$z_identrada){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select id,
	                tipo_documento
	           from con_asientos_encabezado
			  where compania='".$z_cia."'
			    and division='".$z_div."'
				and numeroasiento='".$z_numeroasiento."'
				and comprobante='CMP-".$z_identrada."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataveriastadex = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataveriastadex[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataveriastadex = false;
          $dataveriastadex_erro = $this->Db->ErrorMsg();
      } 

	if ($dataveriastadex ===false){
		return array("error"=>"Error #1920 verificar_asiento_antes_de_desaplicar_entrada:<br><b>".$dataveriastadex_erro .'</b><br>'.$strsql);
	}
	if (count($dataveriastadex )==0){
		return array("error"=>"Error #1923 verificar_asiento_antes_de_desaplicar_entrada: <br><b>asiento no existe:".$z_cia.':'.$z_div.':'.$z_numeroasiento.'</b><br>');
	}
	if (count($dataveriastadex )>1){
		return array("error"=>"Error #1923 verificar_asiento_antes_de_desaplicar_entrada: <br><b>asiento duplicado:".$z_cia.':'.$z_div.':'.$z_numeroasiento.'</b><br>');
	}
	return array("error"=>"","id_asiento"=>$dataveriastadex[0][0],"tipo_documento"=>$dataveriastadex[0][1]);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function verificar_asiento_antes_de_desaplicar_entrada ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function des_aplicar_compra_lib ------*/

function des_aplicar_compra_lib($id_entrada,$aplicar_los_costos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="delete from inv_existencias_series where id_encabezado_compra=".$id_entrada;
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrarseriecom = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrarseriecom[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrarseriecom = false;
          $borrarseriecom_erro = $this->Db->ErrorMsg();
      } 

	if ($borrarseriecom ===false){
		return array("error"=>"Error #2159.des_aplicar_compra_lib:<br><b>".$borrarseriecom_erro .'</b><br> '.$strsql);
	}
	$strsql="SELECT
				  a.compania,
				  a.division,
				  a.mes,
				  a.ano,
				  a.numeroasiento,
				  a.bodega,
				  a.numero_factura,
				  a.provedor,
				  b.mes mes_control,
				  b.ano ano_control
				FROM
				  inv_entradas_encabezado a,
				  inv_control_companias b
				WHERE a.compania=b.compania
				  and a.id = '".$id_entrada."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadesplent = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadesplent[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadesplent = false;
          $datadesplent_erro = $this->Db->ErrorMsg();
      } 

	if ($datadesplent ===false){
		return array("error"=>"Error #1929 des_aplicar_compra_lib:<br><b>".$datadesplent_erro .'</b><br> '.$strsql);
	}
	if (count($datadesplent )==0){
		return array("error"=>"Error #1932 des_aplicar_compra_lib: id entrada no existe ".$id_entrada);
	}
	$t_cia=$datadesplent[0][0];
	$t_div=$datadesplent[0][1];
	$t_mes=$datadesplent[0][2];
	$t_ano=$datadesplent[0][3];
	$t_numeroasiento=$datadesplent[0][4];
	$t_bodega=$datadesplent[0][5];
	$t_numfac=$datadesplent[0][6];
	$t_proved=$datadesplent[0][7];
	$t_mesc=$datadesplent[0][8];
	$t_anoc=$datadesplent[0][9];
	if ($t_mesc<>$t_mes){
		return array("error"=>"Error #1970 des_aplicar_compra_lib no se puede desaplicar un movimiento de otro mes");
	}
	if ($t_anoc<>$t_ano){
		return array("error"=>"Error #1973 des_aplicar_compra_lib no se puede desaplicar un movimiento de otro año");
	}	
	$msj=$this->verificar_asiento_antes_de_desaplicar_entrada($t_cia,$t_div,$t_numeroasiento,$id_entrada);
	if (''<>$msj['error']){
		return $msj;
	}
	
	$strsql="delete from con_asientos_detalle
	           where compania='".$t_cia."'
			     and division='".$t_div."'
				 and numeroasiento='".$t_numeroasiento."'
				 and mes='".$t_mes."'
				 and ano='".$t_ano."'
				 and id_asiento='".$msj['id_asiento']."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $databorrardeasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $databorrardeasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $databorrardeasiento = false;
          $databorrardeasiento_erro = $this->Db->ErrorMsg();
      } 

	if ($databorrardeasiento ===false){
		return array("error"=>"Error #1968 des_aplicar_compra_lib:<br><b>".$databorrardeasiento_erro .'</b><br> '.$strsql);
	}
	$strsql=" update inv_entradas_encabezado set estado=1,numeroasiento=null
	           where estado=2
			     and compania='".$t_cia."'
			     and division='".$t_div."'
				 and numeroasiento='".$t_numeroasiento."'
				 and mes='".$t_mes."'
				 and ano='".$t_ano."' limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdeeinv = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdeeinv[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdeeinv = false;
          $dataupdeeinv_erro = $this->Db->ErrorMsg();
      } 

	if ($dataupdeeinv ===false){
		return array("error"=>"Error #1981 des_aplicar_compra_lib:<br><b>".$dataupdeeinv_erro .'</b><br> '.$strsql);
	}
	$strsql=" delete from cxp_documento_pendiente
			   where compania='".$t_cia."'
			     and division='".$t_div."'
				 and provedor='".$t_proved."'
				 and numeroasiento='".$t_numeroasiento."'
				 and documento='".$t_numfac."'
				 and tipo_documento='".$msj['tipo_documento']."' limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $deletefcxpdocp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $deletefcxpdocp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $deletefcxpdocp = false;
          $deletefcxpdocp_erro = $this->Db->ErrorMsg();
      } 

	if ($deletefcxpdocp ===false){
		return array("error"=>"Error #2000 des_aplicar_compra_lib:<br><b>".$deletefcxpdocp_erro .'</b><br> '.$strsql);
	}
	$strsql=" delete from con_asientos_encabezado
	           where compania='".$t_cia."'
			     and division='".$t_div."'
				 and numeroasiento='".$t_numeroasiento."'
				 and mes='".$t_mes."'
				 and ano='".$t_ano."'
				 and id='".$msj['id_asiento']."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $delencasiento = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $delencasiento[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $delencasiento = false;
          $delencasiento_erro = $this->Db->ErrorMsg();
      } 

	if ($delencasiento ===false){
		return array("error"=>"Error #1994 des_aplicar_compra_lib:<br><b>".$delencasiento_erro .'</b><br> '.$strsql);
	}
	$msj=$this->aplicacion_compra_inventario_lib($id_entrada,false,$aplicar_los_costos);
	if (''<>$msj['error']){
		return array("error"=>'Error #2015 des_aplicar_compra_lib:'.$msj['error']);
	}
	$msj=$this->agregar_log('desaplicarcompra','inv_utils.des_aplicar_compra_lib',$strsql);
	if (''<>$msj){
		return array("error"=>$msj);
	}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function des_aplicar_compra_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function consecutivo_llantas ------*/

function consecutivo_llantas(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $elano=date('y');
  $strsql="select consecutivo from pre_llantas_consecutivo where ano='".$elano."' for update";
   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataconsllantas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataconsllantas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataconsllantas = false;
          $dataconsllantas_erro = $this->Db->ErrorMsg();
      } 

  if ($dataconsllantas ===false){
	  return array("error"=>"Error #2149 inv_utils.php.consecutivo_llantas:<br><b>".$dataconsllantas_erro .'</b><br> '.$strsql);
  }
  if (count($dataconsllantas )==0){
	  $strsql="insert into pre_llantas_consecutivo (ano,consecutivo) values ('".$elano."',1)";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insconsllantas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insconsllantas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insconsllantas = false;
          $insconsllantas_erro = $this->Db->ErrorMsg();
      } 

	  if ($insconsllantas ===false){
		  return array("error"=>"Error #2155 inv_utils.php.consecutivo_llantas:<br><b>".$insconsllantas_erro .'</b><br> '.$strsql);
	  }
	  $elano=$elano.str_pad(1, 3, "0", STR_PAD_LEFT);
	  return array("error"=>"","consecutivo"=>$elano);
  } else {
	  $strsql="update pre_llantas_consecutivo set consecutivo=consecutivo+1 where ano='".$elano."'";
	   
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updconsllantas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updconsllantas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updconsllantas = false;
          $updconsllantas_erro = $this->Db->ErrorMsg();
      } 

	  if ($updconsllantas ===false){
		  return array("error"=>"Error #2162 inv_utils.php.consecutivo_llantas:<br><b>".$updconsllantas_erro .'</b><br> '.$strsql);
	  }
	  $elano=$elano.str_pad($dataconsllantas[0][0], 3, "0", STR_PAD_LEFT);
	  return array("error"=>"","consecutivo"=>$elano);
  }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function consecutivo_llantas ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function inv_aplicar_costos_lib ------*/

function inv_aplicar_costos_lib($c_bodega,$c_articulo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $elfiltro='';
  if (''<>$c_bodega.$c_articulo){
	  $elfiltro=" and a.codigo_articulo='".$c_articulo."' and a.bodega='".$c_bodega."'";
  }
		$strsql="update inv_existencias a set entradas=0,
				entradas_costo=0,
				salidas=0,
				salidas_costo=0,
				otros=0,
				otros_costo=0,
				existencia=0,
				existencia_costo=0 where 1=1 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $aplcero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $aplcero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $aplcero = false;
          $aplcero_erro = $this->Db->ErrorMsg();
      } 

		if ($aplcero ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2187 <br><b>".$aplcero_erro .'</b><br> '.$strsql);
		}
		$strsql="UPDATE inv_existencias a
		 LEFT JOIN (SELECT b.compania,
				b.division,
				b.bodega,
				a.codigo_articulo,
				SUM(a.cantidad_a_inventario) entradas,
				SUM(a.subtotal_colones) entradas_costo
		  FROM inv_entradas_detalle a,
			   inv_entradas_encabezado b,
			   inv_control_companias c
		  WHERE a.id_encabezado=b.id
			AND b.compania=c.compania
			AND b.mes=c.mes
			AND b.ano=c.ano
			AND b.estado=2 ".str_replace("a.bodega","b.bodega",$elfiltro)."
			GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
		 SET a.entradas=IFNULL(b.entradas,0),
			 a.entradas_costo=IFNULL(b.entradas_costo,0) where 1=1 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updentradas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updentradas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updentradas = false;
          $updentradas_erro = $this->Db->ErrorMsg();
      } 

		if ($updentradas ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2209 <br><b>".$updentradas_erro .'</b><br> '.$strsql);
		}


		$strsql="UPDATE inv_existencias a
		 LEFT JOIN (SELECT b.compania,
				b.division,
				b.bodega,
				a.codigo_articulo,
				SUM(a.cantidad_salida) salidas,
				SUM(a.total) salidas_costo
		  FROM inv_salidas_detalle a,
			   inv_salidas_encabezado b,
			   inv_control_companias c
		  WHERE a.id_encabezado=b.id
			AND b.compania=c.compania
			AND b.mes=c.mes
			AND b.ano=c.ano
			AND b.estado=2 ".str_replace("a.bodega","b.bodega",$elfiltro)."
			and b.tipo_documento in (23,24)
			GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
		 SET a.entradas=a.entradas+IFNULL(b.salidas,0),
			 a.entradas_costo=a.entradas_costo+IFNULL(b.salidas_costo,0) where 1=1 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updentradas_sal = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updentradas_sal[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updentradas_sal = false;
          $updentradas_sal_erro = $this->Db->ErrorMsg();
      } 

		if ($updentradas_sal ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2234 <br><b>".$updentradas_sal_erro .'</b><br> '.$strsql);
		}
		$strsql="UPDATE inv_existencias a SET costo_promedio=ROUND((inv_inicial_costo+entradas_costo)/(inv_inicial+entradas),2) 
				  WHERE (inv_inicial+entradas)<>0 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updcostoprom = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updcostoprom[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updcostoprom = false;
          $updcostoprom_erro = $this->Db->ErrorMsg();
      } 

		if ($updcostoprom ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2240 <br><b>".$updcostoprom_erro .'</b><br> '.$strsql);
		}
		$strsql="UPDATE inv_salidas_detalle a,
			   inv_salidas_encabezado b,
			   inv_control_companias c
		SET   precio_unitario=0,total=0
		  WHERE a.id_encabezado=b.id
			AND b.compania=c.compania
			AND b.mes=c.mes
			AND b.ano=c.ano
			and b.tipo_documento not in (23,24)
			AND b.estado=2 ".str_replace("a.bodega","b.bodega",$elfiltro);
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetasalcero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetasalcero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetasalcero = false;
          $upddetasalcero_erro = $this->Db->ErrorMsg();
      } 

		if ($upddetasalcero ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2254 <br><b>".$upddetasalcero_erro .'</b><br> '.$strsql);
		}

		$strsql="UPDATE inv_salidas_detalle a,
			   inv_salidas_encabezado b,
			   inv_control_companias c,
			   inv_existencias d
		SET   precio_unitario=d.costo_promedio,total=ROUND(cantidad_salida*d.costo_promedio,2)
		  WHERE a.id_encabezado=b.id
			AND b.compania=c.compania
			AND b.mes=c.mes
			AND b.ano=c.ano
			AND b.estado=2
			AND b.compania=d.compania
			AND b.division=d.division
			AND b.bodega=d.bodega
			and b.tipo_documento not in (23,24)
			AND d.codigo_articulo=a.codigo_articulo ".str_replace("a.bodega","b.bodega",$elfiltro);
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upddetasalcp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upddetasalcp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upddetasalcp = false;
          $upddetasalcp_erro = $this->Db->ErrorMsg();
      } 

		if ($upddetasalcp ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2274 <br><b>".$upddetasalcp_erro .'</b><br> '.$strsql);
		}


		$strsql="UPDATE inv_existencias a
		 LEFT JOIN (SELECT b.compania,
				b.division,
				b.bodega,
				a.codigo_articulo,
				SUM(a.cantidad_salida) salidas,
				SUM(a.total) salidas_costo
		  FROM inv_salidas_detalle a,
			   inv_salidas_encabezado b,
			   inv_control_companias c
		  WHERE a.id_encabezado=b.id
			AND b.compania=c.compania
			AND b.mes=c.mes
			AND b.ano=c.ano
			and b.tipo_documento not in (23,24)
			AND b.estado=2 ".str_replace("a.bodega","b.bodega",$elfiltro)."
			GROUP BY b.compania,b.division,b.bodega,a.codigo_articulo) b ON a.compania=b.compania AND a.division=b.division AND a.bodega=b.bodega AND a.codigo_articulo=b.codigo_articulo
		 SET a.salidas=IFNULL(b.salidas,0),
			 a.salidas_costo=IFNULL(b.salidas_costo,0) where 1=1 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updsalidas = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updsalidas[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updsalidas = false;
          $updsalidas_erro = $this->Db->ErrorMsg();
      } 

		if ($updsalidas ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2299 <br><b>".$updsalidas_erro .'</b><br> '.$strsql);
		}

		$strsql="update inv_existencias a set
					   existencia=(inv_inicial      +entradas      +salidas      +otros),
				 existencia_costo=(inv_inicial_costo+entradas_costo+salidas_costo+otros_costo) where 1=1 ".$elfiltro;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_inv_existe = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_inv_existe[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_inv_existe = false;
          $upd_inv_existe_erro = $this->Db->ErrorMsg();
      } 

		if ($upd_inv_existe ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2307 <br><b>".$upd_inv_existe_erro .'</b><br> '.$strsql);
		}
		$strsql="  UPDATE inv_salidas_encabezado a 
		  LEFT JOIN (
		  SELECT id_encabezado,
				 SUM(cantidad_salida) cantidad,
			SUM(total) total
		  FROM inv_salidas_detalle a where 1=1 ".str_replace("a.bodega","'".$c_bodega."'",$elfiltro)."
		  GROUP BY id_encabezado) b ON a.id=b.id_encabezado,
		  inv_control_companias c
			SET a.total_costo=IFNULL(b.total,0)
		  WHERE a.id=b.id_encabezado
		   AND a.compania=c.compania
			AND a.mes=c.mes
			AND a.ano=c.ano ".str_replace("a.codigo_articulo","'".$c_articulo."'",$elfiltro);
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_inv_salidasenca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_inv_salidasenca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_inv_salidasenca = false;
          $upd_inv_salidasenca_erro = $this->Db->ErrorMsg();
      } 

		if ($upd_inv_salidasenca ===false){
			return array("error"=>"Error inv_aplicar_costos_lib.#2324 <br><b>".$upd_inv_salidasenca_erro .'</b><br> '.$strsql);
		}

		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function inv_aplicar_costos_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function inv_aplicar_costos_asientos_lib ------*/

function inv_aplicar_costos_asientos_lib($c_bodega,$c_articulo){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $elfiltro='';
  if (''<>$c_bodega.$c_articulo){
  }
$strsql="SELECT id,SUM(a.total_cantidad) total_cantidad,SUM(a.total_costo) total_costo,numeroasiento FROM (
				  SELECT a.id,SUM(ABS(a.total_cantidad)) total_cantidad,SUM(ABS(a.total_costo)) total_costo,numeroasiento numeroasiento
				  FROM inv_salidas_encabezado a,
					 inv_control_companias c
				WHERE a.compania=c.compania
				  AND a.mes=c.mes
				  AND a.ano=c.ano
				  AND a.estado=2
				GROUP BY a.id,numeroasiento
				UNION ALL
				  SELECT id_encabezado,SUM(-1*ABS(cantidad_salida)) cantidad,
						 SUM(-1*ABS(total)) total,b.numeroasiento 
				   FROM inv_salidas_detalle a,
						inv_salidas_encabezado b,
					 inv_control_companias c
				WHERE b.compania=c.compania
				  AND b.mes=c.mes
				  AND b.ano=c.ano
				   AND b.id=a.id_encabezado
				   AND b.estado=2
				   GROUP BY id_encabezado,b.numeroasiento 

				   UNION ALL

				  SELECT id,SUM(ABS(0)) total_cantidad,SUM(ABS(a.sub_total_colones)) total_costo,numeroasiento numeroasiento
				  FROM inv_entradas_encabezado a,
					 inv_control_companias c
				WHERE a.compania=c.compania
				  AND a.mes=c.mes
				  AND a.ano=c.ano
				  AND a.estado=2
				GROUP BY a.id,numeroasiento
				UNION ALL
				  SELECT id_encabezado,SUM(-1*ABS(0)) cantidad,
						 SUM(-1*ABS(a.subtotal_colones)) total,numeroasiento referencia
				   FROM inv_entradas_detalle a,
						inv_entradas_encabezado b,
					 inv_control_companias c
				WHERE b.compania=c.compania
				  AND b.mes=c.mes
				  AND b.ano=c.ano
				  AND b.estado=2
				   AND b.id=a.id_encabezado
				   GROUP BY id_encabezado,numeroasiento
				   ) a
				   GROUP BY id,numeroasiento
				   HAVING SUM(a.total_cantidad)<>0 OR SUM(a.total_costo)<>0

				   UNION ALL

				   SELECT id,0,SUM(total) ,numeroasiento FROM (
					SELECT id,-1*ABS(total_costo) total,a.numeroasiento
					  FROM inv_salidas_encabezado a,
					 inv_control_companias c
				WHERE a.compania=c.compania
				  AND a.mes=c.mes
				  AND a.ano=c.ano
				  AND a.estado=2
					UNION ALL
					SELECT b.id,SUM(debitos_local),a.numeroasiento
					  FROM con_asientos_detalle a,
						  inv_salidas_encabezado b,
						  inv_control_companias c
					 WHERE a.numeroasiento=b.numeroasiento
				  AND b.compania=c.compania
				  AND b.mes=c.mes
				  AND b.ano=c.ano
				  AND b.estado=2
				  AND a.compania=b.compania
					 GROUP BY b.id,a.numeroasiento) a
					 GROUP BY a.id
					 HAVING SUM(total)<>0";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($data_asientosx = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_asientosx = false;
          $data_asientosx_erro = $this->Db->ErrorMsg();
      } 

		if ($data_asientosx ===false){
			return array("error"=>"Error inv_aplicar_costos_asientos_lib.#2416 <br><b>".$data_asientosx_erro .'</b><br> '.$strsql);
		}
		while (!$data_asientosx->EOF){
			$elid=$data_asientosx->fields[0];
			$elasiento=$data_asientosx->fields[3];
			$cdatos=$this->generar_asiento_de_nuevo_ib($elid, $elasiento);
			if ($cdatos['error']<>''){
				return $cdatos;
			}
			$data_asientosx->MoveNext();
		}
		$data_asientosx->Close();
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function inv_aplicar_costos_asientos_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function crear_orden_de_compra_lib ------*/

function crear_orden_de_compra_lib($zcompania,$zdivision,$zbodega,$zproveedor,$zfecha,$zmoneda,$zautoriza,$zsolicita,$zobservacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
if (!isset($_SESSION['usr_login'])) {$_SESSION['usr_login'] = "";}
if (!isset($this->sc_temp_usr_login)) {$this->sc_temp_usr_login = (isset($_SESSION['usr_login'])) ? $_SESSION['usr_login'] : "";}
  
	    if ('pararecauche'==$zobservacion){
			$pararecauche=1;
			$zobservacion='Para recauche';
		} else {
			$pararecauche=0;
		}
		$numerorden=1;
		$elwhere="  WHERE compania='".$zcompania."'
			AND division=".$zdivision."
			AND moduloauxiliar=10
			AND tipo_documento=11";

		$numeroorden=$this->traer_consecutivo($zcompania,$zdivision,10,11);
		if (-1==$numeroorden){
			return array("error"=>"Error en el consecutivo");
		}
		$numerorden=$numeroorden;

		$strsql="insert into inv_orden_de_compra_encabezado
					(compania,division,bodega,numero,provedor,fecha,moneda,usuario_crea,usuario_modifica,
					autoriza,solicita,equipo,observaciones,estado,para_recauche) values 
					('$zcompania',$zdivision,'$zbodega',$numerorden,'$zproveedor',
					'$zfecha',$zmoneda,'$this->sc_temp_usr_login','$this->sc_temp_usr_login',
					'$zautoriza','$zsolicita','','$zobservacion',2,'".$pararecauche."')";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $newoco = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $newoco[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $newoco = false;
          $newoco_erro = $this->Db->ErrorMsg();
      } 

		if ($newoco ===false){
			return array("error"=>"Error:<br><b>".$newoco_erro .'</b><br> '.$strsql);
		} 
	$cidorden=$this->ultimo_registro_grant();
	if (''<>$cidorden['error']){
		return array("error"=>$cidorden['error'],"numerorden"=>$numerorden,"idorden"=>0);
	}
	return array("error"=>"","numerorden"=>$numerorden,"idorden"=>$cidorden['id']);
if (isset($this->sc_temp_usr_login)) {$_SESSION['usr_login'] = $this->sc_temp_usr_login;}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function crear_orden_de_compra_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_deta ------*/

function crear_lineas_series_deta($ins_id,$comprasalida,$eliddeta,$lacnatdeta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$eliddeta=str_replace(".","",$eliddeta);
	$eliddeta=str_replace(",","",$eliddeta);
	
	$ins_id=str_replace(".","",$ins_id);
	$ins_id=str_replace(",","",$ins_id);
	
	$lacnatdeta=abs($lacnatdeta);
	$strsqla="delete from inv_".$comprasalida."_detalle_series where ifnull(serie,'')='' and id_detalle=".$eliddeta." and id_encabezado=".$ins_id;
	 
      $nm_select = $strsqla; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrcantdetaser = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrcantdetaser[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrcantdetaser = false;
          $borrcantdetaser_erro = $this->Db->ErrorMsg();
      } 

	if ($borrcantdetaser ===false){
		return array("error"=>"Error #2538:<br><b>".$borrcantdetaser_erro .'</b><br> '.$strsqla);
	}
	$strsqlb="select count(*) from inv_".$comprasalida."_detalle_series where id_detalle=".$eliddeta." and id_encabezado=".$ins_id;
	 
      $nm_select = $strsqlb; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $cantdetaser = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $cantdetaser[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $cantdetaser = false;
          $cantdetaser_erro = $this->Db->ErrorMsg();
      } 

	if ($cantdetaser ===false){
		return array("error"=>"Error #2543:<br><b>".$cantdetaser_erro .'</b><br> '.$strsqlb);
	}
	if (count($cantdetaser )==0){
		return array("error"=>"");
	}
	$tseriesact=$cantdetaser[0][0];
	for ($i=$tseriesact+1;$i<=$lacnatdeta;$i++){
		if ($i>1000){
			return array("error"=>"Error cantidad:".$i.' inicial:'.$tseriesact.' total:'.$lacnatdeta);
		}
		$strsql="insert into inv_".$comprasalida."_detalle_series (id_encabezado,id_detalle,serie)
					values (".$ins_id.",".$eliddeta.",null)";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insserdetax = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insserdetax[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insserdetax = false;
          $insserdetax_erro = $this->Db->ErrorMsg();
      } 

		if ($insserdetax ===false){
			return array("error"=>"Error #2546.crear_lineas_series_deta:<br><b>".$insserdetax_erro .'</b><br> '.$strsql);
		}
	}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_deta ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series ------*/

function crear_lineas_series($ins_id,$comprasalida){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$cmpcant='entradas'==$comprasalida ? 'cantidad_a_inventario' : 'cantidad_salida';
	$strsql="  SELECT a.id,abs(a.".$cmpcant.")
    FROM inv_".$comprasalida."_detalle a,
         inv_catalogo_articulos_cualidades_articulo b
   WHERE a.id_encabezado=".$ins_id."
     AND a.codigo_articulo=b.codigo_articulo
     AND b.cualidad=5";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($detadelid = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $detadelid = false;
          $detadelid_erro = $this->Db->ErrorMsg();
      } 

	if ($detadelid ===false){
		return array("error"=>"Error #2539.crear_lineas_series:<br><b>".$detadelid_erro .'</b><br> '.$strsql);
	}
	while (!$detadelid->EOF){
		$eliddeta=$detadelid->fields[0];
		$lacnatdeta=$detadelid->fields[1];
		$kmsj=$this->crear_lineas_series_deta($ins_id,$comprasalida,$eliddeta,$lacnatdeta);
		if (''<>$kmsj['error']){
			return $kmsj;
		}
		$detadelid->MoveNext();
	}
	$detadelid->Close();
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function procesar_entrada_series_lib ------*/

function procesar_entrada_series_lib($eliddetalle,$elidmovimiento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $strsql="INSERT INTO inv_existencias_series (id_existencia,serie,estado_actual,fecha_ultimo_mov,usuario_ultimo_mov,id_encabezado_salida) 
		   SELECT d.id id_existencia,
				   a.serie,
				   1 estado,
				   '".date('Y-m-d H:i:s')."',
				   '".$_SESSION['grant']['usr_login']."' usuario_ultimo_mov,
				   c.id id_encabezado_salida
			  FROM inv_salidas_detalle_series a,
				   inv_salidas_detalle b,
				   inv_salidas_encabezado c,
				   inv_existencias d
			 WHERE a.id_encabezado=".$elidmovimiento."
			   AND a.id_detalle=".$eliddetalle."
			   AND a.id_detalle=b.id
			   AND c.id=a.id_encabezado
			   AND d.codigo_articulo=b.codigo_articulo
			   AND d.compania=c.compania
			   AND d.division=c.division
			   AND d.bodega=c.bodega";
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $inslasseries = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $inslasseries[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $inslasseries = false;
          $inslasseries_erro = $this->Db->ErrorMsg();
      } 

   if ($inslasseries ===false){
	   return array("error"=>"Error #2695 procesar_entrada_series_lib:<br><b>".$inslasseries_erro .'</b><br> '.$strsql);
   }
   return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function procesar_entrada_series_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function procesar_salida_series_lib ------*/

function procesar_salida_series_lib($eliddetalle,$elidmovimiento) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $strsql="SELECT d.id id_existencia,
       a.serie,
       ifnull(e.estado_actual,0) estado,
       '".date('Y-m-d H:i:s')."',
       '".$_SESSION['grant']['usr_login']."' usuario_ultimo_mov,
       c.id id_encabezado_salida,
       concat(ifnull(e.estado_actual,'0'),'-',IFNULL(f.descripcion,'')) nestado,
       if(isnull(e.id),'noexiste','siexiste') existe,
	   IFNULL(e.id,0)
  FROM inv_salidas_detalle_series a
       LEFT JOIN inv_salidas_detalle b ON  a.id_detalle=b.id
       LEFT JOIN inv_salidas_encabezado c ON c.id=a.id_encabezado
       LEFT JOIN inv_existencias d ON d.codigo_articulo=b.codigo_articulo 
             AND d.compania=c.compania
	     AND d.division=c.division
	     AND d.bodega=c.bodega
       LEFT JOIN inv_existencias_series e ON e.id_existencia=d.id AND e.serie=a.serie
       LEFT JOIN inv_existencias_series_estado f ON f.id=e.estado_actual
   WHERE a.id_encabezado=".$elidmovimiento." AND a.id_detalle=".$eliddetalle." ";
   
    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($sele_series = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $sele_series = false;
          $sele_series_erro = $this->Db->ErrorMsg();
      } 

   if ($sele_series ===false){
	   return array("error"=>"Error #2687 procesar_salida_series_lib:<br><b>".$sele_series_erro .'</b><br> '.$strsql);
   }
   while (!$sele_series->EOF){
	   $v_id_existencia=$sele_series->fields[0];
	   $v_serie=$sele_series->fields[1];
	   $v_estado_actual=$sele_series->fields[2];
	   $v_fecha_ultimo_mov=$sele_series->fields[3];
	   $v_usuario_ultimo_mov=$sele_series->fields[4];
	   $v_id_encabezado_salida=$sele_series->fields[5];
	   $v_nestado=$sele_series->fields[6];
	   $v_existe=$sele_series->fields[7];
	   $v_e_id=$sele_series->fields[8];
       if ('noexiste'==$v_existe){
		   return array("error"=>"Error #2735 procesar_salida_series_lib: <br><b>serie:".$v_serie." no existe</b><br> ".$strsql);
	   }

		if (1<>$v_estado_actual){
			return array("error"=>"Error #2741 procesar_salida_series_lib: <br><b>El estado de la serie:".$v_serie." es:".$v_nestado." deberia ser en 1-bodega</b>");
		}
	    $strsql="update inv_existencias_series set 
						 estado_actual=2,
						 id_encabezado_salida=".$elidmovimiento.",
						 fecha_ultimo_mov='".date('Y-m-d H:i:s')."',
						 usuario_ultimo_mov='".$_SESSION['grant']['usr_login']."'
		           where id=".$v_e_id;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_series = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_series[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_series = false;
          $upd_series_erro = $this->Db->ErrorMsg();
      } 

		if ($upd_series ===false){
			return array("error"=>"Error #2753 procesar_salida_series_lib:<br><b>".$upd_series_erro .'</b><br>'.$strsql);
		}
   $sele_series->MoveNext();
   }
   $sele_series->Close();
   return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function procesar_salida_series_lib ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_deta_traslado ------*/

function crear_lineas_series_deta_traslado($ins_id,$eliddeta,$lacnatdeta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$eliddeta=str_replace(".","",$eliddeta);
	$eliddeta=str_replace(",","",$eliddeta);
	
	$ins_id=str_replace(".","",$ins_id);
	$ins_id=str_replace(",","",$ins_id);
	
	$lacnatdeta=abs($lacnatdeta);
	$strsqla="delete from inv_traslados_detalle_series where ifnull(serie,'')='' and id_detalle=".$eliddeta." and id_encabezado=".$ins_id;
	 
      $nm_select = $strsqla; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrcantdetaser = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrcantdetaser[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrcantdetaser = false;
          $borrcantdetaser_erro = $this->Db->ErrorMsg();
      } 

	if ($borrcantdetaser ===false){
		return array("error"=>"Error #2773:<br><b>".$borrcantdetaser_erro .'</b><br> '.$strsqla);
	}
	$strsqlb="select count(*) from inv_traslados_detalle_series where id_detalle=".$eliddeta." and id_encabezado=".$ins_id;
	 
      $nm_select = $strsqlb; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $cantdetaser = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $cantdetaser[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $cantdetaser = false;
          $cantdetaser_erro = $this->Db->ErrorMsg();
      } 

	if ($cantdetaser ===false){
		return array("error"=>"Error #2778:<br><b>".$cantdetaser_erro .'</b><br> '.$strsqlb);
	}
	if (count($cantdetaser )==0){
		return array("error"=>"");
	}
	$tseriesact=$cantdetaser[0][0];
	for ($i=$tseriesact+1;$i<=$lacnatdeta;$i++){
		if ($i>1000){
			return array("error"=>"Error cantidad:".$i.' inicial:'.$tseriesact.' total:'.$lacnatdeta);
		}
		$strsql="insert into inv_traslados_detalle_series (id_encabezado,id_detalle,serie)
					values (".$ins_id.",".$eliddeta.",null)";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $insserdetax = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $insserdetax[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $insserdetax = false;
          $insserdetax_erro = $this->Db->ErrorMsg();
      } 

		if ($insserdetax ===false){
			return array("error"=>"Error #2793.crear_lineas_series_deta_traslado:<br><b>".$insserdetax_erro .'</b><br> '.$strsql);
		}
	}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_deta_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_traslado ------*/

function crear_lineas_series_traslado($ins_id){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="  SELECT a.id,abs(a.cantidad)
    FROM inv_traslados_detalle a,
         inv_catalogo_articulos_cualidades_articulo b
   WHERE a.id_encabezado=".$ins_id."
     AND a.codigo_articulo=b.codigo_articulo
     AND b.cualidad=5";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($detadelid = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $detadelid = false;
          $detadelid_erro = $this->Db->ErrorMsg();
      } 

	if ($detadelid ===false){
		return array("error"=>"Error #2809.crear_lineas_series_traslado:<br><b>".$detadelid_erro .'</b><br> '.$strsql);
	}
	while (!$detadelid->EOF){
		$eliddeta=$detadelid->fields[0];
		$lacnatdeta=$detadelid->fields[1];
		$kmsj=$this->crear_lineas_series_deta_traslado($ins_id,$eliddeta,$lacnatdeta);
		if (''<>$kmsj['error']){
			return $kmsj;
		}
		$detadelid->MoveNext();
	}
	$detadelid->Close();
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function crear_lineas_series_traslado ------*/


/*----- Scriptcase Locale: PHP Method: inv_utils.php => function agregar_garantia_lib ------*/

function agregar_garantia_lib($z_id,$z_esgarantia,$z_numerogarantia) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="delete from inv_salidas_encabezado_cualidades
					 where id_encabezado='".$z_id."'
					   and cualidad='NUMEROGARANTIA'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrarprimero = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrarprimero[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrarprimero = false;
          $borrarprimero_erro = $this->Db->ErrorMsg();
      } 

		if ($borrarprimero ===false){
			return array("error"=>"#2831 agregar_garantia_lib.Error:".$borrarprimero_erro .' '.$strsql);
		}
		$n_garantia=rtrim(ltrim($z_numerogarantia));

		if (1==$z_esgarantia or ''<>$n_garantia){

			if (''==$n_garantia){
				$n_garantia='S/N';
			}

			$strsql="insert into inv_salidas_encabezado_cualidades (id_encabezado,cualidad,valor) 
					values ('".$z_id."','NUMEROGARANTIA','".$n_garantia."')";
			 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $luegoagregar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $luegoagregar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $luegoagregar = false;
          $luegoagregar_erro = $this->Db->ErrorMsg();
      } 

			if ($luegoagregar ===false){
				return array("error"=>"#2845 agregar_garantia_lib.Error:".$luegoagregar_erro .' '.$strsql);
			}
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: inv_utils.php => function agregar_garantia_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function nombre_de_variables ------*/

function nombre_de_variables(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	return 'cxnombreempleadocx=Nombre del empleado<br>
cxnombreempresacx=Nombre de la empresa<br>
cxobservacioncx=Observaciones digitadas tambien puede ser el motivo<br>
cxfechaingresocx=Fecha de ingreso del empleado<br>
cxfechasalidacx=Fecha de salida del empleado<br>
cxfechainicialcx=Fecha inicial de la accion de personal<br>
cxfechafinalcx=Fecha fnal de la accion de personal<br>
cxdepartamentocx=Departamento del empleado<br>
cxdivisioncx=Division del empleado<br>
cxpuestocx=Puesto del empleado<br>
cxtipodespidocx=Tipo de despido, con responsabilidad, sin responsabilidad<br>
cxdirigidoacx=Nombre a quien va dirigido

cxsexcx=Trato de la persona segun el sexo "<strong>del</strong> señor" o "<strong>de la</strong>" señora<br>
cxsex2cx=Trato de la persona segun el sexo "el señor" o "la señora"<br>
cxmape1cx=Primer apellido del empleado<br>
cxdiaingresocx=Dia numerico de la fecha de ingreso<br> 
cxmesingresocx =Nombre del mes de la fecha de ingreso<br>
cxanoingesocx =Año de la fecha de ingreso<br>
cxtxtbrutovaluecx =Salario bruto del empleado<br>
cxtxtbrutovalueletrascx=Salario bruto del empleado en letras<br>
cxportacx =Descripcion de portador segun el sexo "portador" o "portadora"<br>
cxtipidcx =Tipo de documento de identidad "de cédula de identidad" o "numero de identificacion"<br>
cxcedulacx =Numero de documento de identidad del empleado, campo cedula de la tabla cedula<br>
cxtablasalarioscx=Tabla de salarios de 3,6 o 12 meses segun la carta
cxthisformtxtadicionalvaluecx=Texto de salario adicional mensual indicado en el formularo<br>
cxgravamenescx=Indica si tiene o no tiene gravamenes en el momento de registrar la carta<br>
cxintercx =Indicador de interesado segun el sexo "del interesado" o "de la interesada"<br>
cxdiafechaemisioncx=Dia de la fecha de emision de la carta<br> 
cxnombremesfechaemisioncx=Nombre del mes de la emision de la carta<br> 
cxanofechaemisioncx=Año de la fecha de emision de la carta<br>
cxsalarionetocx=Salario neto del empleado<br>
cxsalrionetoletrascx=Salario neto del empleado en letras<br>
cxpersonaautorizadacx=Persona autorizada a firmar la accion<br>
cxdocumetnoautorizadacx=Numero o descripcion del documento de la persona autorizada<br>
cxhascuandolaborocx hasta la fecha o bien la fecha de salida<br>
cxlugaryfechadeemisioncx por ejemplo Cartago 30, nov 2024<br>
cxcedulajuridicacx Cedula juridica de la empresa<br>
cxlaboraolaborocx indica si labra actualmente o laboró
';
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function nombre_de_variables ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function tabla_salarios ------*/

function tabla_salarios($js_eltexto,$js_meses){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	
	$latabla='<table border="1">
			<tr>
	          <th class="color_th linea" width="100">Mes</th>
			  <th class="color_th linea" width="100">Salario</th>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario1cx</td>
				<td class="montoespacioderecha linea">cxsalario1cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario2cx</td>
				<td class="montoespacioderecha linea">cxsalario2cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario3cx</td>
				<td class="montoespacioderecha linea">cxsalario3cx</td>
			</tr>';
	if (6==$js_meses or 12==$js_meses){
	   	$latabla.='
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario4cx</td>
				<td class="montoespacioderecha linea">cxsalario4cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario5cx</td>
				<td class="montoespacioderecha linea">cxsalario5cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario6cx</td>
				<td class="montoespacioderecha linea">cxsalario6cx</td>
			</tr>';
	}
	if (12==$js_meses){
	   	$latabla.='
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario7cx</td>
				<td class="montoespacioderecha linea">cxsalario7cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario8cx</td>
				<td class="montoespacioderecha linea">cxsalario8cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario9cx</td>
				<td class="montoespacioderecha linea">cxsalario9cx</td>
			</tr>	   
			
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario10cx</td>
				<td class="montoespacioderecha linea">cxsalario10cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario11cx</td>
				<td class="montoespacioderecha linea">cxsalario11cx</td>
			</tr>
			<tr>
				<td class="linea" style="text-align: center;">cxmessalario12cx</td>
				<td class="montoespacioderecha linea">cxsalario12cx</td>
			</tr>';
    }
	
	$latabla='<table>
			<tr>
			<th width="210">
			</th>
			<th width="245">'.$latabla.'</table>
			</th>
			</tr>
			</table>';
	$js_eltexto=str_replace('cxtablasalarioscx',$latabla,$js_eltexto);
	
	
	return $js_eltexto;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function tabla_salarios ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function reemplazar_variables ------*/

function reemplazar_variables($j_id_carta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="SELECT initcap(a.nombre_empresa),
	initcap(rtrim(a.nombre_empleado)) nombre_empleado,
	initcap(a.nombre_departamento) nombre_departamento,
	initcap(a.nombre_division) nombre_division,
	initcap(a.nombre_estado_civil) nombre_estado_civil,
	a.nombre_puesto nombre_puesto,
	DATE_FORMAT(a.fecha_ingreso,'%d/%b/%Y') fecha_ingreso,
	DATE_FORMAT(a.fecha_salida,'%d/%b/%Y') fecha_salida,
	a.mes_ingreso,
	a.dia_ingreso,
	a.ano_ingreso,
	b.fecha,
	lower(IFNULL(bm.descripcion,'')) mes_emision,
	DAY(b.fecha) dia_emision,
	YEAR(b.fecha) ano_emision,
	a.sexo,
	ifnull(b.motivo,'') motivo,
	initcap(a.primernombre) primernombre,
	initcap(a.segundonombre) segundonombre,
	initcap(a.primerapellido) primerapellido,
	initcap(a.segundoapellido) segundoapellido,
	a.tipo_cedula,
	ifnull(b.salario_adicional,0) salario_adicional,
	b.tiene_gravamenes,
	 ifnull(bb.texto,'') texto_carta,
	 a.cedula cedula,
	 a.empresa,
	 uc.nombre_resumen,
	 a.salario_jornada,	 
	pp.porcentaje_ccss,
	pp.porcentaje_bp,
	pp.por_ccss_pen,
	pp.por_bp_pen,
	b.meses,
	ifnull(b.dirigidoa,''),
	nombre_dia_ingreso,
	b.cedula_certifico,
	c.titulo titulo_certifica,
	initcap(d.nombre) nombre_certifica,
	initcap(concat(bb.descripcion,' para ',a.primernombre)),
	b.salario_bruto,
	b.salario_neto,ifnull((SELECT sum(rebajo)
					FROM pla_deducciones_empleado
				   WHERE deduccion=3
					 AND cedula=a.cedula
					 AND estado=1
					 AND rebajo<>0),0) monto_embargos,
	  ifnull(predv.nombre,'') provincia,
	  ifnull(concat(DAY(a.fecha_salida),' de ',lower(IFNULL(bms.descripcion,'')),' del ',year(a.fecha_salida)),'') fecha_de_salida,
	  cedula_juridica
	  FROM v_pla_empleados a
	  LEFT JOIN pla_cartas b ON b.id='".$j_id_carta."'
	  left join pla_cartas_tipo bb on bb.tipo=b.tipo
	  LEFT JOIN gen_meses bm ON bm.mes=MONTH(b.fecha)
	  left join v_gen_usuario uc on uc.usuario=b.usuario_crea
	  left join con_control pp on pp.compania=a.empresa
	  left join pla_acciones_de_personal_autorizados c on c.cedula=b.cedula_certifico
	  left join gen_persona d on d.cedula=b.cedula_certifico
	  left join pre_predio pred on codigo='".$_SESSION['grant']['predio_default']."'
	  left join gen_provincia predv on predv.numeroprovincia=pred.provincia
	  LEFT JOIN gen_meses bms ON bms.mes=MONTH(a.fecha_salida)
	 WHERE a.empresa=b.empresa and a.cedula=b.cedula";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacambiovariables = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacambiovariables[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacambiovariables = false;
          $datacambiovariables_erro = $this->Db->ErrorMsg();
      } 

	if ($datacambiovariables ===false){
		return array("error"=>"Error:".$datacambiovariables_erro .' '.$strsql);
	}
	if (count($datacambiovariables )==0){
		return array("error"=>"Error: id no encontrado");
	}
	$j_nombre_empresa=str_replace('S.a','S.A',$datacambiovariables[0][0]);
	$j_nombre_empleado=$datacambiovariables[0][1];
	$j_nombre_departamento=$datacambiovariables[0][2];
	$j_nombre_division=$datacambiovariables[0][3];
	$j_nombre_estado_civil=$datacambiovariables[0][4];
	$j_nombre_puesto=$datacambiovariables[0][5];
	$j_fecha_ingreso=$datacambiovariables[0][6];
	$j_fecha_salida=$datacambiovariables[0][7];
	$j_mes_ingreso=$datacambiovariables[0][8];
	$j_dia_ingreso=$datacambiovariables[0][9];
	$j_ano_ingreso=$datacambiovariables[0][10];
	$j_fecha_emision=$datacambiovariables[0][11];
	$j_mes_emision=$datacambiovariables[0][12];
	$j_dia_emision=$datacambiovariables[0][13];
	$j_ano_emision=$datacambiovariables[0][14];
	$j_sexo=$datacambiovariables[0][15];
	$j_motivo=$datacambiovariables[0][16];
	$j_primernombre=$datacambiovariables[0][17];
  	$j_segundonombre=$datacambiovariables[0][18];
  	$j_primerapellido=$datacambiovariables[0][19];
  	$j_segundoapellido=$datacambiovariables[0][20];
	$j_tipo_cedula=$datacambiovariables[0][21];
	$j_salario_adicional=$datacambiovariables[0][22];
	$j_numero_embargos=$datacambiovariables[0][23];
	$j_eltexto=$datacambiovariables[0][24];
	$j_cedula=$datacambiovariables[0][25];
	$j_empresa=$datacambiovariables[0][26];
	$j_usuario=$datacambiovariables[0][27];
	
	
	$ppporcentaje_ccss=$datacambiovariables[0][29];
	$ppporcentaje_bp=$datacambiovariables[0][30];
	$pppor_ccss_pen=$datacambiovariables[0][31];
	$pppor_bp_pen  =$datacambiovariables[0][32];
	$j_meses=$datacambiovariables[0][33];
	$j_dirididoa=$datacambiovariables[0][34];
	$j_ndia_ingreso=$datacambiovariables[0][35];
	$j_cedula_certifico=$datacambiovariables[0][36];
	$j_titulo_certifica=$datacambiovariables[0][37];
	$j_nombre_certifica=$datacambiovariables[0][38];
	$j_nombre_tipo_carta=$datacambiovariables[0][39];
	

	$j_sal_bruto=number_format($datacambiovariables[0][40],2);
	$j_salbruto=$datacambiovariables[0][41];

	
	$elsalarioneto=$datacambiovariables[0][41];
	$monto_embargos=$datacambiovariables[0][42];
	$provincia=$datacambiovariables[0][43];
	$fecha_de_salida=$datacambiovariables[0][44];
	$cedula_juridica=$datacambiovariables[0][45];
	$lugaryfechaemision=$provincia.', '.$j_dia_emision.' de '.$j_mes_emision.' del '.$j_ano_emision;
		
	$j_eltexto=$this->tabla_salarios($j_eltexto,$j_meses);
	$j_salario_neto=number_format($elsalarioneto,2);
	$j_salario_netol=strtolower('('.$this->deme_monto_en_letras($elsalarioneto,'colones').')');
	
	$j_salario_adicionall='';
	if ($j_salario_adicional<>0){
		$j_salario_adicionall=''; 
		$j_salario_adicional=number_format($j_salario_adicional,2);
	    $j_salario_adicional="No omitimos manifestar que cxsex2cx cxmape1cx recibe una suma adicional mensual no sujeta a cargas sociales por un monto de ".
		$j_salario_adicional.' '.$j_salario_adicionall;
		$j_salario_adicional=str_replace('cxmape1cx',$j_primerapellido,$j_salario_adicional);

	} else {
		$j_salario_adicional='';
	}
	
	if (1==$j_sexo){
		$j_eltexto=str_replace('cxsexcx',"del señor",$j_eltexto);
		$j_eltexto=str_replace('cxsex2cx',"el señor",$j_eltexto);
		$j_salario_adicional=str_replace('cxsex2cx',"el señor",$j_salario_adicional);
		
		$j_eltexto=str_replace('cxportacx',", portador",$j_eltexto);
		$j_eltexto=str_replace('cxintercx',"del interesado",$j_eltexto);
	} else {
		$j_eltexto=str_replace('cxsexcx',"de la señora",$j_eltexto);
		$j_eltexto=str_replace('cxsex2cx',"la señora",$j_eltexto);
		$j_salario_adicional=str_replace('cxsex2cx',"la señora",$j_salario_adicional);
		
		$j_eltexto=str_replace('cxportacx',", portadora",$j_eltexto);
		$j_eltexto=str_replace('cxintercx',"de la interesada",$j_eltexto);
	}
	
	$j_sal_brutol='';
	$j_sal_brutol=strtolower('('.$this->deme_monto_en_letras($datacambiovariables[0][40],'colones').')');
	
	$j_porta='de cédula de identidad';
	if (1<>$j_tipo_cedula){
		$j_porta='numero de identificacion';
	}
    if (''<>$j_numero_embargos){
      $embargo= "A la fecha, éste ingreso se encuentra libre de gravámenes y embargos.";
    } else {
      $embargo = "A la fecha, éste ingreso se encuentra embargado por un monto de ".$monto_embargos;
	}
	$j_eltexto=str_replace('cxdirigidoacx',$j_dirididoa,$j_eltexto);
	$j_eltexto=str_replace('cxnombreempleadocx',$j_nombre_empleado,$j_eltexto);
	$j_eltexto=str_replace('cxnombreempresacx',$j_nombre_empresa,$j_eltexto);
	$j_eltexto=str_replace('cxobservacioncx',$j_motivo,$j_eltexto);
	$j_eltexto=str_replace('cxfechaingresocx',$j_fecha_ingreso,$j_eltexto);
	$j_eltexto=str_replace('cxfechasalidacx',$j_fecha_salida,$j_eltexto);
	$j_eltexto=str_replace('cxdepartamentocx',$j_nombre_departamento,$j_eltexto);
	$j_eltexto=str_replace('cxdivisioncx',$j_nombre_division,$j_eltexto);
	$j_eltexto=str_replace('cxpuestocx',$j_nombre_puesto,$j_eltexto);

	$j_eltexto=str_replace('cxmape1cx',$j_primerapellido,$j_eltexto);
	$j_eltexto=str_replace('cxdiaingresocx',$j_ndia_ingreso.' '.$j_dia_ingreso,$j_eltexto);
	$j_eltexto=str_replace('cxmesingresocx',$j_mes_ingreso,$j_eltexto);
	$j_eltexto=str_replace('cxanoingesocx',$j_ano_ingreso,$j_eltexto);
	$j_eltexto=str_replace('cxtxtbrutovaluecx',$j_sal_bruto,$j_eltexto);
	$j_eltexto=str_replace('cxtxtbrutovalueletrascx',$j_sal_brutol,$j_eltexto);
	$j_eltexto=str_replace('cxtipidcx',$j_porta,$j_eltexto);
	$j_eltexto=str_replace('cxcedulacx',str_replace('-','',$j_cedula),$j_eltexto);

	$j_eltexto=str_replace('cxthisformtxtadicionalvaluecx',$j_salario_adicional,$j_eltexto);
	$j_eltexto=str_replace('cxgravamenescx',$embargo,$j_eltexto);
	$j_eltexto=str_replace('cxdiafechaemisioncx',$j_dia_emision,$j_eltexto);
	$j_eltexto=str_replace('cxnombremesfechaemisioncx',$j_mes_emision,$j_eltexto);
	$j_eltexto=str_replace('cxanofechaemisioncx',$j_ano_emision,$j_eltexto);
	$j_eltexto=str_replace('cxsalarionetocx',$j_salario_neto,$j_eltexto);
	$j_eltexto=str_replace('cxsalrionetoletrascx',$j_salario_netol,$j_eltexto);
	
	$j_eltexto=str_replace('cxpersonaautorizadacx',$j_nombre_certifica,$j_eltexto);
	$j_eltexto=str_replace('cxdocumetnoautorizadacx',$j_titulo_certifica,$j_eltexto);
	$j_eltexto=str_replace('cxlugaryfechadeemisioncx',$lugaryfechaemision,$j_eltexto);
	
	if (''==$fecha_de_salida){
		$fecha_de_salida=' hasta la fecha';
		$laboraolaboro='labora';
	} else {
		$laboraolaboro='laboró';
	}
	$j_eltexto=str_replace('cxhascuandolaborocx',$fecha_de_salida,$j_eltexto);
	$j_eltexto=str_replace('cxlaboraolaborocx',$laboraolaboro,$j_eltexto);
	$j_eltexto=str_replace('cxcedulajuridicacx',$cedula_juridica,$j_eltexto);
	
	$msj=$this->ultimos_tres_salarios($j_cedula);
	if (''<>$msj['error']){
		return $msj;
	}
	$j_datasalarios=$msj['datasalarios'];
	$cantidad=0;
	$total=0;
	while (!$j_datasalarios->EOF){
		$cantidad++;
		$total+=$j_datasalarios->fields[0];
		if (1==$cantidad){
			$j_eltexto=str_replace('cxmessalario1cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario1cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (2==$cantidad){
			$j_eltexto=str_replace('cxmessalario2cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario2cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (3==$cantidad){
			$j_eltexto=str_replace('cxmessalario3cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario3cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		
		if (4==$cantidad){
			$j_eltexto=str_replace('cxmessalario4cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario4cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (5==$cantidad){
			$j_eltexto=str_replace('cxmessalario5cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario5cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (6==$cantidad){
			$j_eltexto=str_replace('cxmessalario6cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario6cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (7==$cantidad){
			$j_eltexto=str_replace('cxmessalario7cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario7cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (8==$cantidad){
			$j_eltexto=str_replace('cxmessalario8cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario8cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (9==$cantidad){
			$j_eltexto=str_replace('cxmessalario9cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario9cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (10==$cantidad){
			$j_eltexto=str_replace('cxmessalario10cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario10cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (11==$cantidad){
			$j_eltexto=str_replace('cxmessalario11cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario11cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
		if (12==$cantidad){
			$j_eltexto=str_replace('cxmessalario12cx',$j_datasalarios->fields[1],$j_eltexto);
			$j_eltexto=str_replace('cxsalario12cx',''.number_format($j_datasalarios->fields[0],2),$j_eltexto);
		}
	  $j_datasalarios->MoveNext();	
	}
	for ($i=1;$i<13;$i++){
		$sms="cxmessalario".$i."cx";
		$ssa="cxsalario".$i."cx";
		$j_eltexto=str_replace($sms,'',$j_eltexto);
		$j_eltexto=str_replace($ssa,'',$j_eltexto);
	}
	$j_datasalarios->Close();

	return array("error"=>'',
				"html"=>$j_eltexto,
				 "compania"=>$j_empresa,
				 "usuario"=>$j_usuario,
				 "ppporcentaje_ccss"=>$ppporcentaje_ccss,
				 "ppporcentaje_bp"=>$ppporcentaje_bp,
				 "pppor_ccss_pen"=>$pppor_ccss_pen,
				 "pppor_bp_pen"=>$pppor_bp_pen,
				 "j_nombre_tipo_carta"=>$j_nombre_tipo_carta);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function reemplazar_variables ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function annos_entre_fechas ------*/

function annos_entre_fechas($fecha_inicial,$fechafinal){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
   $nacimiento = new DateTime($fecha_inicial);
	if (''==$fechafinal){
    	$ahora = new DateTime(date("Y-m-d"));
	} else {
		$ahora = new DateTime($fechafinal);
	}
    $diferencia = $ahora->diff($nacimiento);
    return intval($diferencia->format("%y"));	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function annos_entre_fechas ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad ------*/

function la_antiguedad($fecha_nacimiento,$fechafinal){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $nacimiento = new DateTime($fecha_nacimiento);
	if (''==$fechafinal){
    	$ahora = new DateTime(date("Y-m-d"));
	} else {
		$ahora = new DateTime($fechafinal);
	}
    $diferencia = $ahora->diff($nacimiento);
    return $diferencia->format("%y años %m meses y %d dìas");

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad_dmd ------*/

function la_antiguedad_dmd($fecha_nacimiento,$fechafinal){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $nacimiento = new DateTime($fecha_nacimiento);
	if (''==$fechafinal){
    	$ahora = new DateTime(date("Y-m-d"));
	} else {
		$ahora = new DateTime($fechafinal);
	}
    $diferencia = $ahora->diff($nacimiento);
    return array("dias"=>$diferencia->format("%d"),"meses"=>$diferencia->format("%m"),"anos"=>$diferencia->format("%y"));

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad_dmd ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad_mala ------*/

function la_antiguedad_mala($lafecha,$fsalida){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$fingreso=strtotime($lafecha);
		$f1=mktime(0,0,0,date("m",$fingreso),date("d",$fingreso),date("Y",$fingreso));
		if (''==$fsalida){
			$edad_s=time()-$f1;
		} else {
			$f_salida=strtotime($fsalida);
			$f_salidat=mktime(0,0,0,date("m",$f_salida),date("d",$f_salida),date("Y",$f_salida));
			$edad_s=$f_salidat-$f1;
		}
		$edad_a=$edad_s/(60*60*24*360);
		$edad_m=($edad_a-(int)$edad_a)*12; 
		$edad_d=($edad_m-(int)$edad_m)*24;
		$edad_a=(int)$edad_a; 
		$edad_m=(int)$edad_m; 
		$edad_d=(int)$edad_d; 
		$cantiguedad="";
		$lblano=1==$edad_a ? " año" : " años ";
		if ($edad_a<>0) {$cantiguedad=$edad_a.$lblano;}
		
		$lblmes=1==$edad_m ? " mes" : " meses";
		if ($edad_m<>0){
			if (empty($cantiguedad)){
				$cantiguedad=$edad_m." meses ";
			} else {$cantiguedad=rtrim(ltrim($cantiguedad)).", ".$edad_m.$lblmes;}
		}

		$lbldia=1==$edad_d ? " día" : " días";
		if ($edad_d<>0){
			if (empty($cantiguedad)){
				$cantiguedad=$edad_d." días ";
			} else {$cantiguedad=rtrim(ltrim($cantiguedad))." y ".$edad_d.$lbldia;}
		}
		return $cantiguedad;
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function la_antiguedad_mala ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function datos_empleado ------*/

function datos_empleado($cedula){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select empresa,
					cedula,
					nacionalidad,
					dependientes,
					estatura,
					peso,
					talla_pantalon,
					talla_camisa,
					talla_zapatos,
					asegurado,
					puesto_ccss,
					puesto_ins,
					pensionado,
					pago_xbanco,
					fecha_ingreso,
					fecha_salida,
					exempleado,
					es_empleado,
					incapacitado,
					tipo_incapacidad,
					puesto,
					division,
					departamento,
					marca_tarjeta,
					tipo_horario,
					tipo_jornada,
					ndias_jornada,
					nhoras_jornada,
					nhoras_diarias,
					nextras_autorizadas,
					salario_jornada,
					salario_diario,
					salario_hora,
					hora_entrada_es,
					hora_salida_es,
					hora_entrada_fs,
					hora_salida_fs,
					asociado,
					usuario_creacion,
					fecha_creacion,
					usuario_modificacion,
					fecha_modificacion,
					centro_costo,
					estado_civil,
					nombre_departamento,
					nombre_division,
					nombre_estado_civil,
					nombre_tipo_horario,
					nombre_jornada,
					nombre_puesto,
					nombre_puesto_ccss,
					nombre_puesto_ins,
					nombre_sexo,
					nombre_empleado,
					nombre_nacionalidad,
					nombre_empresa,
					correo,
					telefono,
					direccion,
					cuenta_iban,
					foto,
					codigo_empleado,
					fecha_nacimiento,
					anos,
					meses,
					latitud,
					longitud,
					lugar_google,
					lat_lon,
					siguiente_doping,
					ultimo_doping,
					direccion_empresa,
					cedula_juridica,
					telefono_empresa,
					email_empresa,
					ifnull((SELECT max(detalle)
					FROM pla_deducciones_empleado
				   WHERE deduccion=3
					 AND cedula=a.cedula
					 AND estado=1
					 AND rebajo<>0),0) embargos
			  from v_pla_empleados a
			 where cedula='".$cedula."'";
     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $data_empleadomnb = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $data_empleadomnb[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_empleadomnb = false;
          $data_empleadomnb_erro = $this->Db->ErrorMsg();
      } 

	if ($data_empleadomnb ===false){
		return array("error"=>$data_empleadomnb_erro .' '.$strsql);
	}
	if (count($data_empleadomnb )==0){
		return array("error"=>"Cedula $cedula No existe en empleados");
	}
	if (1==$data_empleadomnb[0][16]){
	   $tlaborado=$this->la_antiguedad($data_empleadomnb[0][14],$data_empleadomnb[0][15]);
	} else {
	   $tlaborado=$this->la_antiguedad($data_empleadomnb[0][14],'');
	}
	$edad=$this->la_antiguedad($data_empleadomnb[0][62],'');
	$datos=array("error"=>"",
				 "empresa"=>$data_empleadomnb[0][0],
				"cedula"=>$data_empleadomnb[0][1],
				"nacionalidad"=>$data_empleadomnb[0][2],
				"dependientes"=>$data_empleadomnb[0][3],
				"estatura"=>$data_empleadomnb[0][4],
				"peso"=>$data_empleadomnb[0][5],
				"talla_pantalon"=>$data_empleadomnb[0][6],
				"talla_camisa"=>$data_empleadomnb[0][7],
				"talla_zapatos"=>$data_empleadomnb[0][8],
				"asegurado"=>$data_empleadomnb[0][9],
				"puesto_ccss"=>$data_empleadomnb[0][10],
				"puesto_ins"=>$data_empleadomnb[0][11],
				"pensionado"=>$data_empleadomnb[0][12],
				"pago_xbanco"=>$data_empleadomnb[0][13],
				"fecha_ingreso"=>$data_empleadomnb[0][14],
				"fecha_salida"=>$data_empleadomnb[0][15],
				"exempleado"=>$data_empleadomnb[0][16],
				"es_empleado"=>$data_empleadomnb[0][17],
				"incapacitado"=>$data_empleadomnb[0][18],
				"tipo_incapacidad"=>$data_empleadomnb[0][19],
				"puesto"=>$data_empleadomnb[0][20],
				"division"=>$data_empleadomnb[0][21],
				"departamento"=>$data_empleadomnb[0][22],
				"marca_tarjeta"=>$data_empleadomnb[0][23],
				"tipo_horario"=>$data_empleadomnb[0][24],
				"tipo_jornada"=>$data_empleadomnb[0][25],
				"ndias_jornada"=>$data_empleadomnb[0][26],
				"nhoras_jornada"=>$data_empleadomnb[0][27],
				"nhoras_diarias"=>$data_empleadomnb[0][28],
				"nextras_autorizadas"=>$data_empleadomnb[0][29],
				"salario_jornada"=>$data_empleadomnb[0][30],
				"salario_diario"=>$data_empleadomnb[0][31],
				"salario_hora"=>$data_empleadomnb[0][32],
				"hora_entrada_es"=>$data_empleadomnb[0][33],
				"hora_salida_es"=>$data_empleadomnb[0][34],
				"hora_entrada_fs"=>$data_empleadomnb[0][35],
				"hora_salida_fs"=>$data_empleadomnb[0][36],
				"asociado"=>$data_empleadomnb[0][37],
				"usuario_creacion"=>$data_empleadomnb[0][38],
				"fecha_creacion"=>$data_empleadomnb[0][39],
				"usuario_modificacion"=>$data_empleadomnb[0][40],
				"fecha_modificacion"=>$data_empleadomnb[0][41],
				"centro_costo"=>$data_empleadomnb[0][42],
				"estado_civil"=>$data_empleadomnb[0][43],
				"nombre_departamento"=>$data_empleadomnb[0][44],
				"nombre_division"=>$data_empleadomnb[0][45],
				"nombre_estado_civil"=>$data_empleadomnb[0][46],
				"nombre_tipo_horario"=>$data_empleadomnb[0][47],
				"nombre_hornada"=>$data_empleadomnb[0][48],
				"nombre_puesto"=>$data_empleadomnb[0][49],
				"nombre_puesto_ccss"=>$data_empleadomnb[0][50],
				"nombre_puesto_ins"=>$data_empleadomnb[0][51],
				"nombre_sexo"=>$data_empleadomnb[0][52],
				"nombre_empleado"=>$data_empleadomnb[0][53],
				"nombre_nacionalidad"=>$data_empleadomnb[0][54],
				"nombre_empresa"=>$data_empleadomnb[0][55],
				"correo"=>$data_empleadomnb[0][56],
				"telefono"=>$data_empleadomnb[0][57],
				"direccion"=>$data_empleadomnb[0][58],
				"cuenta_iban"=>$data_empleadomnb[0][59],
				"foto"=>$data_empleadomnb[0][60],
				"codigo_empleado"=>$data_empleadomnb[0][61],
				"fecha_nacimiento"=>$data_empleadomnb[0][62],
				"anos"=>$data_empleadomnb[0][63],
				"meses"=>$data_empleadomnb[0][64],
				"latitud"=>$data_empleadomnb[0][65],
				"longitud"=>$data_empleadomnb[0][66],
				"lugar_google"=>$data_empleadomnb[0][67],
				"lat_lon"=>$data_empleadomnb[0][68],
				"siguiente_doping"=>$data_empleadomnb[0][69],
				"ultimo_doping"=>$data_empleadomnb[0][70],
				"direccion_empresa"=>$data_empleadomnb[0][71],
				"cedula_juridica"=>$data_empleadomnb[0][72],
				"telefono_empresa"=>$data_empleadomnb[0][73],
				"email_empresa"=>$data_empleadomnb[0][74],
				"tiene_gravamenes"=>$data_empleadomnb[0][75],
				"tiempo_laborado"=>$tlaborado,
				"edad"=>$edad );
	return $datos;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function datos_empleado ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function calcular_planilla_completa ------*/

function calcular_planilla_completa($laempresa,$jornada,$del,$al)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	 $strsql="delete from pla_calculo_planilla 
                      where empresa='".$laempresa."'
                        and jornada='".$jornada."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($primeroborrar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $primeroborrar = false;
          $primeroborrar_erro = $this->Db->ErrorMsg();
      } 

	if ($primeroborrar  === false) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #11 calculo_planilla ' . $primeroborrar_erro  . ' ' . '<br />\n $strsql=' . $strsql;
;
		return 1;
   }
	
	$strsql="select distinct cedula from pla_movimientos where empresa='".$laempresa."' and jornada='".$jornada."'";

	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($calcplatotal = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $calcplatotal = false;
          $calcplatotal_erro = $this->Db->ErrorMsg();
      } 

	if ($calcplatotal  === false) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #19.calcular_planilla_completa ' . $calcplatotal_erro   . $strsql;
;
	 	return 1;
	} elseif (empty($calcplatotal )) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #22 calculo_planilla No hay movimientos en la jornada:'.$jornada.' '. $strsql;
;
		return 1;
    }  else {
			while (!$calcplatotal->EOF) {
				$lacedula = $calcplatotal->fields[0];
				$this->calcule_linea($laempresa,$lacedula);
			$calcplatotal->MoveNext();
		    }
	      $calcplatotal->Close();
		}
 return 0;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function calcular_planilla_completa ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function calcule_linea ------*/

function calcule_linea($laempresa,$la_cedula)
 {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select salario_hora,salario_jornada,1 planilla,
	                      departamento,centro_costo,indicador,cuenta_cxc,tipo_jornada,salario_diario,division
                         	  from pla_empleados
							where empresa='".$laempresa."'
							  and cedula='".$la_cedula."'";
     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datacedula = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datacedula[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datacedula = false;
          $datacedula_erro = $this->Db->ErrorMsg();
      } 

	 if ($datacedula  === false) {
	  
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #45 calculo_planilla, cedula no encontrada '.$datacedula_erro .' '. $la_cedula;
;
	  return 1;
	}
	if (count($datacedula )==0){
	  
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #49 calculo_planilla, codigo de cedula no encontrado '. $strsql;
;
	  return 1;		
	}
	$salarioxhora=$datacedula[0][0];
	$salariomensual=$datacedula[0][1];
	$laplanilla=$datacedula[0][2];
	$eldepartamento=$datacedula[0][3];
	$elcentrocosto=$datacedula[0][4];
	$elindicador=$datacedula[0][5];
	$cuentacxc=$datacedula[0][6];
	$jornada=$datacedula[0][7];
	$salario_diario=$datacedula[0][8];
	$ladivision=1; 
	if ($salarioxhora==0) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #61 calculo_planilla en salario por hora cedula ' . $la_cedula . ' cia:' . $laempresa . ' :' . $salarioxhora;
;
		return 1;
	}
	if ($salariomensual==0) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #65 calculo_planilla en el salario mensual cedula ' . $la_cedula . ' cia:' . $laempresa . ' :' . $salariomensual;
;
		return 1;
	}
	 	$strsql="delete from pla_calculo_planilla 
                      where empresa='".$laempresa."'
						and cedula='".$la_cedula."'
						and jornada='".$jornada."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($primeroborrar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $primeroborrar = false;
          $primeroborrar_erro = $this->Db->ErrorMsg();
      } 

	if ($primeroborrar  === false) {
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #75 calculo_planilla' . $primeroborrar_erro  . '<br />\n $strsql=' . $strsql;
;
		return 1;
   }
		$strsql="insert into pla_calculo_planilla 
			SELECT a.empresa,a.division,a.cedula,a.jornada,a.transaccion,0,sum(a.cantidad),
            damelacuenta(b.cuentagasto,c.indicador,c.departamento,b.utilizacentrodecosto,c.cuenta_cxc) cuenta,
			a.centro_costo
							FROM pla_movimientos a LEFT JOIN pla_transacciones b ON a.transaccion=b.codigo
							LEFT JOIN pla_empleados c ON a.cedula=c.empresa AND a.empresa=c.empresa
						where a.empresa='".$laempresa."' and a.cedula='".$la_cedula."' and a.cantidad<>0
					group by a.empresa,a.cedula,a.jornada,a.transaccion,
 damelacuenta(b.cuentagasto,c.indicador,c.departamento,b.utilizacentrodecosto,c.cuenta_cxc),centro_costo";
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($ahorainsertar = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ahorainsertar = false;
          $ahorainsertar_erro = $this->Db->ErrorMsg();
      } 

				if ($ahorainsertar  === false) {
					
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #91 calculo_planilla' . $ahorainsertar_erro  . $strsql;
;
				}

	 $strsql="select codigo,tipo,formula1,nivelcalculo,costo,cuentagasto,utilizacentrodecosto
               from pla_transacciones 
              where nivelcalculo>0
				and tipo>0
				and formula1<>''
		    order by nivelcalculo,codigo ";
	  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($transacciones = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $transacciones = false;
          $transacciones_erro = $this->Db->ErrorMsg();
      } 

	 if ($transacciones  === false)
	{
		
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #104 calculo_planilla ' . $transacciones_erro  . $strsql;
;
	} else {
			while (!$transacciones->EOF) {
				$transaccion = $transacciones->fields[0];
				$tipo = $transacciones->fields[1];
				$formula = $transacciones->fields[2];
				$nivelcalculo = $transacciones->fields[3];
				$elcosto= $transacciones->fields[4];
				$cuentagasto=$transacciones->fields[5];
				$utilizacentrodecosto=$transacciones->fields[6];
				if (1==$this->calcule_formula($transaccion,$formula,$nivelcalculo,$tipo,
									   $laempresa,$la_cedula,$salarioxhora,$salariomensual,$elcosto,$laplanilla,
 $elindicador,$elcentrocosto,$cuentagasto,$utilizacentrodecosto,$cuentacxc,$jornada,$salario_diario,$ladivision)) {
					return;
				}
			$transacciones->MoveNext();
		    }
	$transacciones->Close();
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function calcule_linea ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function calcule_formula ------*/

function calcule_formula($transaccion,$formula,$nivelcalculo,$tipo,
						 $laempresa,$la_cedula,$salarioxhora,$salariomensual,$elcosto,$laplanilla,
						$elindicador,$elcentrocosto,$cuentagasto,$utilizacentrodecosto,$cuentacxc,
						$jornada,$salario_diario,$ladivision)
{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$formula=$this->preparar_formula($formula,$laempresa,$la_cedula,$salarioxhora,$salariomensual,
							  $elcosto,$laplanilla,$salario_diario,$ladivision);
	 
      $nm_select = $formula; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($elmonto = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $elmonto = false;
          $elmonto_erro = $this->Db->ErrorMsg();
      } 

	if ($elmonto  === false) {
        
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #134 calculo_planilla '. $elmonto_erro . 'Transaccion:'.$transaccion.'<br> Formula=' . $formula;
;
		return 1;
    } elseif (empty($elmonto ))
    {
		return 1;
    } else {
		while (!$elmonto->EOF) {
				$eldepartamento=$elmonto->fields[0];
			    $elcentrocosto=$eldepartamento;
				$lacantidad=$elmonto->fields[1];
				$montototal=$elmonto->fields[2];
				if ($montototal==null) { 
					$montototal=0;
				}
				if ($montototal==0) {$montototal=0;} else {
				$lacuenta=$this->lacuenta($elindicador,$eldepartamento,$elcentrocosto,$cuentagasto,$utilizacentrodecosto,$cuentacxc);
				$strsql="insert into pla_calculo_planilla 
	(empresa,division,cedula,transaccion,cantidad,monto,cuenta,centro_costo,jornada) values      
	(la_empresa,'".$ladivision."',la_cedula,".$transaccion.",".$lacantidad.",".$montototal.",'".
	$lacuenta."','".$elcentrocosto."','".$jornada."')";
				$strsql=$this->preparar_formula($strsql,$laempresa,$la_cedula,$salarioxhora,$salariomensual,$elcosto,
										 $laplanilla,$salario_diario,$ladivision);
				 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $ahorainsertar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $ahorainsertar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $ahorainsertar = false;
          $ahorainsertar_erro = $this->Db->ErrorMsg();
      } 

						if ($ahorainsertar  === false) {
							
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #159 calculo_planilla transaccion: '.$transaccion . $ahorainsertar_erro  . $strsql;
;
							return 1;
						}
		        }
			$elmonto->MoveNext();
			}
		$elmonto->Close();
return 0;
    }
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function calcule_formula ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function preparar_formula ------*/

function preparar_formula($laformula,$laempresa,$lacedula,$elsalarioxhora,$elsalariomensual,$elcosto,
						  $laplanilla,$salario_diario,$ladivision)
	{
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$laformula=str_replace("la_empresa","'$laempresa'",$laformula);
	$laformula=str_replace("la_cedula","'$lacedula'",$laformula);
	$laformula=str_replace("el_salarioxhora",$elsalarioxhora,$laformula);
	$laformula=str_replace("el_salariomensual",$elsalariomensual,$laformula);
	$laformula=str_replace("la_planilla",$laplanilla,$laformula);
	$laformula=str_replace("el_costo",$elcosto,$laformula);
	$laformula=str_replace("el_salario_diario",$salario_diario,$laformula);
	$laformula=str_replace("la_division",$ladivision,$laformula);
 return $laformula;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function preparar_formula ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function lacuenta ------*/

function lacuenta($elindicador,$eldepartamento,$elcentrocosto,$lacuenta,$utilizacentrocosto,$cuentacxc)
    {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	 
      $nm_select = "select cedula,damelacuenta('$lacuenta','$elindicador','$eldepartamento','$utilizacentrocosto','$cuentacxc') lcuenta from pla_empleados limit 1"; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($datalacuenta = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datalacuenta = false;
          $datalacuenta_erro = $this->Db->ErrorMsg();
      } 

	if ($datalacuenta  === false) {
		 
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #185 calculo_planilla' . $datalacuenta_erro ;
;
	 	return '1';
	} elseif (empty($datalacuenta )) {
		 
 if (!isset($this->Campos_Mens_erro)){$this->Campos_Mens_erro = "";}
 if (!empty($this->Campos_Mens_erro)){$this->Campos_Mens_erro .= "<br>";}$this->Campos_Mens_erro .= 'Error #188 calculo_planilla ' . $datalacuenta_erro ;
;
		return '1';
    }  else {
			while (!$datalacuenta->EOF) {
				$lacuenta = $datalacuenta->fields[1];
			$datalacuenta->MoveNext();
		    }
	      $datalacuenta->Close();
		}
   return $lacuenta;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function lacuenta ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function total_deducciones ------*/

function total_deducciones($cempresa,$ccedula,$estado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select sum(rebajo)
	          from pla_deducciones_empleado
			 where empresa='".$cempresa."'
			   and cedula='".$ccedula."'
			   and estado=1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $totaldeducciones = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $totaldeducciones[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $totaldeducciones = false;
          $totaldeducciones_erro = $this->Db->ErrorMsg();
      } 

	if ($totaldeducciones ===false){
		echo "Error #223 calculo_planilla: ".$totaldeducciones_erro .' '.$strsql;
		return 0;
	} 
	if (count($totaldeducciones )>0){
		return $totaldeducciones[0][0];
	}
	return 0;
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function total_deducciones ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function cuenta_banco_nacional ------*/

function cuenta_banco_nacional($j_lacuenta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$j_lacuenta=str_replace('-','',$j_lacuenta);
		return substr($j_lacuenta,0,3).'-'.
			substr($j_lacuenta,3,2).'-'.
			substr($j_lacuenta,5,3).'-'.
			substr($j_lacuenta,8,6).'-'.
			substr($j_lacuenta,14,1);
  
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function cuenta_banco_nacional ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function ultimos_tres_salarios ------*/

function ultimos_tres_salarios($k_cedula){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="
			  SELECT SUM(a.cantidad_monto) monto,concat(c.resumen,'-',b.ano),count(*) 
			  FROM pla_movimientos a,
				 pla_planilla_encabezado b,
				 gen_meses c
			  WHERE a.transaccion=130
				AND a.id_planilla=b.id
				AND a.cedula='".$k_cedula."'
				and c.mes=b.mes
			 GROUP BY b.ano,b.mes,concat(c.resumen,'-',b.ano)
			 having count(*)>3
			 ORDER BY b.ano DESC,b.mes DESC
			 LIMIT 20";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($datasalarios = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datasalarios = false;
          $datasalarios_erro = $this->Db->ErrorMsg();
      } 

	if ($datasalarios ===false){
		return array("error"=>"Error:".$datasalarios_erro .' '.$strsql);
	} else {
		return array("error"=>'','datasalarios'=>$datasalarios);
	}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function ultimos_tres_salarios ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function existe_esta_planilla ------*/

function existe_esta_planilla($c_mes,$c_ano,$c_planilla,$c_cia){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select mes
				   from pla_planilla_encabezado
				  where mes=".$c_mes."
					and ano=".$c_ano."
					and planilla='".$c_planilla."'
					and empresa='".$c_cia."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataplanipago = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataplanipago[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataplanipago = false;
          $dataplanipago_erro = $this->Db->ErrorMsg();
      } 

		if ($dataplanipago ===false){
			return "Error:".$dataplanipago_erro .' '.$strsql;
		}
		if (count($dataplanipago )<>0){
			return "Error la planilla para aplicar ya esta cerrada";
		}
	return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function existe_esta_planilla ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function el_style ------*/

function el_style(){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	return '
					   <style>
					   .centrar_horizntal {
					       vertical-align: middle;
					   }
						.centered-element {
						  position: absolute;
						  top: 50%;
						  left: 50%;
						  margin-top: -50px; /* Ajusta el valor según la mitad de la altura del elemento */
						  margin-left: -50px; /* Ajusta el valor según la mitad del ancho del elemento */
						}
					   .montoespacioderecha {
					      text-align:right;
						  padding-right: 1.5em;
					   }
					   .colora {
					   
					   }
					   .colorb {
					   		background-color: #E6F9E6;
					   }
					   .colorb2{
					   		background-color: #f3f4f5
					   }
					   .oculto {
						   display: none;
						}
						 .enca1 {
							font-size:12px;
						 }
						 .enca14 {
							font-size:14px;
						 }
						 .enca10 {
							font-size:10px;
						 }
						 .enca9 {
							font-size:9px;
						 }
						 .titulo1 {
							font-size:18px;
							font-weight: bold;
						 }
						 .accion {
							font-size:14px;
						 }
						 .derecha {
							text-align:right;
						 }
						 .izquierda {
							text-align:left;
						 }
						 .otrosar {
							font-size:14px;
							text-align:right;
						 }
						 .otrosbl {
							font-size:14px;
							text-align:left;
						 }
						 .centrar {
							text-align:center;
						 }
						 .fondo {
							font-family: helvetica Times New Roman;
						 }
						 .negrita {
						    font-weight: bold;
						 }
						 .negra {
							font-weight: bold;
							font-size:12px;
						 }
						 .negra10{
							font-weight: bold;
							font-size:10px;
						 }
						 .negra8 {
							font-weight: bold;
							font-size:8px;
						 }
						 .igualnegra {
							font-size:12px;
						 }
						 .negra16 {
							font-weight: bold;
							font-size:16px;						 
						 }
						 .negra14 {
							font-weight: bold;
							font-size:14px;						 
						 }
						 .negraiz {
							text-align:left;
							font-weight: bold;
							font-size:12px;
						 }
						.tablaestado {
							border-left: none !important;
							border-right:none !important;
						}
						.pequeno {
							font-family: Arial helvetica Times New Roman;
							font-size:8px;
						}
						.tr_border {
  							/*border-top: 1pt solid black;*/
							border-bottom: 1pt solid black;
							padding-bottom: 3px;
						}
						.tr_border_grueso {
							border-bottom: 2pt solid black;
							padding-bottom: 5px;
						}
						.amarillo {
							Background-color: #F7DCDC;
						}
						.espacio {
							line-height: 160%
						}
						.espacio2 {
							line-height: 180%
						}
						.sin_espacio {
							line-height: 1%
						}
						.linea_16{
							line-height: 1.6;
						}
						.linea_26{
							line-height: 2.6;
						}
						.linea_02{
							line-height: 80%;
						}
						.linea_06{
							line-height: 0.6;
						}
						.espacio_doble {
						    line-height: 300%
						}
						.lin3 {
							text-align:center;
							font-weight: bold;
							font-size:18px;
						}
						.lin4 {
							text-align:center;
							font-weight: bold;
							font-size:14px;
						}
						.lin12 {
							text-align:center;
							font-weight: bold;
							font-size:12px;
						}
						.lin10 {
							text-align:center;
							font-weight: bold;
							font-size:10px;
						}
						.t10 {
						   font-size:10px;
						}
						.cdisplayinline { 
						   display:inline;
						}
						.tliquidacion {
						      border: 1px solid black !important;
							  padding-top: 10px !important;
							  padding-right: 10px !important;
							  padding-bottom: 10px !important;
							  padding-left: 10px !important;
						}
						.pad15 {
							padding: 15%;
						}
					   </style>';

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function el_style ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function encabezado_reporte_80_cols ------*/

function encabezado_reporte_80_cols($elpdf,$n_cia,$c_lin1,$c_lin2,$c_ancho,$c_lin3='',$c_lin4=''){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    $strsql="
		SELECT 	d.nombre nombre_empresa,
				d.cedula_juridica,
				d.direccion,
				d.telefono_acciones,
				d.e_mail_acciones
			  FROM  gen_compania d 
			  WHERE codigo='".$n_cia."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataempresa = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataempresa[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataempresa = false;
          $dataempresa_erro = $this->Db->ErrorMsg();
      } 

		if ($dataempresa ===false){
			return array("error"=>"Error encabezado_reporte_80_cols.#948 ".$dataempresa_erro .' '.$strsql);
		}
	    if (count($dataempresa )==0){
			return array("error"=>"Error: no hay datos para la empresa:".$n_cia);
		}
	
		if (''==rtrim($c_lin2).rtrim($c_lin3).rtrim($c_lin4)){
		} else {
		   $html=$this->el_style();
		}
	    if (''<>$c_lin1){
			$c_lin1='<tr><td class="centrar" width="730">'.$c_lin1.'</td></tr>';
		}
		$c_lin2=rtrim($c_lin2);
	    if (''<>$c_lin2){
			$c_lin2='<tr><td class="centrar" width="730">'.$c_lin2.'</td></tr>';
		}
		$c_lin3=rtrim($c_lin3);
		$c_lin4=rtrim($c_lin4);
		
	    if (''<>$c_lin3){
			$c_lin3='<tr><td class="lin3" width="730">'.$c_lin3.'</td></tr>';
		}
	    if (''<>$c_lin4){
			$c_lin4='<tr><td class="lin4" width="730">'.$c_lin4.'</td></tr>';
		}
		$lin34='';
	    if (''<>rtrim($c_lin3).rtrim($c_lin4)){
			$lin34='<table width="730">
					     '.$c_lin3.'
					     '.$c_lin4.'
			        </table>';
		}
	    $l_ancho=$c_ancho;
		$htmla=$html.'
				<table>
				   <table>
					<tr><td width="'.$c_ancho.'"></td></tr>
					<tr><td class="izquierda enca1 fondo" width="'.$l_ancho.'">'.$dataempresa[0][0].'</td></tr>
					<tr><td class="izquierda enca1 fondo" width="'.$l_ancho.'">Cedula Jurídica:'.$dataempresa[0][1].'</td></tr>
					<tr><td class="izquierda enca1 fondo" width="'.$l_ancho.'">'.$dataempresa[0][2].'</td></tr>
					<tr><td class="izquierda enca1 fondo" width="'.$l_ancho.'">Teléfono:'.$dataempresa[0][3].'</td></tr>
					<tr><td class="izquierda enca1 fondo" width="'.$l_ancho.'">Correo electrónico:'.$dataempresa[0][4].'</td></tr>
					
					'.$c_lin1.'
					'.$c_lin2.'
					<tr><td width="'.$c_ancho.'"></td></tr>
				   </table>
				</table>
					'.$lin34;
        if (''==rtrim($c_lin2).rtrim($c_lin3).rtrim($c_lin4)){
		     return $htmla;
		} else {
				if (file_exists('../_lib/img/logotg.jpg')){
					$elpdf->Image('../_lib/img/logotg.jpg', 190, 8, -15,25);
				}
				$elpdf->writeHTML($htmla, true, false, true, false, '');
		}
	return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function encabezado_reporte_80_cols ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function partes_resumen_planilla ------*/

function partes_resumen_planilla($c_numero_cia,$id_planilla) {
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$c_elerror='';
		$si=false;
	
	    if (0<>$id_planilla){
			$strsql="
			  SELECT count(distinct cedula) cantidad,
					SUM(CAST(IF(a.transaccion=40,cantidad_monto,0) AS DECIMAL(12,2))) horas_laboradas,
					SUM(CAST(IF(a.transaccion=300,cantidad_monto,0) AS DECIMAL(12,2)))  salario_regular,
					SUM(CAST(IF(a.transaccion=50,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra1,
					SUM(CAST(IF(a.transaccion=240,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra1,
					SUM(CAST(IF(a.transaccion=60,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra15,
					SUM(CAST(IF(a.transaccion=250,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra15,
					SUM(CAST(IF(a.transaccion=70,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra2,
					SUM(CAST(IF(a.transaccion=260,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra2,
					SUM(CAST(IF(a.transaccion=80,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra_mixtas,
					SUM(CAST(IF(a.transaccion=270,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra_mixtas,
					SUM(CAST(IF(a.transaccion=90,cantidad_monto,0) AS DECIMAL(12,2))) dias_incapacidad,
					SUM(CAST(IF(a.transaccion=100,cantidad_monto,0) AS DECIMAL(12,2))) dias_vacaciones,
					SUM(CAST(IF(a.transaccion=290,cantidad_monto,0) AS DECIMAL(12,2))) monto_incapacidad,					
					SUM(CAST(IF(a.transaccion=280,cantidad_monto,0) AS DECIMAL(12,2))) monto_vacaciones,
					SUM(CAST(IF(a.transaccion=110,cantidad_monto,0) AS DECIMAL(12,2))) remuneracion,
					SUM(CAST(IF(a.transaccion=120,cantidad_monto,0) AS DECIMAL(12,2))) otros_ajustes,
					SUM(CAST(IF(a.transaccion=160,cantidad_monto,0) AS DECIMAL(12,2))) otros_deducciones,
					SUM(CAST(IF(a.transaccion=130,cantidad_monto,0) AS DECIMAL(12,2))) salario_bruto,
					SUM(CAST(IF(a.transaccion=170,cantidad_monto,0) AS DECIMAL(12,2))) total_deducciones,
					SUM(CAST(IF(a.transaccion=180,cantidad_monto,0) AS DECIMAL(12,2))) salario_neto
				FROM pla_movimientos a
				WHERE empresa='".$c_numero_cia."'
				  AND id_planilla=".$id_planilla;			
		} else {
		$strsql="
		  select count(distinct cedula) cantidad,
				sum(horas_laboradas) horas_laboradas,
				sum(salario_regular) salario_regular,
				sum(horas_extra1) horas_extra1,
				sum(monto_horas_extra1) monto_horas_extra1,
				SUM(horas_extra15) horas_extra15,
				SUM(monto_horas_extra15) monto_horas_extra15,
				SUM(horas_extra2) horas_extra2,
				SUM(monto_horas_extra2) monto_horas_extra2,
				SUM(horas_extra_mixtas) horas_extra_mixtas,
				SUM(monto_horas_extra_mixtas) monto_horas_extra_mixtas,
				sum(dias_incapacidad) dias_incapacidad,
				sum(dias_vacaciones) dias_vacaciones,
				sum(monto_incapacidad) monto_incapacidad,
				sum(monto_vacaciones) monto_vacaciones,
				sum(remuneracion) remuneracion,
				sum(otros_ajustes) otros_ajustes,
				sum(otros_deducciones) otros_deducciones,
				sum(salario_bruto) salario_bruto,
				sum(total_deducciones) total_deducciones,
				sum(salario_neto) salario_neto
			from pla_movimientos_temporal
			where empresa='".$c_numero_cia."'";
		}
		    
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataprimeratabla = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataprimeratabla[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataprimeratabla = false;
          $dataprimeratabla_erro = $this->Db->ErrorMsg();
      } 

		   if ($dataprimeratabla ===false){
			   $c_elerror.="<label><h1>Error</h1>".$dataprimeratabla_erro .'</label>';
		   } else {
			if (count($dataprimeratabla )==0){

			} else {
				$si=true;
				$j_cantidad=$dataprimeratabla[0][0];
				$j_horas_laboradas=$dataprimeratabla[0][1];
				$j_salario_regular=$dataprimeratabla[0][2];
				$j_horas_extra1=$dataprimeratabla[0][3];
				$j_monto_horas_extra1=$dataprimeratabla[0][4];
				$j_horas_extra15=$dataprimeratabla[0][5];
				$j_monto_horas_extra15=$dataprimeratabla[0][6];
				$j_horas_extra2=$dataprimeratabla[0][7];
				$j_monto_extra2=$dataprimeratabla[0][8];
				$j_horas_extra_mixtas=$dataprimeratabla[0][9];
				$j_monto_extra_mixtas=$dataprimeratabla[0][10];
				$j_dias_incapacidad=$dataprimeratabla[0][11];
				$j_dias_vacaciones=$dataprimeratabla[0][12];
				$j_monto_incapacidad=$dataprimeratabla[0][13];
				$j_monto_vacaciones=$dataprimeratabla[0][14];
				$j_remuneracion=$dataprimeratabla[0][15];
				$j_otros_ajustes=$dataprimeratabla[0][16];
				$j_otros_deducciones=$dataprimeratabla[0][17];
				$j_salario_bruto=$dataprimeratabla[0][18];
				$j_total_deducciones=$dataprimeratabla[0][19];
				$j_salario_neto=$dataprimeratabla[0][20];
				$j_t_horas_extra=$j_horas_extra1+$j_horas_extra15+$j_horas_extra2+$j_horas_extra_mixtas;
				$j_t_monto_extra=$j_monto_horas_extra1+$j_monto_horas_extra15+$j_monto_extra2+$j_monto_extra_mixtas;		
		   }
		  }
		if ($si){
		  $vprimera_parte='
		  <label><b>Empleados procesados:'.number_format($j_cantidad,0).'</b></label>
		  <table>
		  <tr>
			 <th width="100"></th>
			 <th width="100"></th>
			 <th width="100"></th>
		  </tr>
		   <tr>
			  <td>Horas regulares</td>
			  <td style="text-align: right">'.number_format($j_horas_laboradas,2).'</td>
			  <td style="text-align: right">'.number_format($j_salario_regular,2).'</td>
		   </tr>
		   <tr>
			  <td>Horas extra (1.0)</td>
			  <td style="text-align: right">'.number_format($j_horas_extra1,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_horas_extra1,2).'</td>
		   </tr>
		   <tr>
			  <td>Horas extra (1.5)</td>
			  <td style="text-align: right">'.number_format($j_horas_extra15,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_horas_extra15,2).'</td>
		   </tr>
		   <tr>
			  <td>Horas extra (2)</td>
			  <td style="text-align: right">'.number_format($j_horas_extra2,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_extra2,2).'</td>
		   </tr> 
		   <tr>
			  <td>Horas extra mixtas</td>
			  <td style="text-align: right">'.number_format($j_horas_extra_mixtas,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_extra_mixtas,2).'</td>
		   </tr>
		   <tr>
			  <td>Total horas extra</td>
			  <td style="text-align: right">'.number_format($j_t_horas_extra,2).'</td>
			  <td style="text-align: right">'.number_format($j_t_monto_extra,2).'</td>
		   </tr>
		   <tr>
			  <td>Dias incapacidad</td>
			  <td style="text-align: right">'.number_format($j_dias_incapacidad,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_incapacidad,2).'</td>
		   </tr>
			<tr>
			  <td>Dias vacaciones</td>
			  <td style="text-align: right">'.number_format($j_dias_vacaciones,2).'</td>
			  <td style="text-align: right">'.number_format($j_monto_vacaciones,2).'</td>
		   </tr>  
			<tr>
			  <td>Remuneraciones</td>
			  <td style="text-align: right"></td>
			  <td style="text-align: right">'.number_format($j_remuneracion,2).'</td>
		   </tr>     
			<tr>
			  <td>Otros ajustes</td>
			  <td style="text-align: right"></td>
			  <td style="text-align: right">'.number_format($j_otros_ajustes,2).'</td>
		   </tr>

		  </table>';
		}
		$si=false;
	 if (0<>$id_planilla){
		$strsql="	
					SELECT max(if(220=transaccion,cantidad_monto,0)) porcentaje_ccss,
					       SUM(if(140=transaccion,cantidad_monto,0)) ccss,'Seguro CCSS' referencia
					  FROM pla_movimientos
					  WHERE empresa=".$c_numero_cia." AND pensionado=0 and id_planilla=".$id_planilla." and transaccion in (220,140)
					 
					union all
					select max(if(200=transaccion,cantidad_monto,0)) Porcentaje,
					  SUM(IF(140=transaccion,cantidad_monto,0)) monto,'Seguro CCSS pen' referencia
					  from pla_movimientos
					  where empresa=".$c_numero_cia." and pensionado=1  AND id_planilla=".$id_planilla." AND transaccion IN (200,140) and pensionado=1
					
					UNION ALL
					  SELECT max(if(230=transaccion,cantidad_monto,0)) porcentaje_bp,
					    sum(if(150=transaccion,cantidad_monto,0)) monto,'Banco popular' referencia
					  FROM pla_movimientos
					  WHERE empresa=".$c_numero_cia."  AND pensionado=0 AND id_planilla=".$id_planilla." AND transaccion IN (230,150) 
				  

					  union all
					  select max(if(210=transaccion,cantidad_monto,0)) por_bp_pen,
					     sum(if(150=transaccion,cantidad_monto,0)) ,'Banco popular pen' referencia
					  from pla_movimientos
					  where empresa=".$c_numero_cia." and pensionado=1 AND id_planilla=".$id_planilla." AND transaccion IN (210,150) ";
	 } else {
		$strsql="	
					SELECT porcentaje_ccss,SUM(ccss),'Seguro CCSS' referencia
					  FROM pla_movimientos_temporal
					  WHERE empresa='".$c_numero_cia."' AND pensionado=0
					  GROUP BY porcentaje_ccss
					union all
					select por_ccss_pen Porcentaje,sum(ccss) monto,'Seguro CCSS pen' referencia
					  from pla_movimientos_temporal
					  where empresa='".$c_numero_cia."' and pensionado=1
					  group by por_ccss_pen

					UNION ALL
					  SELECT porcentaje_bp,SUM(bancopop),'Banco popular' referencia
					  FROM pla_movimientos_temporal
					  WHERE empresa='".$c_numero_cia."'  AND pensionado=0
					  GROUP BY porcentaje_bp

					  union all
					  select por_bp_pen,sum(bancopop),'Banco popular pen' referencia
					  from pla_movimientos_temporal
					  where empresa='".$c_numero_cia."' and pensionado=1
					  group by por_bp_pen";
		 }
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($j_dataccss = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $j_dataccss = false;
          $j_dataccss_erro = $this->Db->ErrorMsg();
      } 

		if ($j_dataccss ===false){
			$c_elerror.="<label><h1>Error:</h1>".$j_dataccss_erro .'</label>';
		} else {
		  $html='';
		  while (!$j_dataccss->EOF){
			  $si=true;
			  $linea='<tr>

						  <td style="text-align: left">'.$j_dataccss->fields[2].'</td>
						  <td style="text-align: right">'.$j_dataccss->fields[0].'</td>
						  <td style="text-align: right">'.number_format($j_dataccss->fields[1],2).'</td>

					  </tr>';
			  $html=$html.$linea;
			  $j_dataccss->MoveNext();
		  }
		  $j_dataccss->Close();
		}
		if ($si){
			$html='<label><b "text-align: center">Deducciones</b></label><table>
				  <tr>
					 <th width="150"></th>
					 <th width="50"></th>
					 <th width="100"></th>
				  </tr>
					 '.$html.'
						<tr>
						  <td style="text-align: left"></td>
						  <td style="text-align: right"></td>
						  <td style="text-align: right"></td>
						</tr>
						<tr>
						  <td style="text-align: left"></td>
						  <td style="text-align: right"></td>
						  <td style="text-align: right"></td>
						</tr>
						<tr>
						</tr>
						<tr>
						  <td style="text-align: left"><b>Otras deducciones</b></td>
						  <td style="text-align: right"></td>
						  <td style="text-align: right"><b>'.number_format($j_otros_deducciones,2).'</b></td>
					   </tr>
				   </table>';
		}
		$vsegunda_parte=$html;

		$j_tercera_parte='<table>
		  <tr>
			 <th width="150"></th>
			 <th width="100"></th>
		  </tr>
		  <tr>
			 <td>Total bruto devengado</td>
			 <td style="text-align: right"><b>'.number_format($j_salario_bruto,2).'</b></td>
		  </tr>
		  <tr>
			 <td>Total deducciones</td>
			 <td style="text-align: right"><b>'.number_format($j_total_deducciones,2).'</b></td>
		  </tr>
		  <tr>
			 <td>Total Neto</td>
			 <td style="text-align: right"><b>'.number_format($j_salario_neto,2).'</b></td>
		  </tr>
		</table>';


		$vtercera_parte='<table>
		  <tr>
			 <th width="150"></th>
			 <th width="100"></th>
			 <th width="150"></th>
			 <th width="100"></th>
			 <th width="150"></th>
			 <th width="100"></th>
		  </tr>
		  <tr>
			 <td style="text-align: right">Total bruto devengado:</td>
			 <td style="text-align: right"><b>'.number_format($j_salario_bruto,2).'</b></td>
			 <td style="text-align: right">Total deducciones:</td>
			 <td style="text-align: right"><b>'.number_format($j_total_deducciones,2).'</b></td>
			 <td style="text-align: right">Total Neto:</td>
			 <td style="text-align: left"><b>'.number_format($j_salario_neto,2).'</b></td>
		  </tr>
		</table>';
	return array("error"=>$c_elerror,"primera_parte"=>$vprimera_parte,"segunda_parte"=>$vsegunda_parte,"tercera_parte"=>$vtercera_parte);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function partes_resumen_planilla ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function planilla_number_format_blanco ------*/

function planilla_number_format_blanco($monto,$dato_decimales){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if (floatval($monto)==0){
		return '';
	} else {
		return number_format($monto,$dato_decimales);
	}

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function planilla_number_format_blanco ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function planilla_number_format ------*/

function planilla_number_format($monto,$dato_decimales,$blanco_cero=0){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	if (1==$blanco_cero){
		if (floatval($monto)==0){
			return '';
		}
	}
	
	$ldeci=0;
	$entero=intval($monto);
	$decimales=($monto-$entero)*10;
	if ($decimales>0){
		$ldeci=1;
	}

	$entero=intval($decimales);
	if (0<>$entero){
		$decimales=round(($decimales-$entero)*10,0);
		if ($decimales>0){
			$ldeci++;
		}

	}

	return number_format($monto,$ldeci);
	
	
	
	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function planilla_number_format ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function planilla_en_proceso ------*/

function planilla_en_proceso($numero_cia,$c_jornada,$c_division){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select estado ,lpad(mes,2,'0'),ano
	           from pla_planilla_en_proceso
			  where empresa='".$numero_cia."'
			    and division='".$c_division."'
				and jornada='".$c_jornada."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataprocesopla = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataprocesopla[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataprocesopla = false;
          $dataprocesopla_erro = $this->Db->ErrorMsg();
      } 

	if ($dataprocesopla ===false){
		return array("error"=>"Error planilla_en_proceso.#1271:".$dataprocesopla_erro .' '.$strsql);
	}
	if (count($dataprocesopla )==0){
		return array("error"=>"Error planilla_en_proecso.#1274: No existen datos para la cia:".
					  $numero_cia.' Jornada:'.$c_jornada.' division:'.$c_division);
	}
	if (1==$dataprocesopla[0][0]){
		return array("error"=>"La planilla esta cerrada, debe abrirla en los parametros de planilla");
	}
	
	return array("error"=>"","mes"=>$dataprocesopla[0][1],"ano"=>$dataprocesopla[0][2]);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function planilla_en_proceso ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function generar_archivo_banco ------*/

function generar_archivo_banco($mtran_interna){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsqla="SELECT left(ltrim(rtrim(IFNULL(c.nombre,''))),30) nombre,
			   truncate(a.cantidad_monto,0) cantidad_monto ,CONCAT(SUBSTR(cuentacolones,6,3),SUBSTR(cuentacolones,1,3),
					 SUBSTR(cuentacolones,4,2),SUBSTR(cuentacolones,9,6),SUBSTR(cuentacolones,15,1)) cuentacolones,
             CAST(RIGHT(LEFT(cuentacolones,14),6) AS DECIMAL(12,2)) sumcuenempleado
		  FROM pla_movimientos a,
		  pla_empleados b,
		  gen_persona c
		WHERE b.cedula=c.cedula
		  AND a.empresa=b.empresa
		  AND a.cedula=b.cedula
		  AND a.id_planilla='".$mtran_interna."'
		  AND a.transaccion=180
		  and pago_xbanco=1
		ORDER BY nombre   ";
	$strsqla="SELECT left(ltrim(rtrim(IFNULL(c.nombre,''))),30) nombre,
			   a.cantidad_monto cantidad_monto ,CONCAT(SUBSTR(cuentacolones,6,3),SUBSTR(cuentacolones,1,3),
					 SUBSTR(cuentacolones,4,2),SUBSTR(cuentacolones,9,6),SUBSTR(cuentacolones,15,1)) cuentacolones,
             CAST(RIGHT(LEFT(cuentacolones,14),6) AS DECIMAL(12,2)) sumcuenempleado
		  FROM pla_movimientos a,
		  pla_empleados b,
		  gen_persona c
		WHERE b.cedula=c.cedula
		  AND a.empresa=b.empresa
		  AND a.cedula=b.cedula
		  AND a.id_planilla='".$mtran_interna."'
		  AND a.transaccion=180
		  and pago_xbanco=1
		ORDER BY nombre   ";
	 
      $nm_select = $strsqla; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($datapla = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datapla = false;
          $datapla_erro = $this->Db->ErrorMsg();
      } 

	if ($datapla ===false){
		return array("error"=>"Error #1421 generar_archivo_banco planilla:".$strsqla);
	}
	
	
	
   	$strsql="SELECT a.empresa,
			b.monto_total,
			CONCAT(SUBSTR(REPLACE(cuenta_banco,'-',''),6,3),SUBSTR(cuenta_banco2,1,3),
             SUBSTR(REPLACE(cuenta_banco,'-',''),4,2),SUBSTR(REPLACE(cuenta_banco,'-',''),9,6),SUBSTR(REPLACE(cuenta_banco,'-',''),15,1)) cuenta_banco,
			ncliente_banco,
			CONCAT('PLA',DATE_FORMAT(DATE_ADD(a.al, INTERVAL -1 DAY),'%y%m%d'),'_',jornada,a.ano,a.mes,lpad(a.planilla,2,'0'),'_',a.empresa,'_n.env') hal ,
			date_format(DATE_ADD(a.al, INTERVAL -1 DAY), '%d%m%Y') xfe,
             concat(SUBSTR(replace(cuenta_banco,'-',''),4,2),SUBSTR(replace(cuenta_banco,'-',''),9,6),SUBSTR(replace(cuenta_banco,'-',''),15,1)) cuenta_banco,
			 DATE_FORMAT(DATE_ADD(a.al, INTERVAL -1 DAY), '%d-%m-%Y') xfe2,
             CAST(SUBSTR(cuenta_banco,12,6) AS INTEGER) sumcue
			 
        FROM pla_planilla_encabezado a
        LEFT JOIN (SELECT empresa,id_planilla,SUM(cantidad_monto) monto_total
                     FROM pla_movimientos
                    WHERE transaccion=180
                      AND id_planilla=".$mtran_interna."
                    GROUP BY id_planilla) b ON b.empresa=a.empresa AND b.id_planilla=a.id
        LEFT JOIN gen_compania c ON c.codigo=a.empresa
        WHERE a.id=".$mtran_interna;
	
$strsql="SELECT a.empresa,
			(select sum(cantidad_monto) from (".$strsqla.") a ) monto_total,
			CONCAT(SUBSTR(REPLACE(cuenta_banco,'-',''),6,3),SUBSTR(cuenta_banco2,1,3),
             SUBSTR(REPLACE(cuenta_banco,'-',''),4,2),SUBSTR(REPLACE(cuenta_banco,'-',''),9,6),SUBSTR(REPLACE(cuenta_banco,'-',''),15,1)) cuenta_banco,
			ncliente_banco,
			CONCAT('PLA',DATE_FORMAT(DATE_ADD(a.al, INTERVAL -1 DAY),'%y%m%d'),'_',jornada,a.ano,a.mes,lpad(a.planilla,2,'0'),'_',a.empresa,'_n.env') hal ,
			date_format(DATE_ADD(a.al, INTERVAL -1 DAY), '%d%m%Y') xfe,
             concat(SUBSTR(replace(cuenta_banco,'-',''),4,2),SUBSTR(replace(cuenta_banco,'-',''),9,6),SUBSTR(replace(cuenta_banco,'-',''),15,1)) cuenta_banco,
			 DATE_FORMAT(DATE_ADD(a.al, INTERVAL -1 DAY), '%d-%m-%Y') xfe2,
             CAST(SUBSTR(cuenta_banco,12,6) AS INTEGER) sumcue
			 
        FROM pla_planilla_encabezado a
        LEFT JOIN (SELECT empresa,id_planilla,SUM(cantidad_monto) monto_total
                     FROM pla_movimientos
                    WHERE transaccion=180
                      AND id_planilla=".$mtran_interna."
                    GROUP BY id_planilla) b ON b.empresa=a.empresa AND b.id_planilla=a.id
        LEFT JOIN gen_compania c ON c.codigo=a.empresa
        WHERE a.id=".$mtran_interna;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datinfoplanilla = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datinfoplanilla[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datinfoplanilla = false;
          $datinfoplanilla_erro = $this->Db->ErrorMsg();
      } 

		if ($datinfoplanilla ===false){
			return array("error"=>"Error #1418 generar_archivo_banco:".$datinfoplanilla_erro .' '.$strsql);
		}
	   if (count($datinfoplanilla )==0){
		   return array("error"=>"Error #1421 generar_archivo_banco planilla:".$mtran_interna." no existe");
	   }
	$x_cia=$datinfoplanilla[0][0];
	$totx=$datinfoplanilla[0][1];
	$companiacuenta_banco=$datinfoplanilla[0][2];
    $companiancliente_banco=$datinfoplanilla[0][3];
	$hal=$datinfoplanilla[0][4];
	$xfe=$datinfoplanilla[0][5];
	$cuenta_banco=$datinfoplanilla[0][6];
	$xfe2=$datinfoplanilla[0][7];
	$sumcue=$datinfoplanilla[0][8];
	$nfile=$hal;
    $xfile='../_lib/tmp/'.$hal;
	$xfile2='/media/planillas/'.$hal;
	if(($handle = fopen($xfile, "w")) === FALSE) {	 
		return array("error"=>'No se puedo Abrir el archivo:'.$xfile);
	}
	$orig="000000".$mtran_interna;
	$hmtran_interna=str_pad($mtran_interna, 12, "0", STR_PAD_LEFT);
	$header1="1".$companiancliente_banco.$xfe.$hmtran_interna."1".str_pad('', 40, "0", STR_PAD_LEFT);					
	fwrite($handle,$this->limpiar_el_string_global($header1).PHP_EOL);
	$mmonhil13 =str_pad(str_replace(",","",str_replace(".","",number_format($totx,2))), 12, "0", STR_PAD_LEFT);				
	$Compro = "00000074";				
	$header2 = "2".$companiacuenta_banco.$Compro.$mmonhil13."Pago de planilla ".$xfe2."   00";
	fwrite($handle,$this->limpiar_el_string_global($header2).PHP_EOL);
	$cc=0;
	$totx2=0;
    while (!$datapla->EOF){
	 $nombre=str_pad($this->limpiar_el_string_global($datapla->fields[0]), 30, " ", STR_PAD_RIGHT);
	 $monto=$datapla->fields[1];
	 $totx2+=$monto;
	 $cuentacolones=$datapla->fields[2];
	 $sumcueemp=$datapla->fields[3];
	 $cc++;
	 $Compro=str_pad(str_replace(",","",number_format($cc,0)), 8, "0", STR_PAD_LEFT);
	 $cen=number_format($monto,0);	
	 $mmonhil13 =str_pad(str_replace(".","",str_replace(",","",number_format($monto,2))), 12, "0", STR_PAD_LEFT);
	 $hildet = "3".$cuentacolones.$Compro.$mmonhil13.$nombre."00";
     $sumcue+=$sumcueemp;
	 fwrite($handle,$this->limpiar_el_string_global($hildet).PHP_EOL);
	 $datapla->MoveNext();	
	}
	$datapla->Close();
	$totx2=$totx2*2;
	$cen =number_format($totx2,0);
	$mmonhil15=number_format($totx2,2);	
	$mmonhil15=str_replace(",","",str_replace(".","",$mmonhil15));
	$mmonhil15=str_pad($mmonhil15, 15, "0", STR_PAD_LEFT);	
	$sumcue=bcdiv($sumcue,1,0);
	$mmonsumcue=number_format($sumcue,0);
	$mmonsumcue=str_replace(",","",str_replace(".","",$mmonsumcue));
	$mmonsumcue=str_pad($mmonsumcue, 10, "0", STR_PAD_LEFT);
	
	
	
	$mtestkey = "0000000000";
	$mdolares_comision = str_pad('', 12, "0", STR_PAD_LEFT);
	$mcolones_comision = str_pad('', 12, "0", STR_PAD_LEFT);
	$msin_uso = str_pad('', 8, "0", STR_PAD_LEFT);
	$footer1 = "4".$mmonhil15.$mmonsumcue.$mtestkey.$mdolares_comision.$mcolones_comision.$msin_uso;
	fwrite($handle,$this->limpiar_el_string_global($footer1).PHP_EOL);
	fclose($handle);
	$cmd="cp ".$xfile.' '.$xfile2;
	$elresultado=shell_exec($cmd);
	$cmd="chmod 777 ".$xfile2;
	$elresultado=shell_exec($cmd);
	
	$ellink= '<html><table>
					  <tr>
						<th width="200"><a href="'.$xfile.'" download="'.$nfile.'">Bajar el archivo</a>
						</th>
					   </tr>
					 </table>	
					</html>';
	
	return array("error"=>"","archivo"=>$xfile,'ellink'=>$ellink);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function generar_archivo_banco ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function asignar_numero_planilla_en_proceso ------*/

function asignar_numero_planilla_en_proceso($kcia){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="SELECT planilla
		 FROM pla_planilla_en_proceso
		 WHERE empresa='".$kcia."'
		   AND division=1
		   AND jornada='S'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datasemplan = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datasemplan[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datasemplan = false;
          $datasemplan_erro = $this->Db->ErrorMsg();
      } 

		if ($datasemplan ===false){
			return array("error"=>'<h2>Error</h2>'.$datasemplan_erro .' '.$strsql);
		}
		if (count($datasemplan )==0){
			return array("error"=>'');
		} 
	    return array("error"=>'','semana'=>$datasemplan[0][0]);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function asignar_numero_planilla_en_proceso ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function borrar_accion_de_personal ------*/

function borrar_accion_de_personal($z_cia,$z_cedula,$z_accion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	      $z_accion=str_replace(".","",$z_accion);
	      $z_accion=str_replace(",","",$z_accion);
			$strsql="update pla_acciones_de_personal set 
						 usuario_modificacion='".$_SESSION['grant']['usr_login']."',
						 fecha_modificacion='".date('Y-m-d H:i:s')."'
				  where empresa='".$z_cia."'
					and cedula='".$z_cedula."'
					and accion='".$z_accion."' limit 1";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updateelnumeroaccion = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updateelnumeroaccion[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updateelnumeroaccion = false;
          $updateelnumeroaccion_erro = $this->Db->ErrorMsg();
      } 

		if ($updateelnumeroaccion ===false){
			return array("error"=>'Error:'.$updateelnumeroaccion_erro .' '.$strsql);
		} 

		$strsql="delete from pla_acciones_de_personal 
				  where empresa='".$z_cia."'
					and cedula='".$z_cedula."'
					and accion='".$z_accion."' limit 1";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borraelnumeroaccion = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borraelnumeroaccion[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borraelnumeroaccion = false;
          $borraelnumeroaccion_erro = $this->Db->ErrorMsg();
      } 

		if ($borraelnumeroaccion ===false){
			return array("error"=>'Error:'.$borraelnumeroaccion_erro .' '.$strsql);
		} else {
			echo array("error"=>"");

		}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function borrar_accion_de_personal ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function generar_archivo_ins ------*/

function generar_archivo_ins($cia,$mes,$ano){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function generar_archivo_ins ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function pla_eliminar_liquidacion ------*/

function pla_eliminar_liquidacion($id_liquidacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="delete from pla_liquidaciones where id='".$id_liquidacion."' limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrarliq_pla = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrarliq_pla[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrarliq_pla = false;
          $borrarliq_pla_erro = $this->Db->ErrorMsg();
      } 

	if ($borrarliq_pla ===false){
		return array("error"=>"Error #1764.pla_eliminar_liquidacion:".$borrarliq_pla_erro .' '.$strsql);
	}
	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function pla_eliminar_liquidacion ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function pla_liquidacion_pasar_a_firme ------*/

function pla_liquidacion_pasar_a_firme($id_liquidacion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$id_liquidacion=str_replace(".","",$id_liquidacion);
	$id_liquidacion=str_replace(",","",$id_liquidacion);
	
    $strsql="update pla_liquidaciones set estado=2 where id='".$id_liquidacion."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupddelaliqui = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupddelaliqui[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupddelaliqui = false;
          $dataupddelaliqui_erro = $this->Db->ErrorMsg();
      } 

	if ($dataupddelaliqui ===false){
		return array("error"=>"Error #1773.pla_liquidacion_pasar_a_firme:".$dataupddelaliqui_erro .' '.$strsql);
	}

    $strsql="select empresa,id,cedula,fecha_salida from pla_liquidaciones where id='".$id_liquidacion."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadelaliqui = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadelaliqui[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadelaliqui = false;
          $datadelaliqui_erro = $this->Db->ErrorMsg();
      } 

	if ($datadelaliqui ===false){
		return array("error"=>"Error #1773.pla_liquidacion_pasar_a_firme:".$datadelaliqui_erro .' '.$strsql);
	}
	if (count($datadelaliqui )==0){
		return array("error"=>"Error #1775.pla_liquidacion_pasar_a_firme no existe la liquidacion:".$id_liquidacion);
	}
	$empresa=$datadelaliqui[0][0];
	$id     =$datadelaliqui[0][1];
	$cedula =$datadelaliqui[0][2];
	$lafecha=$datadelaliqui[0][3];
	$strsql="update pla_empleados set exempleado=1,fecha_salida='".$lafecha."'
	           where empresa='".$empresa."' 
			     and cedula='".$cedula."' limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datupdplaempleados = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datupdplaempleados[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datupdplaempleados = false;
          $datupdplaempleados_erro = $this->Db->ErrorMsg();
      } 

	if ($datupdplaempleados ===false){
		return array("error"=>"Error #1775.pla_liquidacion_pasar_a_firme :".$datupdplaempleados_erro .' '.$strsql);
	}
	return array("error"=>'');
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function pla_liquidacion_pasar_a_firme ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function pla_elsql_aguinaldo ------*/

function pla_elsql_aguinaldo($p_ano_filtro_real,$p_mes_filtro_real){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
if (!isset($_SESSION['usr_login'])) {$_SESSION['usr_login'] = "";}
if (!isset($this->sc_temp_usr_login)) {$this->sc_temp_usr_login = (isset($_SESSION['usr_login'])) ? $_SESSION['usr_login'] : "";}
  
		$cano1=$p_ano_filtro_real-1;
		$cano2=$p_ano_filtro_real;
		$cmes1=$p_mes_filtro_real;

		$ksql= "SELECT 
		codigo_empleado,
		empresa,
		cedula,
		nombre,
		compania,
		fecha_ingreso,
		division,
		departamento,
		acumulado+ajuagui as acumulado,
		round((acumulado+ajuagui)/12,0) as sub_total_aguinaldo,
		round(rebajo,0) rebajo,
		round((acumulado+ajuagui)/12-rebajo,0) as aguinaldo_ajustado,
		id_departamento,
		id_division,
		foto,
		ene,
		feb,
		mar,
		abr,
		may,
		jun,
		jul,
		ago,
		sep,
		OCT,
		nov,
		dic,
		concat('Acumulado desde Dic/',".$cano1.") as criterio,
		ajuagui
		FROM (
		SELECT d.codigo_empleado AS codigo_empleado,
			   a.empresa AS empresa,
			   a.cedula AS cedula,
			   b.nombre AS nombre,
			   e.nombre AS compania,
			   d.fecha_ingreso AS fecha_ingreso,
			   f.descripcion AS division,
			   g.descripcion AS departamento,
       SUM(if(if(c.del<cast(concaT(c.ano,'-',c.mes,'-01') as date),cast(concaT(c.ano,'-',c.mes,'-01') as date),c.del)>=d.fecha_ingreso,a.cantidad_monto,0)) AS acumulado,
       SUM(if(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,a.cantidad_monto,0))/12 AS sub_total_aguinaldo,
       AVG(IFNULL(rebajo.monto,0)*4) AS rebajo,
       SUM(a.cantidad_monto)/12-AVG(IFNULL(rebajo.monto,0)*4) aguinaldo_ajustado,
			   d.departamento id_departamento,
			   d.division id_division,
			   b.foto,
   
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF(12=c.mes,a.cantidad_monto,0),0)) dic,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 1=c.mes,a.cantidad_monto,0),0)) ene,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 2=c.mes,a.cantidad_monto,0),0)) feb,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 3=c.mes,a.cantidad_monto,0),0)) mar,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 4=c.mes,a.cantidad_monto,0),0)) abr,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 5=c.mes,a.cantidad_monto,0),0)) may,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 6=c.mes,a.cantidad_monto,0),0)) jun,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 7=c.mes,a.cantidad_monto,0),0)) jul,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 8=c.mes,a.cantidad_monto,0),0)) ago,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF( 9=c.mes,a.cantidad_monto,0),0)) sep,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF(10=c.mes,a.cantidad_monto,0),0)) OCT,
SUM(IF(IF(c.del<CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),CAST(CONCAT(c.ano,'-',c.mes,'-01') AS DATE),c.del)>=d.fecha_ingreso,IF(11=c.mes,a.cantidad_monto,0),0)) nov,

		avg(ifnull(ajuagui.monto,0)) ajuagui
		  FROM pla_movimientos a	
		  LEFT JOIN gen_persona b ON a.cedula=b.cedula	
		  LEFT JOIN pla_planilla_encabezado c ON c.id=a.id_planilla	
		  LEFT JOIN pla_empleados d ON d.cedula=a.cedula AND d.empresa=a.empresa	
		  LEFT JOIN (	
			  SELECT empresa,cedula,SUM(rebajo) monto
				FROM pla_deducciones_empleado a
				WHERE (deduccion=8) and estado=1
				GROUP BY empresa,cedula
		  ) rebajo ON rebajo.empresa=a.empresa AND rebajo.cedula=a.cedula

		  LEFT JOIN (	
			  SELECT empresa,cedula,SUM(rebajo) monto
				FROM pla_deducciones_empleado a
				WHERE (deduccion=17) and estado=1
				GROUP BY empresa,cedula
		  ) ajuagui ON ajuagui.empresa=a.empresa AND ajuagui.cedula=a.cedula



		  LEFT JOIN gen_compania e ON e.codigo=a.empresa
		  LEFT JOIN pla_division f ON f.empresa=a.empresa AND f.codigo=d.division
		  LEFT JOIN pla_departamentos g ON g.empresa=a.empresa AND g.division=d.division AND g.departamento=d.departamento ,
		  gen_usuario_compania ctr 
		  WHERE  (a.transaccion=130	 or (a.transaccion=290 and a.causa=3))
		 AND ((c.ano=(".$cano1.") AND c.mes='12') OR (c.ano=".$cano2." AND c.mes<=".$cmes1."))
			AND exempleado=0  
			AND ctr.compania=a.empresa AND ctr.autorizado='S' AND ctr.usuario='".$this->sc_temp_usr_login."'
		  GROUP BY a.empresa,b.nombre,d.codigo_empleado,e.nombre,d.fecha_ingreso,f.descripcion,g.descripcion,
			   d.departamento,d.division

		) a
		ORDER BY empresa,nombre";

		return $ksql;

if (isset($this->sc_temp_usr_login)) {$_SESSION['usr_login'] = $this->sc_temp_usr_login;}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function pla_elsql_aguinaldo ------*/


/*----- Scriptcase Locale: PHP Method: planillas.php => function calcular_planilla_lib ------*/

function calcular_planilla_lib($l_compania){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
$strsql="INSERT INTO pla_movimientos_temporal (tiene_email,empresa,cedula,nombre) 
SELECT IF(b.correo REGEXP  '^[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9._-]@[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]\\.[a-zA-Z]{2,4}$','1','0') tiene_email,
  a.empresa,
  a.cedula,
   replace(REPLACE(rtrim(ltrim(b.nombre)),'  ',' '),' ','_')
FROM pla_empleados a LEFT JOIN pla_movimientos_temporal c ON c.empresa=a.empresa AND c.cedula=a.cedula,
     gen_persona b
WHERE a.cedula=b.cedula
  AND c.empresa IS NULL
  and a.exempleado=0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $movtmp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $movtmp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $movtmp = false;
          $movtmp_erro = $this->Db->ErrorMsg();
      } 

if ($movtmp ===false){
	echo "Error #23:".$movtmp_erro .' '.$strsql;
}
$strsql="update pla_movimientos_temporal a left join 
				(
				  select ab.empresa,ab.cedula,sum(ab.dias) dias_vacaciones
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='VA'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula
				) vac on vac.empresa=a.empresa and vac.cedula=a.cedula
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias,max(tipo_incapacidad) tipo_incapacidad
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='IC'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) ic on ic.empresa=a.empresa and ic.cedula=a.cedula 
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='PS'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) ps on ps.empresa=a.empresa and ps.cedula=a.cedula 
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='PC'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) pc on pc.empresa=a.empresa and pc.cedula=a.cedula 
				,
                pla_empleados b
				LEFT JOIN pla_division bdi ON bdi.empresa=b.empresa AND bdi.codigo=b.division
				LEFT JOIN pla_departamentos bde ON bde.empresa=b.empresa AND bde.division=b.division 
				      AND bde.departamento=b.departamento AND bde.division_empresa=1
				left join 
				(
					SELECT empresa,cedula,SUM(rebajo) deduccion
					  FROM pla_deducciones_empleado
					 WHERE estado=1
					 GROUP BY empresa,cedula
				) deduc on deduc.cedula=b.cedula and deduc.empresa=b.empresa,
				gen_persona c,
				con_control h
			set a.nombre=replace(REPLACE(rtrim(ltrim(c.nombre)),'  ',' '),' ','_'),
			a.salario_hora=ifnull(b.salario_hora,0),
			a.horas_diarias=if(a.horas_diarias=0,ifnull(b.nhoras_diarias,0),a.horas_diarias),
			a.asociado=ifnull(b.asociado,0),
			a.pensionado=ifnull(b.pensionado,0),
			a.por_ccss_pen=h.por_ccss_pen,
			a.por_bp_pen=h.por_bp_pen,
			a.porcentaje_ccss=h.porcentaje_ccss,
			a.porcentaje_bp=h.porcentaje_bp,
			a.tipoincap=ic.tipo_incapacidad,
			a.total_deducciones=ifnull(deduc.deduccion,0),
			a.otros_deducciones=ifnull(deduc.deduccion,0),
			a.departamento=b.departamento,
			a.division=b.division,
			a.exempleado=b.exempleado,
			a.dias_vacaciones=ifnull(vac.dias_vacaciones,0),
			a.dias_incapacidad=if(ifnull(ic.dias,0)>3 
			    and ic.tipo_incapacidad<>2,
				if(ic.tipo_incapacidad<>3,3,0),
				if(ic.tipo_incapacidad=3,0,ifnull(ic.dias,0))),
			a.dias_no_laborados_sg=ifnull(ps.dias,0),
			a.dias_no_laborados_cg=ifnull(pc.dias,0),
			a.modifica_sistema=1,
			a.nombre_depto=bde.descripcion,
			a.nombre_division=bdi.descripcion
		where b.cedula=c.cedula
		  and a.empresa=b.empresa
	      and a.cedula=b.cedula
		  and a.empresa=h.compania";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updtmp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updtmp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updtmp = false;
          $updtmp_erro = $this->Db->ErrorMsg();
      } 

if ($updtmp ===false){
	echo "Error #96-a:".$updtmp_erro .' Error #68-b:'.$strsql;
}
$strsql="update pla_movimientos_temporal a left join
				(
				  select ab.empresa,ab.cedula,sum(ab.dias) dias_vacaciones
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='VA'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula
				) vac on vac.empresa=a.empresa and vac.cedula=a.cedula
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias,max(tipo_incapacidad) tipo_incapacidad
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='IC'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) ic on ic.empresa=a.empresa and ic.cedula=a.cedula 
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='PS'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) ps on ps.empresa=a.empresa and ps.cedula=a.cedula 
				left join (select ab.empresa,ab.cedula,sum(ab.dias) dias
				  from pla_acciones_de_personal ab,pla_planilla_en_proceso ac
				  where tipo_accion='PC'
					and ab.mes=ac.mes
					and ab.ano=ac.ano
					and ab.empresa=ac.empresa
					and ab.planilla=ac.planilla
					group by ab.empresa,ab.cedula) pc on pc.empresa=a.empresa and pc.cedula=a.cedula 
				,
                pla_empleados b,
				gen_persona c
			set 
			a.dias_laborados_a=if(a.dias_laborados_a=0,ifnull(b.ndias_jornada,0),a.dias_laborados_a),
			a.dias_laborados  =if(a.dias_laborados_a=0,ifnull(b.ndias_jornada,0),a.dias_laborados_a)-(
			                   if(ifnull(ic.dias,0)>3,3,ifnull(ic.dias,0))+ifnull(vac.dias_vacaciones,0)+ifnull(ps.dias,0) ),
			a.horas_laboradas=if(a.horas_laboradas<>0,a.horas_laboradas,ifnull(b.nhoras_diarias,0)*(
							   if(a.dias_laborados_a=0,ifnull(b.ndias_jornada,0),a.dias_laborados_a)-(
			                   if(ifnull(ic.dias,0)>3,3,ifnull(ic.dias,0))+ifnull(vac.dias_vacaciones,0)+ifnull(ps.dias,0) )
			          )) ,
			a.salario_hora=ifnull(b.salario_hora,0),
			a.horas_diarias=ifnull(b.nhoras_diarias,0),
			a.exempleado=b.exempleado,
			a.nombre=replace(a.nombre,'__','_'),
			a.dias_incapacidad=if(ifnull(ic.dias,0)>3 
			    and ic.tipo_incapacidad<>2,
				if(ic.tipo_incapacidad<>3,3,0),
				if(ic.tipo_incapacidad=3,0,ifnull(ic.dias,0))),			
			a.dias_no_laborados_sg=ifnull(ps.dias,0),
			a.dias_no_laborados_cg=ifnull(pc.dias,0),
			a.modifica_sistema=1
		where b.cedula=c.cedula
		  and a.empresa=b.empresa
	      and a.cedula=b.cedula
		  and a.modificado=0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updtmp_b = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updtmp_b[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updtmp_b = false;
          $updtmp_b_erro = $this->Db->ErrorMsg();
      } 

if ($updtmp_b ===false){
	echo "Error #157-a:".$updtmp_b_erro .' Error #96-b:'.$strsql;
}


$strsql="update pla_movimientos_temporal a
		set
		dias_laborados=dias_laborados_a-dias_vacaciones-dias_no_laborados_sg-dias_incapacidad,
		monto_vacaciones = dias_vacaciones* horas_diarias * salario_hora,
		monto_incapacidad = (dias_incapacidad * horas_diarias  * salario_hora) / 2,
		monto_vacaciones = dias_vacaciones * 8 *  salario_hora,
		monto_incapacidad = (dias_incapacidad * 8 * salario_hora) / 2,
		salario_regular = salario_hora * horas_laboradas,
		monto_horas_extra1 = salario_hora * horas_extra1,
		monto_horas_extra15 = round(salario_hora * horas_extra15 * 1.5,2),
		monto_horas_extra2= salario_hora * horas_extra2 * 2,
		monto_horas_extra_mixtas=if(0<>(horas_diarias-1),
		             horas_extra_mixtas*((salario_hora * 48/42)*1.5), 
					 0),
		a.modifica_sistema=1
		";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_et1 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_et1[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_et1 = false;
          $upd_et1_erro = $this->Db->ErrorMsg();
      } 

if ($upd_et1 ===false){
	echo "<h1>Error #179</h1>".$upd_et1_erro .' '.$strsql;
}
$strsql="update pla_movimientos_temporal
  			set total_extras =                       monto_horas_extra1+monto_horas_extra15+monto_horas_extra2+monto_horas_extra_mixtas,
		        salario_bruto=Round(salario_regular+(monto_horas_extra1+monto_horas_extra15+monto_horas_extra2+monto_horas_extra_mixtas)+
				           monto_vacaciones+monto_incapacidad+remuneracion+otros_ajustes,0),
			modifica_sistema=1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_et2 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_et2[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_et2 = false;
          $upd_et2_erro = $this->Db->ErrorMsg();
      } 

if ($upd_et2 ===false){
	echo "<h1>Error #187</h1>".$upd_et2_erro .' '.$strsql;
}
$strsql="UPDATE pla_movimientos_temporal a,
                con_control b
		SET 
		ccss    =IF(1=a.pensionado,ROUND(a.salario_bruto*b.por_ccss_pen/100,0),
		        IF(2=a.tipoincap,ROUND(ROUND((a.salario_hora*48),0)*b.porcentaje_ccss/ 100,0),ROUND(a.salario_bruto*b.porcentaje_ccss/100,0))),
		bancopop=IF(1=a.pensionado,ROUND(a.salario_bruto*b.por_bp_pen/100,0),
		        IF(2=a.tipoincap,ROUND(ROUND((a.salario_hora*48),0)*b.porcentaje_bp/ 100,0),ROUND(a.salario_bruto*b.porcentaje_bp/100,0))),
			a.modifica_sistema=1
		WHERE a.empresa=b.compania";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_et3 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_et3[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_et3 = false;
          $upd_et3_erro = $this->Db->ErrorMsg();
      } 

if ($upd_et3 ===false){
	echo "<h1>Error #199</h1>".$upd_et3_erro .' '.$strsql;
}
 
   $strsql="UPDATE pla_movimientos_temporal set
		total_deducciones = otros_deducciones+ccss+bancopop+ 0 + 0,
		salario_neto = salario_bruto - ( otros_deducciones+ccss+bancopop+ 0 + 0),
			modifica_sistema=1";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $upd_et4 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $upd_et4[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $upd_et4 = false;
          $upd_et4_erro = $this->Db->ErrorMsg();
      } 

if ($upd_et4 ===false){
	echo "<h1>Error #211</h1>".$upd_et4_erro .' '.$strsql;
}





$strsql="delete from pla_movimientos_temporal where 1=exempleado"; 
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadetetmp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadetetmp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadetetmp = false;
          $datadetetmp_erro = $this->Db->ErrorMsg();
      } 

if ($datadetetmp ===false){
	echo "<h1>Error #221:</h1>".$datadetetmp_erro .' '.$strsql;
}
$strsql="update pla_movimientos_temporal a,
         (select a.empresa,a.cedula,
       sum(cast(ifnull(
       if(2=b.tipo_deduccion,a.rebajo,0)/100*c.salario_bruto+
       if(2=b.tipo_deduccion,0,a.rebajo),0) as decimal(12,2))) rebajo
  from pla_deducciones_empleado a
  left join pla_deducciones b on a.empresa=b.empresa and a.deduccion=b.codigo
  left join pla_movimientos_temporal c on c.empresa=a.empresa and c.cedula=a.cedula
    where a.estado=1
  group by a.empresa,a.cedula) b
set otros_deducciones=ifnull(b.rebajo,0),
	a.modifica_sistema=1
where a.empresa=b.empresa and a.cedula=b.cedula";

$strsql="update pla_movimientos_temporal a left join 
         (select a.empresa,a.cedula,
       sum(cast(ifnull(
       if(2=b.tipo_deduccion,a.rebajo,0)/100*c.salario_bruto+
       if(2=b.tipo_deduccion,0,a.rebajo),0) as decimal(12,2))) rebajo
  from pla_deducciones_empleado a
  left join pla_deducciones b on a.empresa=b.empresa and a.deduccion=b.codigo
  left join pla_movimientos_temporal c on c.empresa=a.empresa and c.cedula=a.cedula
    where a.estado=1
  group by a.empresa,a.cedula) b on  a.empresa=b.empresa and a.cedula=b.cedula
set otros_deducciones=ifnull(b.rebajo,0),
	a.modifica_sistema=if(isnull(b.rebajo),a.modifica_sistema,1)
";


 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadeducciones = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadeducciones[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadeducciones = false;
          $datadeducciones_erro = $this->Db->ErrorMsg();
      } 

if ($datadeducciones ===false){
	echo "<h1>Error #236</h1>".$datadeducciones_erro .' '.$strsql;
}
$strsql="
    UPDATE pla_movimientos_temporal A
    ,(SELECT empresa,cedula,COUNT(*) cantidad FROM pla_movimientos_temporal_log GROUP BY empresa,cedula) b
	SET a.modificado=1
    WHERE a.empresa=b.empresa
    AND a.cedula=b.cedula
    ";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $act_modificados = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $act_modificados[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $act_modificados = false;
          $act_modificados_erro = $this->Db->ErrorMsg();
      } 

if ($act_modificados ===false){
	echo "<h1>Error #236</h1>".$act_modificados_erro .' '.$strsql;
}
$strsql="update pla_movimientos_temporal a,
         (
SELECT c.cedula,if(1=revisado and no_pagar=0,IF(1=pago_completo,8,4),0) horas
  FROM ope_domingos a,
       pre_choferp b,
       gen_persona c,
	   pla_planilla_en_proceso d
WHERE a.chofer=b.codigo
  AND b.fkpersona=c.cedula
  and id_planilla is null
  and d.empresa='001' and d.division=1 and d.jornada='S'
  and a.fecha=DATE_ADD(d.fecha_inicial, INTERVAL -1 DAY) 
  ) b 
     set a.horas_extra2=ifnull(b.horas,a.horas_extra2),
	 modifica_sistema=0
where a.cedula=b.cedula
   and a.empresa='001' and b.horas<>0";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $act_domingos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $act_domingos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $act_domingos = false;
          $act_domingos_erro = $this->Db->ErrorMsg();
      } 

if ($act_domingos ===false){
	echo "<h1>Error #326</h1>".$act_domingos_erro .' '.$strsql;
}
$strsql="update pla_movimientos_temporal a 
          ,pla_empleados b
          set a.horas_diarias=0,
		a.dias_laborados_a=0,
		a.dias_laborados=0,
		a.horas_laboradas=0,
		a.horas_extra1=0,
		a.horas_extra15=0,
		a.horas_extra2=0,
		a.horas_extra_mixtas=0,
		a.dias_incapacidad=0,
		a.dias_vacaciones=0,
		a.dias_no_laborados_sg=0,
		a.dias_no_laborados_cg=0,
		a.remuneracion=0,
		a.otros_ajustes=0,
		a.salario_bruto=0,
		a.ccss=0,
		a.bancopop=0,
		a.total_deducciones=0,
		a.salario_neto=0,
		a.salario_hora=0,
		a.salario_regular=0,
		a.por_ccss_pen=0,
		a.por_bp_pen=0,
		a.porcentaje_ccss=0,
		a.porcentaje_ccss=0
		where a.empresa=b.empresa 
		  and a.cedula=b.cedula
		  and b.incapacitado=2";
 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updincapacitado = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updincapacitado[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updincapacitado = false;
          $updincapacitado_erro = $this->Db->ErrorMsg();
      } 

if ($updincapacitado ===false){
	echo '<h1>Error</h1>Error:'.$updincapacitado_erro .' '.$strsql;
}
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas.php => function calcular_planilla_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function enviar_link_al_whatsapp_lib ------*/

function enviar_link_al_whatsapp_lib($c_pantalla,$c_cedula,$c_id_planilla){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    $datos=$this->select_datos_comprobante_lib($c_id_planilla,$c_cedula);
		$telefono1='506'.$datos['movil'];
		$telefono2='';
	    $g_cuerpow='Transportes Grant le informa que deposito su salario
Para ver el detalle ingresa al siguiente link
'.$datos['url_comprobante_pago'];
		$fileAttachment='';
	    if (0==$datos['rwsp_server']){
			$msj=$this->enviar_whatsapp_waapi($g_cuerpow,$telefono1,$telefono2,$fileAttachment,$datos['configuracion_whatsapp']);
			if (''<>$msj['error']){
				return array("error"=>'Error #5.al enviar mensaje por whatsapp:'.$msj['error']);
			}
		} else {
			$msj=$this->rwspapienviar_mensaje($datos['rwsp_server'],$datos['rwsp_linea'],$telefono1,$g_cuerpow,$fileAttachment);
		}
	  return array("error"=>'');
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function enviar_link_al_whatsapp_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function enviar_comprobante_por_correo_lib ------*/

function enviar_comprobante_por_correo_lib($datos, $archivo_pdf, $html){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$c_token_qr=$datos['token_whatsapp'];
		$c_puerto  =$datos['puerto_whatsapp'];
		$fileAttachment=$archivo_pdf;
		$url='';
		$telefono1='506'.$datos['movil'];
		$telefono2='';
		$From='Recursos Humanos TG <recursoshumanos@transportesgrant.com>';
		$g_cuerpow='<br>Para ver el detalle ingresa al siguiente link:<b><a href="'.$datos['url_comprobante_pago'].'">Click aqui</a></b>';
		
		$emaildestino=$datos['correo'];
		if (''==$emaildestino){
			$emaildestino='recursoshumanos@transportesgrant.com';
		}

		if (1==$datos['prueba_envio_comprobante']){
			$telefono1=$datos['prueba_celular'];
			$emaildestino=$datos['prueba_email'];
		} else{
		}

		$emaildestino=str_replace(',',';',$emaildestino);

		$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
		$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

		$cabeceras .= 'Reply-To: '. 'recursoshumanos@transportesgrant.com' . "\r\n";
		$cabeceras .= 'CC: '. 'comprobantesplanillagrant@gmail.com' . "\r\n";

		$cabeceras .= 'From: Recursos Humanos TG<recursoshumanos@transportesgrant.com>' . "\r\n";

		$g_asunto='';
		$g_cuerpo='';
		$strsql='';

		$fecha=date('Y-m-d H:i:s');

		   $g_asunto='Comprobante de pago de:'.$datos['nombre_empleado'].' '.$datos['titulo'];
		   $g_cuerpo=$g_asunto.'<br>'.$g_cuerpow;

		

		$mailMessage=$g_cuerpo;
        
		 if ($datos['smtp_externo']==0){
			 
				$telefono1='50687110011';
				$telefono1='50660496965';
				$From='Recursos Humanos TG <recursoshumanos@transportesgrant.com>';
				$To=$emaildestino; 
				$Asunto=$g_asunto;
				$Mensaje=$mailMessage;
				$Mens_Type='H';
				$Copies='comprobantesplanillagrant@gmail.com';
				$Copies_Type='BCC';
				$Connection_Type='S';
			 	$reply_to=$From;
			 
			 
			 	$cnf=$datos['cfgcorreocomprobante'];
				$xarr=explode(';',$cnf);
				$SMTP=$xarr[0];
				$Usr=$xarr[1];
				$Pw=$xarr[2];
				$Port=$xarr[3];
				$Connection_Type=$xarr[4];
				$from=$xarr[5];
				$Reply_to=$xarr[6];
			 	
				$Attachment=$archivo_pdf;
				
			try {
				    include_once($this->Ini->path_third . "/swift/swift_required.php");
    $sc_mail_port     = "$Port";
    $sc_mail_tp_port  = "$Connection_Type";
    $sc_mail_tp_mens  = "$Mens_Type";
    $sc_mail_tp_copy  = "$Copies_Type";
    $sc_mail_count = 0;
    $sc_mail_erro  = "";
    $sc_mail_ok    = true;
    if ($sc_mail_tp_port == "S" || $sc_mail_tp_port == "Y")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 465;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port, 'ssl');
    }
    elseif ($sc_mail_tp_port == "T")
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 587;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port, 'tls');
    }
    else
    {
        $sc_mail_port = !empty($sc_mail_port) ? $sc_mail_port : 25;
        $Con_Mail = Swift_SmtpTransport::newInstance($SMTP, $sc_mail_port);
    }
    $Con_Mail->setUsername($Usr);
    $Con_Mail->setpassword($Pw);
    $Tmp_ssl = $reply_to;
    $Arr_ssl = array();
    $P1 = explode(";", $Tmp_ssl);
    foreach ($P1 as $Cada_p)
    {
        $P2 = explode("=", $Cada_p);
        if (isset($P2[1]))
        {
            $Arr_ssl[trim($P2[0])] = trim($P2[1]);
        }
    }
    $Con_Mail->setStreamOptions(array('ssl' => $Arr_ssl));
    $Send_Mail = Swift_Mailer::newInstance($Con_Mail);
    if ($sc_mail_tp_mens == "H")
    {
        $Mens_Mail = Swift_Message::newInstance($Asunto)->setBody($Mensaje)->setContentType("text/html");
    }
    else
    {
        $Mens_Mail = Swift_Message::newInstance($Asunto)->setBody($Mensaje);
    }
    if (!empty($_SESSION['scriptcase']['charset']))
    {
        $Mens_Mail->setCharset($_SESSION['scriptcase']['charset']);
    }
    $Temp_mail = $Attachment;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $Attachment);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Mens_Mail->attach(Swift_Attachment::fromPath($NM_dest));
        }
    }
    $Temp_mail = $To;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $To);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Arr_addr = SC_Mail_Address($NM_dest);
            $Mens_Mail->addTo($Arr_addr[0], $Arr_addr[1]);
        }
    }
    $Temp_mail = $Copies;
    if (!is_array($Temp_mail))
    {
        $Temp_mail = explode(";", $Copies);
    }
    foreach ($Temp_mail as $NM_dest)
    {
        if (!empty($NM_dest))
        {
            $Arr_addr = SC_Mail_Address($NM_dest);
            if (strtoupper(substr($sc_mail_tp_copy, 0, 2)) == "CC")
            {
                $Mens_Mail->addCc($Arr_addr[0], $Arr_addr[1]);
            }
            else
            {
                $Mens_Mail->addBcc($Arr_addr[0], $Arr_addr[1]);
            }
        }
    }
    $Arr_addr = SC_Mail_Address($From);
    $Err_mail = array();
    $sc_mail_count = $Send_Mail->send($Mens_Mail->setFrom($Arr_addr[0], $Arr_addr[1]), $Err_mail);
    if (!empty($Err_mail))
    {
        $sc_mail_erro = $Err_mail;
        $sc_mail_ok   = false;
    }
;
			if (''<>$c_token_qr){
				if ($telefono1==$telefono2){
					$telefono2='';
				}
				
			}
			} catch (Exception $e) {
			   return 'Error: '. $e->getMessage(). "\n destino:[".$emaildestino.']';
			}

				if ($sc_mail_ok ){
					$mensaje='Correo enviado con exito';
					$mensaje='';
				} else {
					$mensaje=$sc_mail_erro ."\n destino:[".$emaildestino.']';
				}
				return $mensaje;
		}
		

		try {
			

        $c_style=$this->el_style();
		$mailMessage=$this->traer_body($g_cuerpo,$c_style);

		$fileAttachment = trim($fileAttachment);
		$pathInfo       = pathinfo($fileAttachment);
		$attchmentName  = "attachment_".date("YmdHms").(
		(isset($pathInfo['extension']))? ".".$pathInfo['extension'] : ""
		);

		$mailMessage='Adjunto comprobante de pago de '.$g_asunto;

		$attachment    = chunk_split(base64_encode(file_get_contents($fileAttachment)));
		$boundary      = "PHP-mixed-".md5(time());
		$boundWithPre  = "\n--".$boundary;

		$headers   = "From: $From";
		$headers  .= "CC: comprobantesplanillagrant@gmail.com";
		$headers  .= "\nReply-To: $From";
		$headers  .= "\nContent-Type: multipart/mixed; boundary=\"".$boundary."\"";

		$message   = $boundWithPre;
		$message  .= "\n Content-Type: text/html; charset=UTF-8\n";
		$message  .= "\n $mailMessage";

		$message .= $boundWithPre;
		$message .= "\nContent-Type: application/octet-stream; name=\"".$attchmentName."\"";
		$message .= "\nContent-Transfer-Encoding: base64\n";
		$message .= "\nContent-Disposition: attachment\n";
		$message .= $attachment;
		$message .= $boundWithPre."--";





			
			
			$success=mail($emaildestino, $g_asunto, $message,$headers);

			if (!$success) {
				return '#176.lib'.error_get_last()['message'];
			}
		} catch (Exception $e) {
			   return '179.lib_Error: '. $e->getMessage(). "\n";
		}
		return '';
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function enviar_comprobante_por_correo_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function select_datos_comprobante_lib ------*/

function select_datos_comprobante_lib($id_enca_pla, $cedula_empleado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$arr_deducciones=$this->select_deducciones_lib($id_enca_pla, $cedula_empleado);
		if (''<>$arr_deducciones['error']){
			return $arr_deducciones;
		}
		$dat_deduc=$arr_deducciones['datos'];

		$strsql="SELECT aa.empresa,
			   d.nombre nombre_empresa,
			   aa.cedula,
			SUM(CAST(IF(10=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) salario_hora,
			SUM(CAST(IF(20=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_diarias,
			SUM(CAST(IF(30=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) dias_laborados,
			SUM(CAST(IF(40=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_laboradas,
			SUM(CAST(IF(50=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra1,
			SUM(CAST(IF(60=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra15,
			SUM(CAST(IF(70=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra2,
			SUM(CAST(IF(80=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) horas_extra_mixtas,
			SUM(CAST(IF(90=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) dias_incapacidad,
			SUM(CAST(IF(100=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) dias_vacaciones,
			SUM(CAST(IF(110=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) remuneracion,
			SUM(CAST(IF(120=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) otros_ajustes,
			SUM(CAST(IF(130=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) salario_bruto,
			SUM(CAST(IF(140=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) ccss,
			SUM(CAST(IF(150=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) bancopop,
			SUM(CAST(IF(160=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) otros_deducciones,
			SUM(CAST(IF(170=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) total_deducciones,
			SUM(CAST(IF(180=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) salario_neto,
			SUM(CAST(IF(190=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) observaciones,
			SUM(CAST(IF(200=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) por_ccss_pen,
			SUM(CAST(IF(210=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) por_bp_pen,
			SUM(CAST(IF(220=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) porcentaje_ccss,
			SUM(CAST(IF(230=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) porcentaje_bp,
			SUM(CAST(IF(240=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra1,
			SUM(CAST(IF(250=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra15,
			SUM(CAST(IF(260=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_extra2,
			SUM(CAST(IF(270=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_horas_mixtas,
			SUM(CAST(IF(280=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_vacaciones,
			SUM(CAST(IF(290=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) monto_incapacidad,
			SUM(CAST(IF(300=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) salario_regular,
			SUM(CAST(IF(310=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) total_extras,
			replace(CONCAT('detalle_planilla semanal_',ab.planilla,'_del_',DATE_FORMAT(ab.del,'%d_%b_%Y'),'_al_',DATE_FORMAT(ab.al,'%d_%b_%Y')),' ','_') AS nombre_archivo,
		CONCAT('Planilla semanal ',ab.planilla,' del ',DATE_FORMAT(ab.del,'%d/%b/%Y'),' al ',DATE_FORMAT(ab.al,'%d/%b/%Y'),' ',

		'Total dias:',CAST(DATEDIFF(al,del)+1 AS CHAR(10)),' ',e.descripcion,' del:',ab.ano

		) titulo,
		formato_banco_nacional(cuentacolones) cuenta_colones,
		initcap(rtrim(c.nombre)) nombre_empleado,
		initcap(rtrim(f.descripcion)) nombre_division,
		initcap(rtrim(g.descripcion)) nombre_departamento,
		h.descripcion nombre_puesto,
		b.salario_jornada,
		ifnull(c.foto,''),
		lower(rtrim(c.correo)) correo,
		c.id id_gen_persona,
		ab.id id_enca_planilla,
		i.token_whatsapp,
		i.puerto_whatsapp,		
		MAX(IF(IFNULL(prueba_envio_comprobante,1)=1,prueba_celular,c.movil)) movil,
		IFNULL(CONCAT(p.url_comprobante_pago,'?b=',c.id,ab.id),'') url_comprobante_pago ,
		max(ifnull(prueba_envio_comprobante,1)) prueba_envio_comprobante,
		max(ifnull(prueba_celular,'50687110011')) prueba_celular,
		max(ifnull(prueba_email,'oscar@ssoqc.com')) prueba_email ,
		max(ifnull(i.configuracion_whatsapp,5)) configuracion_whatsapp ,
        max(IFNULL(vu.cfg_server,0)) cfg_server,
        max(ifnull(vu.cfg_linea,'')) cfg_linea,
		max(pc.cfgcorreocomprobante) cfgcorreocomprobante,
		max(pc.smtp_externo) smtp_externo,
		SUM(CAST(IF(9=transaccion,cantidad_monto,0) AS DECIMAL(12,2))) i_salario_jornada,
		max(b.nhoras_jornada),
		aa.jornada
		  FROM pla_movimientos aa
		  LEFT JOIN pla_planilla_encabezado ab ON ab.id = aa.id_planilla and aa.empresa=ab.empresa
		  LEFT JOIN pla_empleados b ON b.cedula=aa.cedula AND b.empresa=ab.empresa
		  LEFT JOIN gen_persona c ON c.cedula=aa.cedula
		  LEFT JOIN gen_compania d ON d.codigo=aa.empresa
		  LEFT JOIN gen_meses e ON e.mes=ab.mes
		  LEFT JOIN pla_division f ON f.empresa=aa.empresa AND f.codigo=aa.division_planilla
		  LEFT JOIN pla_departamentos g ON g.empresa=aa.empresa AND g.division=aa.division_planilla AND g.departamento=aa.departamento
		  LEFT JOIN pla_puestos h ON h.empresa=aa.empresa AND h.codigo=aa.puesto
		  LEFT JOIN pre_control p ON p.id=1
		  LEFT JOIN gen_usuario i ON i.usuario=p.usuario_envio_comprobante_whatsapp
		  left join pla_control pc on pc.id=1
		  left join v_gen_usuario vu on vu.usuario='".$_SESSION['grant']['usr_login']."'
		WHERE ab.id=".$id_enca_pla."
		  AND aa.cedula='".$cedula_empleado."'
		  GROUP BY aa.empresa,
			   d.nombre,
			   aa.cedula,c.foto";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataenplamov = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataenplamov[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataenplamov = false;
          $dataenplamov_erro = $this->Db->ErrorMsg();
      } 

		if ($dataenplamov ===false){
			return array("error"=>"Error:#49.select_datos_comprobante:".$dataenplamov_erro .'<br>'.$strsql);
		}
		if (0==count($dataenplamov )){
			return array("error"=>"No hay datos para el id ".$id_enca_pla." y cedula:".$cedula_empleado);
		}
	    $i_salario_jornada=$dataenplamov[0][58];
	    if (0==floatval($i_salario_jornada)){
			if ('S'==$dataenplamov[0][59]){
			    
			}
			$i_salario_jornada=round($dataenplamov[0][3]*48,0);
		}
		return array("error"=>"",
					"empresa"=>$dataenplamov[0][0],
					"nombre_empresa"=>$dataenplamov[0][1],
					"cedula"=>$dataenplamov[0][2],
					"salario_hora"=>$dataenplamov[0][3],
					"horas_diarias"=>$dataenplamov[0][4],
					"dias_laborados"=>$dataenplamov[0][5],
					"horas_laboradas"=>$dataenplamov[0][6],
					"horas_extra1"=>$dataenplamov[0][7],
					"horas_extra15"=>$dataenplamov[0][8],
					"horas_extra2"=>$dataenplamov[0][9],
					"horas_extra_mixtas"=>$dataenplamov[0][10],
					"dias_incapacidad"=>$dataenplamov[0][11],
					"dias_vacaciones"=>$dataenplamov[0][12],
					"remuneracion"=>$dataenplamov[0][13],
					"otros_ajustes"=>$dataenplamov[0][14],
					"salario_bruto"=>$dataenplamov[0][15],
					"ccss"=>$dataenplamov[0][16],
					"bancopop"=>$dataenplamov[0][17],
					"otros_deducciones"=>$dataenplamov[0][18],
					"total_deducciones"=>$dataenplamov[0][19],
					"salario_neto"=>$dataenplamov[0][20],
					"observaciones"=>$dataenplamov[0][21],
					"por_ccss_pen"=>$dataenplamov[0][22],
					"por_bp_pen"=>$dataenplamov[0][23],
					"porcentaje_ccss"=>$dataenplamov[0][24],
					"porcentaje_bp"=>$dataenplamov[0][25],
					"monto_horas_extra1"=>$dataenplamov[0][26],
					"monto_horas_extra15"=>$dataenplamov[0][27],
					"monto_horas_extra2"=>$dataenplamov[0][28],
					"monto_horas_mixtas"=>$dataenplamov[0][29],
					"monto_vacaciones"=>$dataenplamov[0][30],
					"monto_incapacidad"=>$dataenplamov[0][31],
					"salario_regular"=>$dataenplamov[0][32],
					"total_extras"=>$dataenplamov[0][33],
					"nombre_archivo"=>$dataenplamov[0][34],
					"titulo"=>$dataenplamov[0][35],
					"cuenta_colones"=>$dataenplamov[0][36],
					"nombre_empleado"=>$dataenplamov[0][37],
					"nombre_division"=>$dataenplamov[0][38],
					"nombre_departamento"=>$dataenplamov[0][39],
					"nombre_puesto"=>$dataenplamov[0][40],
					"salario_jornada"=>$dataenplamov[0][15],
					"foto"=>$dataenplamov[0][42],
					"correo"=>$dataenplamov[0][43],
					"id_gen_persona"=>$dataenplamov[0][44],
					"id_enca_planilla"=>$dataenplamov[0][45],
					"token_whatsapp"=>$dataenplamov[0][46],
					"puerto_whatsapp"=>$dataenplamov[0][47],
					"movil"=>$dataenplamov[0][48],
					"url_comprobante_pago"=>$dataenplamov[0][49],
					"prueba_envio_comprobante"=>$dataenplamov[0][50],
					"prueba_celular"=>$dataenplamov[0][51],
					"prueba_email"=>$dataenplamov[0][52],
					"configuracion_whatsapp"=>$dataenplamov[0][53],
					 "rwsp_server"=>$dataenplamov[0][54],
					 "rwsp_linea"=>$dataenplamov[0][55],
					 "cfgcorreocomprobante"=>$dataenplamov[0][56],
					 "smtp_externo"=>$dataenplamov[0][57],
					 "i_salario_jornada"=>$i_salario_jornada,
					"datos_deduc"=>$dat_deduc
		   );
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function select_datos_comprobante_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function select_deducciones_lib ------*/

function select_deducciones_lib($id_enca_pla, $cedula_empleado){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="  SELECT left(b.descripcion,30),a.rebajo
			FROM pla_deducciones_empleado_planilla a
			LEFT JOIN pla_deducciones b ON a.empresa=b.empresa AND a.deduccion=b.codigo
		   WHERE id_planilla='".$id_enca_pla."'
			 and cedula='".$cedula_empleado."'
		   ORDER BY a.deduccion";
		$xstrsql="  SELECT distinct left(b.descripcion,30),a.rebajo
			FROM pla_deducciones_empleado_planilla a
			LEFT JOIN pla_deducciones b ON a.empresa=b.empresa AND a.deduccion=b.codigo
		   ORDER BY a.cedula limit 25";

		$strsql="  SELECT left(b.descripcion,30),a.rebajo
			FROM pla_movimientos_deducciones a
			LEFT JOIN pla_deducciones b ON a.empresa=b.empresa AND a.deduccion=b.codigo
		   WHERE id_planilla='".$id_enca_pla."'
			 and cedula='".$cedula_empleado."'
		   ORDER BY a.deduccion";
	    
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($x_datadeducplaced = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $x_datadeducplaced = false;
          $x_datadeducplaced_erro = $this->Db->ErrorMsg();
      } 

		if ($x_datadeducplaced ===false){
			return array("error"=>"Error: select_deduccones.#9:".$x_datadeducplaced_erro .' '.$strsql);
		}
		$r_arr=array();
		$r=0;
		$otras_deduc=0;
	    $hlin='';
		while (!$x_datadeducplaced->EOF){
			$r++;
			if ($r<11){
			$r_arr[$r][0]=$x_datadeducplaced->fields[0];
			$r_arr[$r][1]=$x_datadeducplaced->fields[1];
			
			} else {
				$otras_deduc=$otras_deduc+$x_datadeducplaced->fields[1];
			}
			$x_datadeducplaced->MoveNext();
		}
	 
		
		$x_datadeducplaced->Close();

		for ($i=$r+1;$i<11;$i++){
			$r_arr[$i][0]=''; 
			$r_arr[$i][1]=0;
		}
	    
		if (0<>$otras_deduc){
			$r_arr[11][0]='<label class="negra pequeno">Otras deducciones</label>';
			$r_arr[11][1]=$otras_deduc;
		} else {
			$r_arr[11][0]='';
			$r_arr[11][1]=0;	
		}

		return array("error"=>"","datos"=>$r_arr,"cantidad"=>$r);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function select_deducciones_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function generar_comprobante_de_pago_lib ------*/

function generar_comprobante_de_pago_lib($c_pantalla,$c_cedula,$c_id_planilla){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$nombre_file='sinfoto';
	set_time_limit(0);
	
	
	$enpantalla=$c_pantalla;


	if (''==$c_cedula.$c_id_planilla.$c_pantalla){
		return array("error"=>'');
	}

	$datos=$this->select_datos_comprobante_lib($c_id_planilla,$c_cedula);

	if (''<>$datos['error']){
		return array("error"=>'<h1>Error</h1><h4>'.$datos['error'].'</h4>');
		return;
	}


	$cedula=str_replace('-','',$datos['cedula']);
	$archivo_pdf='../_lib/tmp/comprobante_pago_'.$cedula.'_'.$datos['nombre_archivo'].'.pdf';

	if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
	  $archivo_pdf=getcwd().'\_lib\tmp\comprobante_pago_'.$cedula.'_'.$datos['nombre_archivo'].'.pdf';
	  $archivo_pdf=str_replace('\pla_planilla_comprobante_de_pago','',$archivo_pdf);
	  $archivo_pdf=str_replace('\funciones_generales','',$archivo_pdf);
	  $archivo_pdf=str_replace('\pla_planilla_comprobante_de_pago_lib','',$archivo_pdf);
	} else {
	  $archivo_pdf=getcwd().'/_lib/tmp/comprobante_pago_'.$cedula.'_'.$datos['nombre_archivo'].'.pdf';
	  $archivo_pdf=str_replace('/pla_planilla_comprobante_de_pago','',$archivo_pdf);
	  $archivo_pdf=str_replace('/funciones_generales','',$archivo_pdf);
	  $archivo_pdf=str_replace('/pla_planilla_comprobante_de_pago_lib','',$archivo_pdf);
	}
	
	if (file_exists($archivo_pdf)){
		unlink($archivo_pdf);
	}

	$datos_deduc=$datos['datos_deduc'];
	$columnainicial='<td width="10"></td>';
	$columnainicial='10';
	$c_style=$this->el_style();
	
	$pdf = new TCPDF('P', 'mm', 'LETTER', true, 'UTF-8', false); 
		 $html='<table border="0" style="display:inline">
		   <tr>
			  <td class="content sin_espacio" width="'.$columnainicial.'"></td>
			  <td class="content sin_espacio" width="130"></td>
			  <td class="content sin_espacio" width="430"></td>
			  <td class="content sin_espacio" width="140"></td>
		   </tr>
		   <tr>
			  <td class="content espacio centrar negra pequeno" width="'.$columnainicial.'"></td>
			  <td class="content espacio centrar negra pequeno">'.$datos['nombre_empresa'].'</td>
			  <td class="content espacio centrar negra pequeno">'.$datos['titulo'].'</td>
			  <td class="content espacio centrar negra pequeno">Cuenta:'.$datos['cuenta_colones'].'</td>
		   </tr>
		 </table>

		 <table>

			<tr>
			  <th class="content sin_espacio" width="'.$columnainicial.'"></th>
			  <th class="content sin_espacio" width="105"></th>
			  <th class="content sin_espacio" width="200"></th>
			  <th class="content sin_espacio" width="33"></th>
			  <th class="content sin_espacio" width="100"></th>
			  <th class="content sin_espacio" width="30"></th>
			  <th class="content sin_espacio" width="120"></th>
			  <th class="content sin_espacio" width="45"></th>
			  <th class="content sin_espacio" width="55"></th>
			</tr>

			<tr>
			  <td class="content espacio" width="'.$columnainicial.'"></td>
			  <td class="content espacio">Cedula:'.$datos['cedula'].'</td>
			  <td class="content espacio" rowspan="2" class="content enca1 negra">'.$datos['nombre_empleado'].'</td>
			  <td class="content espacio derecha">Division:</td>
			  <td class="content espacio negrita">'.$datos['nombre_division'].'</td>
			  <td class="content espacio derecha">Puesto:</td>
			  <td class="content espacio negrita">'.$datos['nombre_puesto'].'</td>
			  <td class="content espacio derecha">Sal Hora:</td>
			  <td class="content espacio derecha negrita">'.number_format($datos['salario_hora'],2).'</td>
			</tr>
			<tr>
			  <td class="content espacio" width="'.$columnainicial.'"></td>
			  <td class="content espacio"></td>
			  <td class="content espacio derecha">Depto:</td>
			  <td class="content espacio negrita" colspan="2">'.$datos['nombre_departamento'].'</td>
			  <td class="content espacio"></td>
			  <td class="content espacio derecha">Sal Jornada:</td>
			  <td class="content espacio derecha negrita">'.number_format($datos['i_salario_jornada'],2).'</td>
			</tr>
		 </table>';
	$linea_blanca="<tr>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
		  </tr>";
	$linea_blanca='';
	$html.='<table>
		  <tr>
			<th class="content sin_espacio" width="'.$columnainicial.'"></th>
			<th class="content sin_espacio" width="60"></th>
			<th class="content sin_espacio negra" width="68"></th>
			<th class="content sin_espacio negra" width="48"></th>
			<th class="content sin_espacio negra" width="48"></th>
			<th class="content sin_espacio negra" width="20"></th>
			<th class="content sin_espacio negra" width="100"></th>
			<th class="content sin_espacio negra" width="50"></th>
			<th class="content sin_espacio" width="5"></th>
			<th class="content sin_espacio" width="126"></th>
			<th class="content sin_espacio" width="57"></th>
			<th class="content sin_espacio" width="20"></th>
			<th class="content sin_espacio" width="110"></th>
		  </tr>

		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio"></td>
			<td class="content espacio negrita enca10">Ingresos</td>
			<td class="content espacio negrita enca10">Dias</td>
			<td class="content espacio negrita enca10">Horas</td>
			<td class="content espacio negrita enca10"></td>
			<td class="content espacio negrita enca10" colspan="2">Deducciones normales</td>
			<td class="content espacio"></td>
			<td class="content espacio negrita enca10" colspan="2">Otras Deducciones</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>

		'.$linea_blanca.'

		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Ordinarias</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['salario_regular'],2).'</td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['dias_laborados'],2,1).'</td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['horas_laboradas'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio">CCSS:</td>
			<td class="content espacio derecha">'.number_format($datos['ccss'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[1][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[1][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Jornada(1.0):</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_horas_extra1'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['horas_extra1'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio">BCOPOP:</td>
			<td class="content espacio derecha">'.number_format($datos['bancopop'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[2][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[2][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Jornada(1.5):</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_horas_extra15'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['horas_extra15'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[3][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[3][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Jornada(2.0):</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_horas_extra2'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['horas_extra2'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[4][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[4][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Jornada(Mix):</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_horas_mixtas'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['horas_extra_mixtas'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[5][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[5][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Incapacidad:</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_incapacidad'],2).'</td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['dias_incapacidad'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[6][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[6][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">Vacaciones:</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['monto_vacaciones'],2).'</td>
			<td class="content espacio centrar">'.$this->planilla_number_format($datos['dias_vacaciones'],2,1).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[7][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[7][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
		  
		  
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">'.$datos['remuneracion']=0 ? '' : 'Remuneracion:'.'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['remuneracion'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[8][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[8][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio">'.$datos['otros_ajustes']=0 ? '' : 'Otros Ajustes:'.'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos['otros_ajustes'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[9][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[9][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[10][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[10][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha"></td>
			<td class="content espacio"></td>
			<td class="content espacio">'.$datos_deduc[11][0].'</td>
			<td class="content espacio derecha">'.$this->planilla_number_format_blanco($datos_deduc[11][1],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">______________________</td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			<td class="content espacio" width="'.$columnainicial.'"></td>
			<td class="content espacio enca1 negra">Total:</td>
			<td class="content espacio enca1 negra" colspan="2">'.number_format($datos['salario_bruto'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio"></td>
			<td class="content espacio derecha enca1 negra" colspan="2">Total deducciones:</td>
			<td class="content espacio"></td>
			<td class="content espacio enca1 negra" colspan="2">'.number_format($datos['total_deducciones'],2).'</td>
			<td class="content espacio"></td>
			<td class="content espacio centrar">Recibido conforme</td>
			<td class="content espacio"></td>
		  </tr>
		  '.$linea_blanca.'
		  <tr>
			 <td class="content enca1 negra titulo1 centrar" colspan="14">Total a pagar:'.number_format($datos['salario_neto'],2).'</td>
		  </tr>
		</table>';
	$html='<table border="1">
		<tr> 
		   <th class="content espacio">'.$html.'</th>
		</tr>
	  </table>';
		$hlin='i2:';
		for ($i=0;$i<11;$i++){
			$hlin.='i:'.$i.' 0='.$datos_deduc[$i][0].' 1='.$datos_deduc[$i][1].PHP_EOL;
		}
		file_put_contents('/tmp/corzohlin.txt',$hlin);
		$pdf->SetCreator(PDF_CREATOR);
		$pdf->SetAuthor('Transporte Grant');
		$pdf->SetTitle('Comprobante de pago');
		$pdf->SetSubject('Comprobante de pago');
		$pdf->SetKeywords('TCPDF, PDF, planilla, asiento');

		$pdf->setPrintHeader(false);
		$pdf->setPrintfooter(false);

		$pdf->setFooterData(array(0,64,0), array(0,64,128));

		$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
		$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

		$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

		$pdf->SetAutoPageBreak(TRUE, 10);
		$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

		$pdf->SetMargins(3, 3, 0);
		$pdf->setFontSubsetting(true);
		$pdf->SetFont('dejavusans', '', 6, '', true);
		$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
		$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
		$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
		$pdf->SetFooterMargin(0);

		$pdf->AddPage();

	  if (''<>$datos['foto']){
		$nombre_file="../_lib/file/img/fotos/personas/".$cedula.'/'.$datos['foto'];
		if (file_exists($nombre_file)){
		   $pdf->Image($nombre_file, 183, 30, -30,25);
		}
	   }

		$pdf->writeHTML($c_style.$html, true, false, true, false, '');

		ob_end_clean();
		if (1==$enpantalla){
			$pdf->Output();
		}

		if (2==$enpantalla){
			$body=$this->traer_body($html,$c_style);			
			file_put_contents('../_lib/tmp/html.html',$body);
			return array("error"=>'',"html"=>$body);
		}

		if (3==$enpantalla){
			$pdf->Output($archivo_pdf,'F');
			$msj=$this->enviar_comprobante_por_correo_lib($datos,$archivo_pdf,$html);
			if (''<>$msj){
				return array("error"=>"Error #729 planillas_envio_comprobantes:".$msj);
			}
		}
		if (4==$enpantalla){
			$pdf->Output($archivo_pdf,'F');
		}
return array("error"=>"","archivo_pdf"=>$archivo_pdf);


$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function generar_comprobante_de_pago_lib ------*/


/*----- Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function traer_body ------*/

function traer_body($l_html,$c_style){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$body = "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Comprobante de pago</title></head><body>";
	$body .= $c_style;
	$body .= "<table style='width: 100%;'>";
	$body .= "<thead style='text-align: center;'><tr><td style='border:none;' colspan='2'>";

	$body .= "</td></tr></thead><tbody><tr>";
	$body .= "<td style='border:none;'><strong></strong> </td>";
	$body .= "<td style='border:none;'><strong></strong> </td>";
	$body .= "</tr>";

	$body .= "<tr><td></td></tr>";
	$body .= "<tr><td colspan='2' style='border:none;'>{$l_html}</td></tr>";
	$body .= "</tbody></table>";
	$body .= "</body></html>";
	return $body;
 
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_envio_comprobantes.php => function traer_body ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function datos_imprime_liquidacion_empleado ------*/

function datos_imprime_liquidacion_empleado($gid_liquidacion,$gempresa){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="select a.id,
			a.empresa,
			a.nombre_empresa,
			rtrim(a.cedula),
			initcap(a.nombre_empleado),
			a.tipo_liquidacion,
			a.fecha_liquidacion,
			a.fecha_ingreso,
			a.fecha_salida,
			a.tiempo_laborado,
			a.nmes1,
			a.nmes2,
			a.nmes3,
			a.nmes4,
			a.nmes5,
			a.nmes6,
			a.mes1,
			a.mes2,
			a.mes3,
			a.mes4,
			a.mes5,
			a.mes6,
			a.salario_promedio_mensual,
			a.salario_promedio_diario,
			a.salario_ultima_jornada,
			a.salario_diario_jornada,
			if(0<>a.pago_aguinaldo,a.agui12,0),
			if(0<>a.pago_aguinaldo,a.agui1,0),
			if(0<>a.pago_aguinaldo,a.agui2,0),
			if(0<>a.pago_aguinaldo,a.agui3,0),
			if(0<>a.pago_aguinaldo,a.agui4,0),
			if(0<>a.pago_aguinaldo,a.agui5,0),
			if(0<>a.pago_aguinaldo,a.agui6,0),
			if(0<>a.pago_aguinaldo,a.agui7,0),
			if(0<>a.pago_aguinaldo,a.agui8,0),
			if(0<>a.pago_aguinaldo,a.agui9,0),
			if(0<>a.pago_aguinaldo,a.agui10,0),
			if(0<>a.pago_aguinaldo,a.agui11,0),
			if(0<>a.pago_aguinaldo,a.total_salarios_aguinaldo,0),
			a.aguinaldo,
			a.dias_vacaciones,
			a.monto_vacaciones,
			a.cesantia_anos,
			a.cesantia_dias,
			a.cesantia_monto,
			a.preaviso_dias,
			a.preaviso_monto,
			a.total_liquidado,
			a.fecha,
			a.usuario_creacion,
			a.creadopor,
			formato_cuenta(a.cuenta_contable),
			formato_cuenta(a.cuenta_cesantia),
			formato_banco_nacional(a.cuentacolones),
			initcap(nombre_division),
			codigo_empleado,
			initcap(nombre_puesto),
			a.estado,
  			a.pago_aguinaldo,
			a.liquidacion
			from v_pla_liquidaciones a
			where a.liquidacion='".$gid_liquidacion."'
			  and empresa='".$gempresa."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataliqemp = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataliqemp[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataliqemp = false;
          $dataliqemp_erro = $this->Db->ErrorMsg();
      } 

	if ($dataliqemp ===false){
		return array("error"=>"Error #58.planillas.php datos_imprime_liquidacion_empleado:".$dataliqemp .' '.$strsql);
	}
	if (count($dataliqemp )==0){
		return array("error"=>"Error #61, no existe registro:[".$gempresa.'-'.$gempresa.'--'.$gid_liquidacion."]");
	}
	return array("error"=>"",
				"c_id"=>$dataliqemp[0][0],
				"c_empresa"=>$dataliqemp[0][1],
				"c_nombre_empresa"=>$dataliqemp[0][2],
				"c_cedula"=>$dataliqemp[0][3],
				"c_nombre_empleado"=>$dataliqemp[0][4],
				"c_tipo_liquidacion"=>$dataliqemp[0][5],
				"c_fecha_liquidacion"=>$dataliqemp[0][6],
				"c_fecha_ingreso"=>$dataliqemp[0][7],
				"c_fecha_salida"=>$dataliqemp[0][8],
				"c_tiempo_laborado"=>$dataliqemp[0][9],
				"c_nmes1"=>$dataliqemp[0][10],
				"c_nmes2"=>$dataliqemp[0][11],
				"c_nmes3"=>$dataliqemp[0][12],
				"c_nmes4"=>$dataliqemp[0][13],
				"c_nmes5"=>$dataliqemp[0][14],
				"c_nmes6"=>$dataliqemp[0][15],
				"c_mes1"=>$dataliqemp[0][16],
				"c_mes2"=>$dataliqemp[0][17],
				"c_mes3"=>$dataliqemp[0][18],
				"c_mes4"=>$dataliqemp[0][19],
				"c_mes5"=>$dataliqemp[0][20],
				"c_mes6"=>$dataliqemp[0][21],
				"c_salario_promedio_mensual"=>$dataliqemp[0][22],
				"c_salario_promedio_diario"=>$dataliqemp[0][23],
				"c_salario_ultima_jornada"=>$dataliqemp[0][24],
				"c_salario_diario_jornada"=>$dataliqemp[0][25],
				"c_agui12"=>$dataliqemp[0][26],
				"c_agui1"=>$dataliqemp[0][27],
				"c_agui2"=>$dataliqemp[0][28],
				"c_agui3"=>$dataliqemp[0][29],
				"c_agui4"=>$dataliqemp[0][30],
				"c_agui5"=>$dataliqemp[0][31],
				"c_agui6"=>$dataliqemp[0][32],
				"c_agui7"=>$dataliqemp[0][33],
				"c_agui8"=>$dataliqemp[0][34],
				"c_agui9"=>$dataliqemp[0][35],
				"c_agui10"=>$dataliqemp[0][36],
				"c_agui11"=>$dataliqemp[0][37],
				"c_total_salarios_aguinaldo"=>$dataliqemp[0][38],
				"c_aguinaldo"=>$dataliqemp[0][39],
				"c_dias_vacaciones"=>$dataliqemp[0][40],
				"c_monto_vacaciones"=>$dataliqemp[0][41],
				"c_cesantia_anos"=>$dataliqemp[0][42],
				"c_cesantia_dias"=>$dataliqemp[0][43],
				"c_cesantia_monto"=>$dataliqemp[0][44],
				"c_preaviso_dias"=>$dataliqemp[0][45],
				"c_preaviso_monto"=>$dataliqemp[0][46],
				"c_total_liquidado"=>$dataliqemp[0][47],
				"c_fecha"=>$dataliqemp[0][48],
				"c_usuario_creacion"=>$dataliqemp[0][49],
				"c_creadopor"=>$dataliqemp[0][50],
				"c_cuenta_contable"=>$dataliqemp[0][51],
				"c_cuenta_cesantia"=>$dataliqemp[0][52],
				"c_cuenta_colones"=>$dataliqemp[0][53],
				"c_nombre_division"=>$dataliqemp[0][54],
				"c_codigo_empleado"=>$dataliqemp[0][55],
				"c_nombre_puesto"=>$dataliqemp[0][56],
				"c_estado"=>$dataliqemp[0][57],
				"c_pago_aguinaldo"=>$dataliqemp[0][58],
				"c_liquidaacion_numero"=>$dataliqemp[0][59]
		);
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function datos_imprime_liquidacion_empleado ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function imprime_liquidacion_empleado ------*/

function imprime_liquidacion_empleado($gid_liquidacion,$gempresa){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$datos=$this->datos_imprime_liquidacion_empleado($gid_liquidacion,$gempresa);
	$datini=$this->datos_iniciales_encabezado_empresa($datos['c_empresa'],);
	$cfont='Helvetica';

	$old_dir = getcwd();
	chdir($this->Ini->path_third . "/tcpdf/");
	include_once("tcpdf.php");
	chdir($old_dir);
	require('../_lib/libraries/grp/librerias_grant/php/pla_accion_personal_class.php');
	$pdf = new MYPDF('P', 'mm', 'LETTER', true, 'UTF-8', false);
	$pdf->SetCreator(PDF_CREATOR);
	$pdf->SetAuthor('Soporte y Sistemas OQC');
	$pdf->SetTitle('Liquidacion empleado');
	$pdf->SetSubject('Liquidacion empleado');
	$pdf->SetKeywords('TCPDF, PDF, Liquidacion empleado');
	
	$pdf->setPrintHeader(false);
	$pdf->setPrintFooter(true);
	$pdf->setFooterMargin('5');
	
	$pdf->SetMargins(5, 10, 5,5);
	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
	$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
	$pdf->setFontSubsetting(true);
	$pdf->SetFont($cfont, '', 7, '', true);
	
	$pdf->hecho_por=$datos['c_creadopor'];
	$pdf->telefono_empresa=$datini['telefono'];
	$pdf->email_empresa=$datini['e_mail_acciones'];
	if (''<>$datos['error']){
		$perror='<h1>Error</h1><h3>'.$datos['error'].'</h3>';
		$pdf->AddPage();
		$pdf->writeHTML($perror, true, false, true, false, '');
		ob_end_clean();
		$pdf->Output();
		return $datos;
	}
	$html=$this->el_style();
	$pdf->AddPage();
	$clin='<table>
	   <tr>
	      <td class="izquierda negra" width="110">Cuenta contable:</td><td><label class="igualnegra izquierda">'.$datos['c_cuenta_contable'].'</label></td>
		  <td class="izquierda negra" width="110">Division:</td><td><label class="igualnegra izquierda">'.$datos['c_nombre_division'].'</label></td>
	   </tr>
	   <tr>
	      <td class="izquierda negra" width="110">Cuenta cesantia:</td><td><label class="igualnegra izquierda">'.$datos['c_cuenta_cesantia'].'</label></td>
	      <td class="derecha negra" width="110">Cuenta Bancaria #:</td><td><label class="igualnegra izquierda">'.$datos['c_cuenta_colones'].'</label></td>
	   </tr>
	</table>';
	$hborrador='';
	if (file_exists('../_lib/img/logotg.jpg')){
		$pdf->Image('../_lib/img/logotg.jpg', 10, 10, -15,25);
	}
	if (1==$datos['c_estado']){
		$img_file = '../_lib/img/borrador.jpg';
		if (file_exists($img_file)){
			$pdf->Image($img_file, 150, 10, 25,25);
			$hborrador='<b> BORRADOR</b>';
		}
	}
	
	$html.='<table>
	    <tr><th class="centrar negra enca14 linea_26" width="730">'.$datos['c_nombre_empresa'].'</th></tr>
	    <tr><th class="centrar enca10 linea_26" width="730">Cédula Jurídica'.$datos['c_cedula'].'</th></tr>
		<tr><th class="centrar enca10 linea_26" width="730">Telefonos:'.$datini['telefono'].'</th></tr>
		<tr><th class="centrar enca10 linea_26" width="730">Correo electrónico:'.$datini['e_mail_acciones'].'</th></tr>
	  </table><br>';
    $margenizq=20;
	$html.='<br><table width="730" class="xxx_sin_borde_tliquidacion">
	   <table>
	      <tr></tr>
	      <tr><td class="lin10 centrar">LIQUIDACION LABORAL'.$hborrador.$datos['c_tipo_liquidacion'].'</td></tr>
	      <tr><td class="lin10 centrar espacio_doble" >Divisón:'.$datos['c_nombre_division'].'</td></tr>
	   </table>
	
	   <table>
	   <tr>
	     <th width="'.$margenizq.'"></th>
	     <th class="t10 linea_02" width="125"></th>
		 <th class="t10 linea_02" width="150"></th>
		 <th width="150"></th>
		 <th class="t10 linea_02" width="200"></th>
		 <th class="t10 linea_02" width="200"></th>
	   </tr>

	   <tr>
	    <td width="'.$margenizq.'"></td>
		<td class="t10 linea_16">Nombre empleado:</td>
		<td class="t10 linea_16 negrita">'.$datos['c_nombre_empleado'].'</td>
		<td></td>
		<td class="t10 linea_16" width="105">Fecha de liquidacion:</td>
		<td class="t10 linea_16">'.$datos['c_fecha_liquidacion'].'</td>
	   </tr>
	   <tr>
	    <td width="'.$margenizq.'" class="linea_16"></td>
		<td class="t10 linea_16">Número de Identificación:</td>
		<td class="t10 linea_16">'.$datos['c_cedula'].'</td>
		<td></td>
		<td class="t10 linea_16" width="105">Cuenta contable:</td>
		<td class="t10 linea_16">'.$datos['c_cuenta_contable'].'</td> 
	   </tr>
	   
	   <tr>
	    <td width="'.$margenizq.'" class="linea_16"></td>
		<td class="t10 linea_16">Puesto:</td>
		<td class="t10 linea_16">'.$datos['c_nombre_puesto'].'</td>
		<td></td>
		<td class="t10 linea_16" width="105">Cuenta cesantia:</td>
		<td class="t10 linea_16">'.$datos['c_cuenta_cesantia'].'</td> 
	   </tr>	   
	   
	   <tr>
	    <td width="'.$margenizq.'" class="linea_16"></td>
		<td class="t10 linea_16">Fecha de ingreso:</td>
		<td class="t10 linea_16">'.$datos['c_fecha_ingreso'].'</td>
		<td></td>
		<td class="t10 linea_16" width="105">Cuenta bancaria:</td>
		<td class="t10 linea_16">'.$datos['c_cuenta_colones'].'</td> 
	   </tr>	    
	   
	   <tr>
	    <td width="'.$margenizq.'" class="linea_16"></td>
		<td class="t10 linea_16">Fecha de salida:</td>
		<td class="t10 linea_16">'.$datos['c_fecha_salida'].'</td>
		<td></td>
		<td class="t10 linea_16">Tiempo laborado:</td>
		<td class="t10 linea_16">'.$datos['c_tiempo_laborado'].'</td>
	   </tr>		   
	   </table></table>';
	$tabla_6meses=$this->tabla_6meses($datos);
	$tabla_12meses=$this->ftabla_12meses($datos);
	$html.='<br><br><table width="730">
		
		 <table>
		  <tr>
			<th>'.$tabla_6meses.'</th>
			<th>'.$tabla_12meses.'</th>		
		  </tr>
		</table>
	</table>';
	
	$tabla_resumen=$this->tabla_resumen($datos);
	$tabla_recibido=$this->tabla_recibido($datos);
	$html.='<br><table width="730">
	 <table>
	  <tr>
	    <th>'.$tabla_resumen.'</th>
	    <th></th>
	  </tr>
	</table>
	</table>';
	$eltotalliq=$this->total_a_liquidar($datos);
	$html.='<br><table width="730">'.$eltotalliq.'</table>';	
    $html.='<table width="730">
	   <tr><th width="50"></th>
	       <th>'.$tabla_recibido.'</th>
	   </tr>
	</table>';
	$pdf->writeHTML($html, true, false, true, false, '');
	
	$pdf->SetFillColor(255, 255, 255);
	$pdf->SetTextColor(0, 63, 127);
	$pdf->SetTextColor(0, 0, 0);
	$y=150;
	$h=20;

	$linea=4.4;
  if (1==2){
	$pdf->writeHTMLCell(126, 78.4, 85, 96.6+$linea, '', 1, 0, 1, true, 'J', true);
	$pdf->writeHTMLCell(80 , 70  , '', 96.6+$linea, '', 1, 0, 1, true, 'J', true);
	$pdf->writeHTMLCell(80 , 17  , '',  158+$linea, '', 1, 0, 1, true, 'J', true);
	$pdf->writeHTMLCell(80,  45  , '',  175+$linea, '', 1, 0, 1, true, 'J', true);
	$pdf->writeHTMLCell(126, 45  , 85,  175+$linea, '', 1, 0, 1, true, 'J', true);
	$pdf->writeHTMLCell(206, 10  , '',  220+$linea, '', 1, 0, 1, true, 'J', true);
  }

	ob_end_clean();
	$pdf->Output();
	return array("error"=>"");

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function imprime_liquidacion_empleado ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_6meses ------*/

function tabla_6meses($datos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$tsalarios=
	$datos['c_mes1']+
	$datos['c_mes2']+
	$datos['c_mes3']+
	$datos['c_mes4']+
	$datos['c_mes5']+
	$datos['c_mes6'];
	$khtml= '<table width="365">
	  <tr>
	     <th class="linea_02" width="50"></th>
		 <th class="linea_02" width="100"></th>
		 <th width="80"></th>
		 <th width="40"></th>
	  </tr>
	  <tr>
	     <td colspan="4" class="negrita centrar t10">SALARIOS PROMEDIOS ULTIMOS 6 MESES</td>
	  </tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes1'].'</td><td class="derecha">'.number_format($datos['c_mes1'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes2'].'</td><td class="derecha">'.number_format($datos['c_mes2'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes3'].'</td><td class="derecha">'.number_format($datos['c_mes3'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes4'].'</td><td class="derecha">'.number_format($datos['c_mes4'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes5'].'</td><td class="derecha">'.number_format($datos['c_mes5'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>'.$datos['c_nmes6'].'</td><td class="derecha">'.number_format($datos['c_mes6'],2).'</td><td></td><td></td></tr>
	  
	  <tr class="linea_16 t10"><td></td><td></td><td></td></tr>
	  
	  <tr class="linea_16 t10"><td></td><td>Total Salarios</td><td class="derecha">'.number_format($tsalarios,2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Promedio mensual:</td><td class="derecha">'.number_format($datos['c_salario_promedio_mensual'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Promedio diario:</td><td class="derecha">'.number_format($datos['c_salario_promedio_diario'],2).'</td><td></td><td></td></tr>
	  
	  <tr><td></td><td></td><td></td><td></td></tr>
	  <tr><td></td><td></td><td></td><td></td></tr>
	  <tr><td></td><td></td><td></td><td></td></tr>
	  <tr class="negrita centrar t10">
	     <td class="negra centrado titulo1 enca14" colspan="4">Vacaciones</td>
	  </tr>
	  <tr class="linea_16">
	  	 <td></td>
		 <td class="linea_16 t10">Salario ultima jornada</td>
		 <td class="derecha linea_16 t10">'.number_format($datos['c_salario_ultima_jornada'],2).'</td>
		 <td></td>
	  </tr>
	  <tr class="linea_16">
	     <td></td>
		 <td class="negrita linea_16 t10">Salario por dia</td>
		 <td class="derecha linea_16 t10">'.number_format(($datos['c_salario_diario_jornada']),2).'</td>
		 <td></td>
	  </tr>
    </table>';
	return $khtml;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_6meses ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function ftabla_12meses ------*/

function ftabla_12meses($datos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$ttotal=
	$datos['c_agui1']+
	$datos['c_agui2']+
	$datos['c_agui3']+
	$datos['c_agui4']+
	$datos['c_agui5']+
	$datos['c_agui6']+
	$datos['c_agui7']+
	$datos['c_agui8']+
	$datos['c_agui9']+
	$datos['c_agui10']+
	$datos['c_agui11']+
	$datos['c_agui12'];
	$khtml= '<table width="365">
	  <tr>
	     <th class="linea_02" width="50"></th>
		 <th class="linea_02" width="80"></th>
		 <th width="80"></th>
		 <th width="70"></th>
	  </tr>
	  <tr>
	     <td colspan="4" class="negrita centrar t10">CALCULO DE AGUINALDO</td>
	  </tr>
	  <tr class="linea_16 t10"><td></td><td>Diciembre</td><td class="derecha">'.number_format($datos['c_agui12'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Enero</td><td class="derecha">'.number_format($datos['c_agui1'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Febrero</td><td class="derecha">'.number_format($datos['c_agui2'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Marzo</td><td class="derecha">'.number_format($datos['c_agui3'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Abril</td><td class="derecha">'.number_format($datos['c_agui4'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Mayo</td><td class="derecha">'.number_format($datos['c_agui5'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Junio</td><td class="derecha">'.number_format($datos['c_agui6'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Julio</td><td class="derecha">'.number_format($datos['c_agui7'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Agosto</td><td class="derecha">'.number_format($datos['c_agui8'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Setiembre</td><td class="derecha">'.number_format($datos['c_agui9'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Octubre</td><td class="derecha">'.number_format($datos['c_agui10'],2).'</td><td></td><td></td></tr>
 	  <tr class="linea_16 t10"><td></td><td>Noviembre</td><td class="derecha">'.number_format($datos['c_agui11'],2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td></td><td></td></tr>
	  
	  <tr class="linea_16 t10"><td></td><td>TOTAL</td><td class="derecha">'.number_format($ttotal,2).'</td><td></td><td></td></tr>
	  <tr class="linea_16 t10"><td></td><td>Aguinaldo:</td><td class="derecha">'.number_format($datos['c_aguinaldo'],2).'</td><td></td><td></td></tr>
	  
	  <tr class="linea_16">
	     <td></td>
		 <td></td>
		 <td></td>
		 <td></td>
	  </tr>
	</table>';
	
	return $khtml;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function ftabla_12meses ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_resumen ------*/

function tabla_resumen($datos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
  $dias_cesantia=$datos['c_cesantia_dias'];
  $khtml='<table width="365">
     <tr class="linea_16">
	  <th width="50"></th>
	  <th width="60"></th>
	  <th width="80"></th>
	  <th width="80"></th>
	  <th width="45"></th>
	</tr>
    <tr>
	  <th colspan="5" class="negrita centrar enca14">RESUMEN LIQUIDACION</th>
	</tr>
    <tr>
	  <th colspan="5" class="linea_02"></th>
	</tr>
    <tr class="linea_16">
	  <td></td>
	  <td class="centrar">Rubro</td>
	  <td class="centrar">Derecho</td>
	  <td class="centrar">Monto a Pagar</td>
	</tr>
	<tr class="linea_06">
	  <td></td>
	  <td></td>
	  <td></td>
	  <td></td>
	</tr>
  
  
    <tr class="linea_16" t10>
	  <td></td>
	  <td class="linea_16 t10">Aguinaldo</td>
	  <td></td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_aguinaldo'],2).'</td>
	</tr>
	
    <tr class="linea_16" t10>
	  <td></td>
	  <td class="linea_16 t10">Vacaciones</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_dias_vacaciones'],2).'</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_monto_vacaciones'],2).'</td>
	</tr>
	
    <tr class="linea_16" t10>
	  <td></td>
	  <td class="linea_16 t10">Cesantía</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_cesantia_anos']).' años '.number_format($dias_cesantia).' dias'.'</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_cesantia_monto'],2).'</td>
	</tr>
	
    <tr class="linea_16" t10>
	  <td></td>
	  <td class="linea_16 t10">Preaviso</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_preaviso_dias']).' dias'.'</td>
	  <td class="derecha linea_16 t10">'.number_format($datos['c_preaviso_monto'],2).'</td>
	</tr>
	
	<tr class="linea_06">
	  <td></td>
	  <td></td>
	  <td></td>
	  <td></td>
	</tr>
  </table>';
	
	return $khtml;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_resumen ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_recibido ------*/

function tabla_recibido($datos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$kmarg='1';
	$khtml='<table width="365">
	<tr class="linea_06">
	  <th width="'.$kmarg.'"></th>
	  <th width="40"></th>
	  <th width="250"></th>
	  <th width="280"></th>
	</tr>
	
	   <tr>
	     <td colspan="4" class="t10 linea_16 centrar">Doy por aceptado que los montos y derechos en ésta liquidación son correctos, no teniendo ningún tipo de</td>
	   </tr>
	   <tr>
	     <td class="t10 linea_16 centrar" colspan="4"> reclamo pendiente contra la compañía o sus representantes.</td>
	   </tr>

	<tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td></td>
	  <td></td>
	  <td></td>
	</tr>
	
	<tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td></td>
	  <td></td>
	  <td></td>
	</tr>
	
	<tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td class="centrar"></td>
	  <td class="centrar">_____________________</td>
	  <td class="centrar">_____________________</td>
	</tr>
	<tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td class="centrar"></td>
	  <td class="centrar">Hecho por:'.$datos['c_usuario_creacion'].'</td>
	  <td class="centrar">Revisado por</td>
	</tr>
	
	<tr class="linea_06">
	  <th width="'.$kmarg.'"></th>
	  <th></th>
	  <th></th>
	  <th></th>
	</tr>

	<tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td></td>
	  <td class="centrar">_____________________</td>
	  <td class="centrar">_____________________</td>
	</tr>
	
    <tr class="linea_16">
	  <th width="'.$kmarg.'"></th>
	  <td></td>
	  <td class="centrar">'.$datos['c_nombre_empleado'].'</td>
	  <td class="centrar">Cédula</td>
	</tr>

	</table>';
	return $khtml;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function tabla_recibido ------*/


/*----- Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function total_a_liquidar ------*/

function total_a_liquidar($datos){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
    $monto=intval($datos['c_total_liquidado']);
	$montoenletras=$this->deme_monto_en_letras($monto);
	$khtml='<table width="730">
	   <tr class="linea_26">
	     <td width="150" class="derecha negra14 enca14">TOTAL A LIQUIDAR:</td>
		 <td width="5" ></td>
	     <td width="90" class="izquierda negra14 enca14">  '.number_format($datos['c_total_liquidado'],2).'</td>
		 <td width="5" ></td>
		 <td width="500" class="centered-element t10 centrar centrar_horizntal">'.$montoenletras.'</td>
	   </tr>
	</table>';
	return $khtml;

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: planillas_imprime_liquidacion.php => function total_a_liquidar ------*/


/*----- Scriptcase Locale: PHP Method: taller_orden_de_trabajo.php => function imprimir_taller_orden_trabajo ------*/

function imprimir_taller_orden_trabajo($el_id){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$v_font=8;
		$datos=$this->taller_orden_trabajo_datos($el_id);

		$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

		$pdf->SetCreator(PDF_CREATOR);
		$pdf->SetAuthor('Transportes Grant');
		$pdf->SetTitle('Orden de Trabajo # 15334');

		$pdf->setPrintHeader(false);
		$pdf->setPrintFooter(false);

		$pdf->SetMargins(10, 10, 10);
		$pdf->AddPage();
        if (''<>$datos['error']){
			$html='<h1>Error</h1>'.$datos['error'];
			$pdf->SetFont('helvetica', '', $v_font);
			$pdf->writeHTML($html, true, false, true, false, '');
		} else {
			if (file_exists('../_lib/img/logotg.jpg')){
				$pdf->Image('../_lib/img/logotg.jpg', 2, 2, 15,15);
			}
			$r_data=$datos['data'];
			$r_servicios=$datos['servicios'];
			$r_repuestos=$datos['repuestos'];
			$html_header = '
			<table cellpadding="2">
				<tr>
					<td width="30%" align="center"><strong></strong>TRANSPORTES GRANT S.A.</td>
					<td width="40%" align="center"><h1>ORDEN DE TRABAJO</h1></td>
					<td width="30%" align="right"><strong>Orden # '.$r_data['ordendetrabajo'].'</strong><br>Fecha: '.$r_data['fecha'].'</td>
				</tr>
			</table>
			<hr>';

			$html_info = '
			<table cellpadding="4">
				<tr>
					<td><strong>'.$r_data['tipo_unidad'].'</strong> '.$r_data['unidad'].'</td>
					<td><strong>Placa:</strong> '.$r_data['placa'].'</td>
					<td><strong>Kilómetros:</strong> '.$r_data['kilometros'].'</td>
				</tr>
				<tr>
					<td colspan="2"><strong>Chofer:</strong> '.$r_data['chofer'].'-'.$r_data['nombre_chofer'].'</td>
					<td><strong>Autorizó:</strong> '.$r_data['nombre_autoriza'].'</td>
				</tr>
			</table>';

			$html_servicios = '
					<h4 style="margin-bottom: 5px;">SERVICIOS REQUERIDOS</h4>
					<table border="1" cellpadding="4" cellspacing="0" style="width: 100%;">
						<thead>
							<tr style="background-color: #eeeeee; text-align: left;">
								<th width="15%"><strong> Servicio</strong></th>
								<th width="55%"><strong> Descripción</strong></th>
								<th width="30%"><strong> Mecánico</strong></th>
							</tr>
						</thead>
						<tbody>
							';
			while (!$r_servicios->EOF){
							$html_servicios=$html_servicios.'<tr>
								<td width="15%">'.$r_servicios->fields[0].'</td>
								<td width="55%">'.$r_servicios->fields[1].'</td>
								<td width="30%">'.$r_servicios->fields[2].'</td>
							</tr>';			
				$r_servicios->MoveNext();
			}
			$r_servicios->Close();

			$html_servicios=$html_servicios.'
						</tbody>
					</table>';
			$html_repuestos = '
			<br><br>
			<h4 style="margin-bottom: 5px;">REPUESTOS EMPLEADOS</h4>
			<table border="1" cellpadding="4" cellspacing="0" style="width: 100%;">
				<thead>
					<tr style="background-color: #eeeeee; text-align: center;">
						<th width="15%"><strong>Bodega</strong></th>
						<th width="20%"><strong>Código</strong></th>
						<th width="50%"><strong>Descripción</strong></th>
						<th width="15%"><strong>Cant.</strong></th>
					</tr>
				</thead>
				<tbody>';
			
			while (!$r_repuestos->EOF){
				$html_repuestos=$html_repuestos.'
					<tr>
						<td width="15%" align="center">'.$r_repuestos->fields[0].'</td>
						<td width="20%">'.$r_repuestos->fields[1].'</td>
						<td width="50%">'.$r_repuestos->fields[2].'</td>
						<td width="15%" align="center">'.number_format($r_repuestos->fields[3],2).'</td>
					</tr>';
			  $r_repuestos->MoveNext();
			}
			$r_repuestos->Close();
			$html_repuestos=$html_repuestos.'					
				</tbody>
			</table>';


			$observaciones_limpias = strip_tags($r_data['observaciones'], '<b><i><u><strong><em><p><br><ul><li><ol><div><span>');

			$observaciones_limpias = str_replace('<ol>', '<ol style="margin-left: 25px;">', $observaciones_limpias);
			$observaciones_limpias = str_replace('<li>', '<li style="text-indent: 5px;">', $observaciones_limpias);

	
			$html_footer = '
			<br><br>
			<table cellpadding="10">
				<tr>
					<td><strong>Observaciones:</strong>'.$observaciones_limpias.'</td>
				</tr>
			</table>
			<br><br><br>
			<table cellpadding="0">
				<tr>
					<td align="center">__________________________<br>Firma Responsable</td>
					<td align="center">__________________________<br>Firma Mecánico</td>
					<td align="center">__________________________<br>Autoriza</td>
				</tr>
			</table>
			<div align="right"><p>Fecha de impresión: '.date('Y-m-d H:i:s').'</p></div>';

			$pdf->SetFont('helvetica', '', $v_font);
			$pdf->writeHTML($html_header . $html_info . $html_servicios . $html_repuestos . $html_footer, true, false, true, false, '');
     }
	ob_end_clean();
	$pdf->Output('Orden_Trabajo_15334.pdf', 'I');	
	
	
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: taller_orden_de_trabajo.php => function imprimir_taller_orden_trabajo ------*/


/*----- Scriptcase Locale: PHP Method: taller_orden_de_trabajo.php => function taller_orden_trabajo_datos ------*/

function taller_orden_trabajo_datos($elid){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select id,
				DATE_FORMAT(fecha,'%d/%b/%Y'),
				unidad,
				placa,
				kilometros,
				cedula_chofer,
				chofer,
				nombre_chofer,
				fecha_ingreso,
				fecha_salida,
				cedula_autoriza,
				nombre_autoriza,
				usuario_creacion,
				nombre_usuario_creacion,
				observaciones,
				usuario_modifica,
				nombre_usuario_modifica,
				id_estado,
				estado,
				ordendetrabajo,
			    id_tipo_unidad,
			     tipo_unidad
				 from v_taller_orden_trabajo_encabezado
				where id=".$elid;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $d1 = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $d1[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $d1 = false;
          $d1_erro = $this->Db->ErrorMsg();
      } 

		if ($d1 ===false){
			return array("error"=>"Error:".$d1_erro .'<br><br>'.$strsql);
		}
		if (count($d1 )==0){
			return array("error"=>"Error:No existe la orden:".$strsql);
		}
		$d1_arr=array("id"=>$d1[0][0],
					"fecha"=>$d1[0][1],
					"unidad"=>$d1[0][2],
					"placa"=>$d1[0][3],
					"kilometros"=>$d1[0][4],
					"cedula_chofer"=>$d1[0][5],
					"chofer"=>$d1[0][6],
					"nombre_chofer"=>$d1[0][7],
					"fecha_ingreso"=>$d1[0][8],
					"fecha_salida"=>$d1[0][9],
					"cedula_autoriza"=>$d1[0][10],
					"nombre_autoriza"=>$d1[0][11],
					"usuario_creacion"=>$d1[0][12],
					"nombre_usuario_creacion"=>$d1[0][13],
					"observaciones"=>$d1[0][14],
					"usuario_modifica"=>$d1[0][15],
					"nombre_usuario_modifica"=>$d1[0][16],
					"id_estado"=>$d1[0][17],
					"estado"=>$d1[0][18],
					"ordendetrabajo"=>$d1[0][19],
					"tipo_unidad"=>$d1[0][21]
					 );
		$strsql="  SELECT b.codigo_viejo,b.descripcion,c.nombre mecanico
					 FROM taller_orden_trabajo_detalle_servicios a
					 LEFT JOIN taller_orden_trabajo_servicios b ON a.servicio=b.id
					 LEFT JOIN gen_persona c ON c.cedula=a.mecanico
				    WHERE id_encabezado=".$elid.' order by a.id desc';
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($data_servicios = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_servicios = false;
          $data_servicios_erro = $this->Db->ErrorMsg();
      } 

		if ($data_servicios ===false){
			return array("error"=>"Error en servicios:".$data_servicios_erro .'<br><br>'.$strsql);
		}
		$strsql="   SELECT c.descripcion bodega,a.codigo_articulo,b.descripcion,a.cantidad
					FROM taller_orden_trabajo_detalle_repuestos a
					LEFT JOIN inv_catalogo_articulos b ON a.codigo_articulo=b.codigo_articulo
					LEFT JOIN inv_bodega c ON c.compania=a.compania AND c.division=a.division AND c.bodega=a.bodega
					WHERE a.id_encabezado=".$elid."
					ORDER BY a.id ";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($data_repuestos = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $data_repuestos = false;
          $data_repuestos_erro = $this->Db->ErrorMsg();
      } 

		if ($data_repuestos ===false){
			return array("error"=>"Error en repuestos:".$data_repuestos_erro .'<br><br>'.$strsql);
		}
		return array("error"=>"",
					 "data"=>$d1_arr,
					 "servicios"=>$data_servicios ,
					 "repuestos"=>$data_repuestos );
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: taller_orden_de_trabajo.php => function taller_orden_trabajo_datos ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function retornar_numeracion_a_bodega ------*/

function retornar_numeracion_a_bodega($la_numeracion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$strsql="update pre_llantas set enviar_a=null,
	            fecha_modifica='".date('Y-m-d H:i:s')."',usuario_modifica='".$_SESSION['grant']['usr_login']."'
	           where numeracion='".$la_numeracion."'";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataupdatellanta = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataupdatellanta[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataupdatellanta = false;
          $dataupdatellanta_erro = $this->Db->ErrorMsg();
      } 

	if ($dataupdatellanta ===false){
		return array("error"=>"Error #11 retornar_numeracion_a_bodega:".$dataupdatellanta_erro .' '.$strsql);
	}
	$desc_log='Quito del envio de llantas la numeracion:'.$la_numeracion;
	
	$msj=$this->agregar_log('envia_llanta_a_otro_predio','llantas',$desc_log);
	if ($msj<>''){
		return array("error"=>"Error #18 retornar_numeracion_a_bodega:".$msj);
	}
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function retornar_numeracion_a_bodega ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function retornar_llanta_de_desecho_a_estado_anterior ------*/

function retornar_llanta_de_desecho_a_estado_anterior($la_numeracion){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="
				SELECT REPLACE(b.detalle,CONCAT('->',estado),'')
		  FROM pre_llantas a,
			   pre_llantas_log b
		  WHERE a.id=b.id_llanta
			 AND a.numeracion='".$la_numeracion."'
			 AND b.campo='estado'
			 AND b.detalle LIKE CONCAT('%>',a.estado,'%')
		  ORDER BY b.fecha DESC";
	  
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $dataestadoanter = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $dataestadoanter[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $dataestadoanter = false;
          $dataestadoanter_erro = $this->Db->ErrorMsg();
      } 

	 if ($dataestadoanter ===false){
		 return array("error"=>"Error #32 retornar_llanta_de_desecho_a_estado_anterior:".$dataestadoanter_erro .' '.$strsql);
	 }
	 if (count($dataestadoanter )==0){
		 return array("error"=>"Error #35 retornar_llanta_de_desecho_a_estado_anterior numeracion no encontrada ".$la_numeracion);
	 }
     $eanter=$dataestadoanter[0][0];
	 if ('nulo'==$eanter){
		$eanter='null'; 
	 }
	 $strsql="update pre_llantas 
	             set estado=".$eanter.",
				 fecha_modifica='".date('Y-m-d H:i:s')."',
				 usuario_modifica='".$_SESSION['grant']['usr_login']."' 
				where numeracion='".$la_numeracion."' limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datachangeestadoanter = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datachangeestadoanter[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datachangeestadoanter = false;
          $datachangeestadoanter_erro = $this->Db->ErrorMsg();
      } 

	if ($datachangeestadoanter ===false){
		return array("error"=>"Error #44 retornar_llanta_de_desecho_a_estado_anterior:".$datachangeestadoanter_erro .' '.$strsql);
	 }
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function retornar_llanta_de_desecho_a_estado_anterior ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function envia_llanta_a_desecho_lib ------*/

function envia_llanta_a_desecho_lib($la_llanta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="update pre_llantas set estado=8,
							fecha_modifica='".date('Y-m-d H:i:s')."',
							usuario_modifica='".$_SESSION['grant']['usr_login']."' 
					where numeracion=".$la_llanta;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $llantadesecho = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $llantadesecho[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $llantadesecho = false;
          $llantadesecho_erro = $this->Db->ErrorMsg();
      } 

		if ($llantadesecho ===false){
			return array("error"=>"Error #4 envia_llanta_a_desecho:".$llantadesecho_erro .' '.$strsql);
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function envia_llanta_a_desecho_lib ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function envia_llanta_a_recauche_lib ------*/

function envia_llanta_a_recauche_lib($la_llanta){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	    $strsql="delete from pre_llantas_marcar_para where id_marca=1 and id_numeracion_llanta=".$la_llanta;
	     
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $borrarmarcaparak = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $borrarmarcaparak[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $borrarmarcaparak = false;
          $borrarmarcaparak_erro = $this->Db->ErrorMsg();
      } 

	    if ($borrarmarcaparak ===false){
			return array("error"=>"Error #71 envia_llanta_a_recauche_lib:".$borrarmarcaparak_erro .' '.$strsql);
		}
		$strsql="update pre_llantas set estado=3,
							fecha_modifica='".date('Y-m-d H:i:s')."',
							usuario_modifica='".$_SESSION['grant']['usr_login']."' 
					where numeracion=".$la_llanta;
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $llantaarecaucho = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $llantaarecaucho[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $llantaarecaucho = false;
          $llantaarecaucho_erro = $this->Db->ErrorMsg();
      } 

		if ($llantaarecaucho ===false){
			return array("error"=>"Error #79 envia_llanta_a_recauche_lib:".$llantaarecaucho_erro .' '.$strsql);
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function envia_llanta_a_recauche_lib ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function color_de_la_profundidad ------*/

function color_de_la_profundidad($pf,$laub){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
	$rcol='';
	IF ($pf<=4.2){
		$rcol= '#ff6347';
	} else {
		IF($pf<=9){
		  $rcol= "#ffff00";
	  } else {
		  $rcol= '#3cb371';
	  }
	}
	
	if ($laub<>0 and 0==$pf){
		$rcol='B2FFFF';
		$pf=1;
	} 
	return array("rcol"=>$rcol,"pf"=>$pf);
	

$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function color_de_la_profundidad ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function verificar_estados_ingresos ------*/

function verificar_estados_ingresos($kk_idordendecompra){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  
		$strsql="select estado_ingreso
			 from pre_llantas_marcar_para
			 where id_orden_de_compra='".$kk_idordendecompra."'
			and estado_ingreso is null";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datadosingresos = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datadosingresos[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datadosingresos = false;
          $datadosingresos_erro = $this->Db->ErrorMsg();
      } 

		if ($datadosingresos ===false){
			return array("error"=>"Error #111 utils_llantas.verificar_estados_ingresos:".$datadosingresos_erro .' '.$strsql);
		}
		$ckuantos=count($datadosingresos );
		if ($ckuantos<>0){
			if (1==$ckuantos){
				$k='llantas';
			} else {
				$k='llanta';
			}
			return array("error"=>"Hay ".$ckuantos.' '.$k.' sin marcar estado de ingreso');
		}
		return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function verificar_estados_ingresos ------*/


/*----- Scriptcase Locale: PHP Method: utils_llantas.php => function recibir_llantas_de_recauche_lib ------*/

function recibir_llantas_de_recauche_lib($idbodega, $idordendecompra, $id_movimiento){
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'on';
  

	$msj=$this->verificar_estados_ingresos($idordendecompra);
	if ($msj['error']<>''){
		return $msj;
	}
	$strsql="delete from inv_orden_de_compra_encabezado_ingreso where id_orden_de_compra=".$idordendecompra;
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $primeroborrar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $primeroborrar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $primeroborrar = false;
          $primeroborrar_erro = $this->Db->ErrorMsg();
      } 

	if ($primeroborrar ===false){
		return array("error"=>"Error :".$primeroborrar_erro .' '.$strsql);
	}
	$strsql="insert into inv_orden_de_compra_encabezado_ingreso (id_orden_de_compra,indicador_de_ingreso)
	   values (".$idordendecompra.",1)";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $segundoingresar = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $segundoingresar[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $segundoingresar = false;
          $segundoingresar_erro = $this->Db->ErrorMsg();
      } 

	if ($segundoingresar ===false){
		return array("error"=>"Error #141 recibir_llantas_de_recauche_lib:".$segundoingresar_erro .' '.$strsql);
	}
	$strsql="SELECT b.recauche1,b.recauche2,a.id_numeracion_llanta,a.estado_ingreso,a.id_marca,ifnull(b.boleta_provedor_recauche,'N/A')
	   FROM pre_llantas_marcar_para a,
			pre_llantas b
	   WHERE a.id_numeracion_llanta=b.numeracion
		 and a.id_orden_de_compra=".$idordendecompra;
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      if ($listadellantas = $this->Db->Execute($nm_select)) 
      { }
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $listadellantas = false;
          $listadellantas_erro = $this->Db->ErrorMsg();
      } 

	if ($listadellantas ===false){
		return array("error"=>"Error #150 recibir_llantas_de_recauche_lib:".$listadellantas_erro .' '.$strsql);
	}
	while (!$listadellantas->EOF){
		$reca1=intval($listadellantas->fields[0]);
		$reca2=intval($listadellantas->fields[1]);
		$idnum=intval($listadellantas->fields[2]);
		$estado_ingreso=intval($listadellantas->fields[3]);
		$id_para=$listadellantas->fields[4];
		$boletadelprovedor=$listadellantas->fields[5];
		if (0==$estado_ingreso){
			return array("error"=>"Error #158 recibir_llantas_de_recauche_lib en numeracion :".$idnum." no tiene estado de ingreso despues de recuache");
		}
		$strsql="update pre_llantas_marcar_para set boleta_provedor='".$boletadelprovedor."' 
		         where id_marca='".$id_para."'
				   and id_numeracion_llanta='".$idnum."'";
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $datwaupd_para = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $datwaupd_para[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $datwaupd_para = false;
          $datwaupd_para_erro = $this->Db->ErrorMsg();
      } 

		if ($datwaupd_para ===false){
			return array("error"=>"Error #165 recibir_llantas_de_recauche_lib:".$datwaupd_para_erro .' '.$strsql);			
		}
		if (0==$reca1){
			$reca1=1;
			$strsql="update pre_llantas set recauche1=".$reca1.",
							estado='".$estado_ingreso."',
							bodega=".$idbodega.",
							fecha_recauche1='".date('Y-m-d H:i:s')."',
							usuario_modifica='".$_SESSION['grant']['usr_login']."',
							fecha_modifica='".date('Y-m-d H:i:s')."',
							boleta_provedor_recauche=''
			   where numeracion=".$idnum;
		} else {
			$reca2++;
			$strsql="update pre_llantas set recauche2=".$reca2.",
							estado='".$estado_ingreso."',
							bodega=".$idbodega.",
							fecha_recauche2='".date('Y-m-d H:i:s')."',
							usuario_modifica='".$_SESSION['grant']['usr_login']."',
							fecha_modifica='".date('Y-m-d H:i:s')."',
							boleta_provedor_recauche=''
			   where numeracion=".$idnum;
		}
		 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updlallantaxyz = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updlallantaxyz[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updlallantaxyz = false;
          $updlallantaxyz_erro = $this->Db->ErrorMsg();
      } 

		if ($updlallantaxyz ===false){
			return array("error"=>"Error #181 recibir_llantas_de_recauche_lib:".$updlallantaxyz_erro .' '.$strsql);
		}
		$listadellantas->MoveNext();
	}
	$listadellantas->Close();
	$strsql="update pre_llantas_movimientos_encabezado set 
					usuario_recibe='".$_SESSION['grant']['usr_login']."',
					fecha_recibe='".date('Y-m-d H:i:s')."'
			  where id=".$id_movimiento." limit 1";
	 
      $nm_select = $strsql; 
      $_SESSION['scriptcase']['sc_sql_ult_comando'] = $nm_select; 
      $_SESSION['scriptcase']['sc_sql_ult_conexao'] = ''; 
      $updplme_enca = array();
      if ($SCrx = $this->Db->Execute($nm_select)) 
      { 
          $SCy = 0; 
          $nm_count = $SCrx->FieldCount();
          while (!$SCrx->EOF)
          { 
                 for ($SCx = 0; $SCx < $nm_count; $SCx++)
                 { 
                        $updplme_enca[$SCy] [$SCx] = $SCrx->fields[$SCx];
                 }
                 $SCy++; 
                 $SCrx->MoveNext();
          } 
          $SCrx->Close();
      } 
      elseif (isset($GLOBALS["NM_ERRO_IBASE"]) && $GLOBALS["NM_ERRO_IBASE"] != 1)  
      { 
          $updplme_enca = false;
          $updplme_enca_erro = $this->Db->ErrorMsg();
      } 

	if ($updplme_enca ===false){
		return array("error"=>"Error #192 recibir_llantas_de_recauche_lib recibir_llantas_de_recauche ".$updplme_enca_erro .' '.$strsql);
	}	
	return array("error"=>"");
$_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
}

/*----- END - Scriptcase Locale: PHP Method: utils_llantas.php => function recibir_llantas_de_recauche_lib ------*/

   function nmgp_redireciona_form($nm_apl_dest, $nm_apl_retorno, $nm_apl_parms, $nm_target="", $alt_modal=0, $larg_modal=0, $opc="")
   {
      if (is_array($nm_apl_parms))
      {
          $tmp_parms = "";
          foreach ($nm_apl_parms as $par => $val)
          {
              $par = trim($par);
              $val = trim($val);
              $tmp_parms .= str_replace(".", "_", $par) . "?#?";
              if (substr($val, 0, 1) == "$")
              {
                  $tmp_parms .= $$val;
              }
              elseif (substr($val, 0, 1) == "{")
              {
                  $val        = substr($val, 1, -1);
                  $tmp_parms .= $this->$val;
              }
              elseif (substr($val, 0, 1) == "[")
              {
                  $tmp_parms .= $_SESSION['sc_session'][$this->Ini->sc_page]['funciones_generales'][substr($val, 1, -1)];
              }
              else
              {
                  $tmp_parms .= $val;
              }
              $tmp_parms .= "?@?";
          }
          $nm_apl_parms = $tmp_parms;
      }
      $target = (empty($nm_target)) ? "_self" : $nm_target;
      if (strtolower(substr($nm_apl_dest, -4)) != ".php" && (strtolower(substr($nm_apl_dest, 0, 7)) == "http://" || strtolower(substr($nm_apl_dest, 0, 8)) == "https://" || strtolower(substr($nm_apl_dest, 0, 3)) == "../"))
      {
          echo "<SCRIPT language=\"javascript\">";
          if (strtolower($target) == "_blank")
          {
              echo "window.open ('" . $nm_apl_dest . "');";
          }
          else
          {
              echo "window.location='" . $nm_apl_dest . "';";
          }
          echo "</SCRIPT>";
          exit;
      }
      $dir = explode("/", $nm_apl_dest);
      if (count($dir) == 1)
      {
          $nm_apl_dest = str_replace(".php", "", $nm_apl_dest);
          $nm_apl_dest = $this->Ini->path_link . SC_dir_app_name($nm_apl_dest) . "/" . $nm_apl_dest . ".php";
      }
      if ($nm_target == "modal")
      {
          if (!empty($nm_apl_parms))
          {
              $nm_apl_parms = str_replace("?#?", "*scin", $nm_apl_parms);
              $nm_apl_parms = str_replace("?@?", "*scout", $nm_apl_parms);
              $nm_apl_parms = "nmgp_parms=" . $nm_apl_parms . "&";
          }
          $par_modal = "?script_case_init=" . NM_encode_input($this->Ini->sc_page) . "&nmgp_outra_jan=true&nmgp_url_saida=modal&NMSC_modal=ok&";
          $this->redir_modal = "$(function() { tb_show('', '" . $nm_apl_dest . $par_modal . $nm_apl_parms . "TB_iframe=true&modal=true&height=" . $alt_modal . "&width=" . $larg_modal . "', '') })";
          return;
      }
      if (isset($_SESSION['sc_session'][$this->Ini->sc_page]['funciones_generales']['iframe_print']) && $_SESSION['sc_session'][$this->Ini->sc_page]['funciones_generales']['iframe_print'] )
      {
          $target = "_parent";
      }
   ?>
<!DOCTYPE html>
      <HTML>
      <HEAD>
      <META http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION['scriptcase']['charset_html'] ?>" />
<?php
      if ($_SESSION['scriptcase']['proc_mobile'])
      {
?>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<?php
      }
?>
       <META http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT"/>
       <META http-equiv="Last-Modified" content="<?php echo gmdate("D, d M Y H:i:s"); ?> GMT"/>
       <META http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate"/>
       <META http-equiv="Pragma" content="no-cache"/>
       <link rel="shortcut icon" href="../_lib/img/grp__NM__bg__NM__grant_logo_peq (1).jpg">
      </HEAD>
      <BODY>
   <form name="Fredir" method="post" 
                     target="_self"> 
     <input type="hidden" name="nmgp_parms" value="<?php echo NM_encode_input($nm_apl_parms) ?>"/>
<?php
   if ($target == "_blank")
   {
?>
       <input type="hidden" name="nmgp_outra_jan" value="true"/> 
<?php
   }
   else
   {
?>
     <input type="hidden" name="nmgp_url_saida" value="<?php echo NM_encode_input($nm_apl_retorno) ?>">
     <input type="hidden" name="script_case_init" value="<?php echo NM_encode_input($this->Ini->sc_page) ?>"/> 
<?php
   }
?>
   </form> 
      <SCRIPT language="javascript">
          window.onload = function(){
             submit_Fredir();
          };
          function submit_Fredir()
          {
              document.Fredir.target = "<?php echo $target ?>"; 
              document.Fredir.action = "<?php echo $nm_apl_dest ?>";
              document.Fredir.submit();
          }
      </SCRIPT>
      </BODY>
      </HTML>
   <?php
      if ($target != "_blank")
      {
          exit;
      }
   }
   function nm_conv_data_db($dt_in, $form_in, $form_out)
   {
       $dt_out = $dt_in;
       if (strtoupper($form_in) == "DB_FORMAT") {
           if ($dt_out == "null" || $dt_out == "")
           {
               $dt_out = "";
               return $dt_out;
           }
           $form_in = "AAAA-MM-DD";
       }
       if (strtoupper($form_out) == "DB_FORMAT") {
           if (empty($dt_out))
           {
               $dt_out = "null";
               return $dt_out;
           }
           $form_out = "AAAA-MM-DD";
       }
       if (strtoupper($form_out) == "SC_FORMAT_REGION") {
           $this->nm_data->SetaData($dt_in, strtoupper($form_in));
           $prep_out  = (strpos(strtolower($form_in), "dd") !== false) ? "dd" : "";
           $prep_out .= (strpos(strtolower($form_in), "mm") !== false) ? "mm" : "";
           $prep_out .= (strpos(strtolower($form_in), "aa") !== false) ? "aaaa" : "";
           $prep_out .= (strpos(strtolower($form_in), "yy") !== false) ? "aaaa" : "";
           return $this->nm_data->FormataSaida($this->nm_data->FormatRegion("DT", $prep_out));
       }
       else {
           nm_conv_form_data($dt_out, $form_in, $form_out);
           return $dt_out;
       }
   }
} 
// 
//======= =========================
   if (!function_exists("NM_is_utf8"))
   {
       include_once("../_lib/lib/php/nm_utf8.php");
   }
   if (!function_exists("SC_dir_app_ini"))
   {
       include_once("../_lib/lib/php/nm_ctrl_app_name.php");
   }
   SC_dir_app_ini('Grant');
   $_SESSION['scriptcase']['funciones_generales']['contr_erro'] = 'off';
   $Sc_lig_md5 = false;
   $Sem_Session = (!isset($_SESSION['sc_session'])) ? true : false;
   $_SESSION['scriptcase']['sem_session'] = false;
   if (!empty($_POST))
   {
       foreach ($_POST as $nmgp_var => $nmgp_val)
       {
            if (substr($nmgp_var, 0, 11) == "SC_glo_par_")
            {
                $nmgp_var = substr($nmgp_var, 11);
                $nmgp_val = $_SESSION[$nmgp_val];
            }
            if ($nmgp_var == "nmgp_parms" && substr($nmgp_val, 0, 8) == "@SC_par@")
            {
                $SC_Ind_Val = explode("@SC_par@", $nmgp_val);
                 if (count($SC_Ind_Val) == 4 && isset($_SESSION['sc_session'][$SC_Ind_Val[1]][$SC_Ind_Val[2]]['Lig_Md5'][$SC_Ind_Val[3]]))
                 {
                     $nmgp_val = $_SESSION['sc_session'][$SC_Ind_Val[1]][$SC_Ind_Val[2]]['Lig_Md5'][$SC_Ind_Val[3]];
                     $Sc_lig_md5 = true;
                 }
                 else
                 {
                     $_SESSION['sc_session']['SC_parm_violation'] = true;
                 }
            }
            nm_limpa_str_funciones_generales($nmgp_val);
            $nmgp_val = NM_decode_input($nmgp_val);
            $$nmgp_var = $nmgp_val;
       }
   }
   if (!empty($_GET))
   {
       foreach ($_GET as $nmgp_var => $nmgp_val)
       {
            if (substr($nmgp_var, 0, 11) == "SC_glo_par_")
            {
                $nmgp_var = substr($nmgp_var, 11);
                $nmgp_val = $_SESSION[$nmgp_val];
            }
            if ($nmgp_var == "nmgp_parms" && substr($nmgp_val, 0, 8) == "@SC_par@")
            {
                $SC_Ind_Val = explode("@SC_par@", $nmgp_val);
                 if (count($SC_Ind_Val) == 4 && isset($_SESSION['sc_session'][$SC_Ind_Val[1]][$SC_Ind_Val[2]]['Lig_Md5'][$SC_Ind_Val[3]]))
                 {
                     $nmgp_val = $_SESSION['sc_session'][$SC_Ind_Val[1]][$SC_Ind_Val[2]]['Lig_Md5'][$SC_Ind_Val[3]];
                     $Sc_lig_md5 = true;
                 }
                 else
                 {
                     $_SESSION['sc_session']['SC_parm_violation'] = true;
                 }
            }
            nm_limpa_str_funciones_generales($nmgp_val);
            $nmgp_val = NM_decode_input($nmgp_val);
            $$nmgp_var = $nmgp_val;
       }
   }
   if (!isset($_SERVER['HTTP_REFERER']) || (!isset($nmgp_parms) && !isset($script_case_init) && !isset($nmgp_start) ))
   {
       $Sem_Session = false;
   }
   $NM_dir_atual = getcwd();
   if (empty($NM_dir_atual)) {
       $str_path_sys  = (isset($_SERVER['SCRIPT_FILENAME'])) ? $_SERVER['SCRIPT_FILENAME'] : $_SERVER['ORIG_PATH_TRANSLATED'];
       $str_path_sys  = str_replace("\\", '/', $str_path_sys);
   }
   else {
       $sc_nm_arquivo = explode("/", $_SERVER['PHP_SELF']);
       $str_path_sys  = str_replace("\\", "/", getcwd()) . "/" . $sc_nm_arquivo[count($sc_nm_arquivo)-1];
   }
   $str_path_web    = $_SERVER['PHP_SELF'];
   $str_path_web    = str_replace("\\", '/', $str_path_web);
   $str_path_web    = str_replace('//', '/', $str_path_web);
   $path_aplicacao  = substr($str_path_web, 0, strrpos($str_path_web, '/'));
   $path_aplicacao  = substr($path_aplicacao, 0, strrpos($path_aplicacao, '/'));
   $root            = substr($str_path_sys, 0, -1 * strlen($str_path_web));
   if ($Sem_Session && (!isset($nmgp_start) || $nmgp_start != "SC")) {
       if (isset($_COOKIE['sc_apl_default_Grant'])) {
           $apl_def = explode(",", $_COOKIE['sc_apl_default_Grant']);
       }
       elseif (is_file($root . $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp'] . "/sc_apl_default_Grant.txt")) {
           $apl_def = explode(",", file_get_contents($root . $_SESSION['scriptcase']['funciones_generales']['glo_nm_path_imag_temp'] . "/sc_apl_default_Grant.txt"));
       }
       if (isset($apl_def)) {
           if ($apl_def[0] != "funciones_generales") {
               $_SESSION['scriptcase']['sem_session'] = true;
               if (strtolower(substr($apl_def[0], 0 , 7)) == "http://" || strtolower(substr($apl_def[0], 0 , 8)) == "https://" || substr($apl_def[0], 0 , 2) == "..") {
                   $_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir'] = $apl_def[0];
               }
               else {
                   $_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir'] = $path_aplicacao . "/" . SC_dir_app_name($apl_def[0]) . "/index.php";
               }
               $Redir_tp = (isset($apl_def[1])) ? trim(strtoupper($apl_def[1])) : "";
               $_SESSION['scriptcase']['funciones_generales']['session_timeout']['redir_tp'] = $Redir_tp;
           }
           if (isset($_COOKIE['sc_actual_lang_Grant'])) {
               $_SESSION['scriptcase']['funciones_generales']['session_timeout']['lang'] = $_COOKIE['sc_actual_lang_Grant'];
           }
       }
   }
   if (isset($SC_lig_apl_orig) && !$Sc_lig_md5 && (!isset($nmgp_parms) || ($nmgp_parms != "SC_null" && substr($nmgp_parms, 0, 8) != "OrScLink")))
   {
       $_SESSION['sc_session']['SC_parm_violation'] = true;
   }
   if (!empty($glo_perfil))  
   { 
      $_SESSION['scriptcase']['glo_perfil'] = $glo_perfil;
   }   
   if (isset($glo_servidor)) 
   {
       $_SESSION['scriptcase']['glo_servidor'] = $glo_servidor;
   }
   if (isset($glo_banco)) 
   {
       $_SESSION['scriptcase']['glo_banco'] = $glo_banco;
   }
   if (isset($glo_tpbanco)) 
   {
       $_SESSION['scriptcase']['glo_tpbanco'] = $glo_tpbanco;
   }
   if (isset($glo_usuario)) 
   {
       $_SESSION['scriptcase']['glo_usuario'] = $glo_usuario;
   }
   if (isset($glo_senha)) 
   {
       $_SESSION['scriptcase']['glo_senha'] = $glo_senha;
   }
   if (isset($glo_senha_protect)) 
   {
       $_SESSION['scriptcase']['glo_senha_protect'] = $glo_senha_protect;
   }
   if (isset($nmgp_outra_jan) && $nmgp_outra_jan == 'true')
   {
       $script_case_init = "";
   }
   if (!isset($script_case_init) || empty($script_case_init))
   {
       $script_case_init = rand(2, 10000);
   }
   $salva_iframe = false;
   if (isset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu']))
   {
       $salva_iframe = $_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'];
       unset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu']);
   }
   if (isset($nm_run_menu) && $nm_run_menu == 1)
   {
        if (isset($_SESSION['scriptcase']['sc_aba_iframe']) && isset($_SESSION['scriptcase']['sc_apl_menu_atual']))
        {
            foreach ($_SESSION['scriptcase']['sc_aba_iframe'] as $aba => $apls_aba)
            {
                if ($aba == $_SESSION['scriptcase']['sc_apl_menu_atual'])
                {
                    unset($_SESSION['scriptcase']['sc_aba_iframe'][$aba]);
                    break;
                }
            }
        }
        $_SESSION['scriptcase']['sc_apl_menu_atual'] = "funciones_generales";
        $achou = false;
        if (isset($_SESSION['sc_session'][$script_case_init]))
        {
            foreach ($_SESSION['sc_session'][$script_case_init] as $nome_apl => $resto)
            {
                if ($nome_apl == 'funciones_generales' || $achou)
                {
                    unset($_SESSION['sc_session'][$script_case_init][$nome_apl]);
                    if (!empty($_SESSION['sc_session'][$script_case_init][$nome_apl]))
                    {
                        $achou = true;
                    }
                }
            }
            if (!$achou && isset($nm_apl_menu))
            {
                foreach ($_SESSION['sc_session'][$script_case_init] as $nome_apl => $resto)
                {
                    if ($nome_apl == $nm_apl_menu || $achou)
                    {
                        $achou = true;
                        if ($nome_apl != $nm_apl_menu)
                        {
                            unset($_SESSION['sc_session'][$script_case_init][$nome_apl]);
                        }
                    }
                }
            }
        }
        $_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'] = true;
   }
   else
   {
       $_SESSION['sc_session'][$script_case_init]['funciones_generales']['iframe_menu'] = $salva_iframe;
   }

   if (!isset($_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize']))
   {
       $_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize'] = true;
   }
   elseif (!isset($_SERVER['HTTP_REFERER']))
   {
       $_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize'] = false;
   }
   elseif (false === strpos($_SERVER['HTTP_REFERER'], '.php'))
   {
       $_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize'] = true;
   }
   else
   {
       $sReferer = substr($_SERVER['HTTP_REFERER'], 0, strpos($_SERVER['HTTP_REFERER'], '.php'));
       $sReferer = substr($sReferer, strrpos($sReferer, '/') + 1);
       if ('funciones_generales' == $sReferer || 'funciones_generales_' == substr($sReferer, 0, 20))
       {
           $_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize'] = false;
       }
       else
       {
           $_SESSION['sc_session'][$script_case_init]['funciones_generales']['initialize'] = true;
       }
   }

   $_POST['script_case_init'] = $script_case_init;
   if (isset($_SESSION['scriptcase']['sc_outra_jan']) && $_SESSION['scriptcase']['sc_outra_jan'] == 'funciones_generales')
   {
       $_SESSION['sc_session'][$script_case_init]['funciones_generales']['sc_outra_jan'] = true;
        unset($_SESSION['scriptcase']['sc_outra_jan']);
   }
   $_SESSION['sc_session'][$script_case_init]['funciones_generales']['menu_desenv'] = false;   
   if (!defined("SC_ERROR_HANDLER"))
   {
       define("SC_ERROR_HANDLER", 1);
       include_once(dirname(__FILE__) . "/funciones_generales_erro.php");
   }
   if (!empty($nmgp_parms)) 
   { 
       $nmgp_parms = str_replace("@aspass@", "'", $nmgp_parms);
       $nmgp_parms = str_replace("*scout", "?@?", $nmgp_parms);
       $nmgp_parms = str_replace("*scin", "?#?", $nmgp_parms);
       $todox = str_replace("?#?@?@?", "?#?@ ?@?", $nmgp_parms);
       $todo  = explode("?@?", $todox);
       $ix = 0;
       while (!empty($todo[$ix]))
       {
            $cadapar = explode("?#?", $todo[$ix]);
            if (1 < sizeof($cadapar))
            {
                if (substr($cadapar[0], 0, 11) == "SC_glo_par_")
                {
                    $cadapar[0] = substr($cadapar[0], 11);
                    $cadapar[1] = $_SESSION[$cadapar[1]];
                }
                nm_limpa_str_funciones_generales($cadapar[1]);
                if ($cadapar[1] == "@ ") {$cadapar[1] = trim($cadapar[1]); }
                $Tmp_par   = $cadapar[0];;
                $$Tmp_par = $cadapar[1];
            }
            $ix++;
       }
   } 
   $GLOBALS["NM_ERRO_IBASE"] = 0;  
   $contr_funciones_generales = new funciones_generales_apl();
   $contr_funciones_generales->controle();
//
   function nm_limpa_str_funciones_generales(&$str)
   {
   }
?>
