<?php
$bDir_Consult = CondPrivilegio(@$s_DireitosLst, $sNomeAcesso, 'V');
$sNomeIdJPrin = "iJan_App_Licenca";
$sCorBarraInf = '#E8E3CE';
$sURL_Ent_Api = SQLVarConfig('APP_ENTREGAS_URL_API');
$nCodigo_Empr = (@$Dados_Empresa['EMP_CODIGO']+0);
//
//$sURL_Ent_Api = 'http://demo.simsoft.com.br/entregas/';
//$sURL_Ent_Api = 'http://192.168.0.152:85/api_eEntregas/';
//$sURL_Ent_Api = 'http://192.168.0.153:8585/eEntregas_API/';
//
//  ** PRINCIPAL **
If ( EMPTY($sSubModulo) ) {
  // Criar objeto Janela
  $oJan = New R_Janela();
  $oJan->sIdObj  = $sNomeIdJPrin;
  $oJan->nWidth  = 820;   // Largura
  $oJan->nHeight = 0;     // Altura
  $oJan->nTop    = 10;
  $oJan->nLeft   = 0;
  $oJan->nLeft  += ($nTela_W/2)-($oJan->nWidth/2);
  $oJan->sTitulo = 'Gerenciamento do Aplicativo e-Entregas';
  $oJan->sJavKeyDown = "return Car_".$sNomeAcesso."1.Teclas_F(this,event);";
  //
  $sJavaTravarJ =
    "parent.document.getElementById('".$oJan->sIdObj."_Travar').style.visibility='visible';".
    "parent.Disabled_In_Elems('".$oJan->sIdObj."',true);".
    "";
  $sJavaDesTravarJ =
    "parent.document.getElementById('".$oJan->sIdObj."_Travar').style.visibility='hidden';".
    "parent.Disabled_In_Elems('".$oJan->sIdObj."',false);".
    "";
  $oJan->sJavOnClickF = 
    $sJavaTravarJ.
  	"parent.document.forms.fmPApp_Ent.acao.value='FECHAR';".
  	"parent.document.forms.fmPApp_Ent.submod.value='';".
  	"parent.document.forms.fmPApp_Ent.submit();".
  	"";
  $oJan->aIdsObjList = [ 'in_EntApp_Tecla' ];
  //
  // >> Inicial
  If ( EMPTY($sAcao) ) {
    //
    $sHTML_WaitMsg =
      '<table style="width:100%; height:100%;">'.
       '<tr>'.
        '<td align="center" valign="middle">'.
          '<div class="loader" title="0">'.
           '<style type="text/css">'.
            '.loader {'.
              'margin: 0 0 0;'.
              'height: 140px;'.
              'width: 140px;'.
              'text-align: center;'.
              'padding: 10px;'.
              'display: inline-block;'.
              'vertical-align: top;'.
            '}'.
            'svg path,'.
            'svg rect {'.
              'fill: #FF6700;'.
            '}'.
           '</style>'.
           '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" '.
                 'width="140px" height="140px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">'.
           '<path opacity="0.2" fill="#000" '.
                 'd="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946'.
                    's14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634'.
                    'c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"'.
           '/>'.
           '<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0'.
                                'C22.32,8.481,24.301,9.057,26.013,10.047z">'.
             '<animateTransform attributeType="xml"'.
               'attributeName="transform"'.
               'type="rotate"'.
               'from="0 20 20"'.
               'to="360 20 20"'.
               'dur="0.8s"'.
               'repeatCount="indefinite"'.
             '/>'.
            '</path>'.
           '</svg>'.
          '</div>'.
          '<br>'.
          '<span id="Spn_Waiting_M" style="position:relative; left:12px; color:#FF6700; font-weight:bold; font-size:20px;">'.
           'Aguarde...'.
          '</span>'.
        '</td>'.
       '</tr>'.
      '</table>';
    //
    $sRet_TelaJ_HTML =
      $oJan->MontaJanHTML(True).
      '<input id="in_EntApp_Tecla" style="position:absolute; top:-600px; left:-600px; width:1px; height:1px;">'.
      '<form name="fmPApp_Ent" accept-charset="utf-8" method="post" action="./car_js.php" target="car_'.$sNomeAcesso.'2">'.
       '<input name="mod" type="hidden" value="'.$sModulo.'">'.
       '<input name="submod" type="hidden" value="'.$sSubModulo.'">'.
       '<input name="acao" type="hidden" value="">'.
       '<input name="nomeacs" type="hidden" value="'.$sNomeAcesso.'">'.
      '</form>'.
      '<div style="height:5px;"></div>'.
      //
       MontarGuiasHTML('Guias_AppEnt', "width:100%",
        '** [{Terminais;1}] **'.
         '<div id="dv_App_Ent_ListaTrm" align="center" style="width:100%; height:380px; background:#FFFFFF; overflow:auto;">'.
         '</div>'.
        '** {[FIM]} **'.
        //
        '** [{Entregadores;2}] **'.
         '<div id="dv_App_Ent_ListaEnt" align="center" style="width:100%; height:380px; background:#FFFFFF; overflow:auto;">'.
         '</div>'.
        '** {[FIM]} **'
        //
	    ,
	    'Car_'.$sNomeAcesso.'1.Mudar_Guia( <COD_GUIA> );'.
        ''
       ).
      //
      '<div style="height:2px;"></div>'.
      '<table width="100%">'.
       '<tr>'.
        '<td width="8px" height="38px"></td>'.
        '<td>'.
         '<span id="sp_APPEnt_MensagemBar" '.
            'style="font-size:12px; font-weight:bold; font-family: Verdana; color:#444444;"'.
         '>'.
         '</span>'.
        '</td>'.
        '<td width="8px"></td>'.
       '</tr>'.
      '</table>'.
      '<div style="height:2px;"></div>'.
      //
      '<table width="100%" style="background-color:'.$sCorBarraInf.';">'.
       '<tr>'.
        '<td width="8px" height="38px"></td>'.
        '<td align="left">'.
         HTML_Botao( 3, 'APPEnt_BT_Carga_Ent', 'Car_'.$sNomeAcesso.'1.Subir_Entregadores();'
                      , 'Enviar Entregadores' ,'images/btimg_atualizar.png' , 160).
        '</td>'.
        '<td width="125px" align="right">'.
         HTML_Botao( 3, 'APPEnt_BT_Fec', $oJan->sJavOnClickF
                      , 'Sair (ESC)' ,'images/btimg_fechar.png').
        '</td>'.
        '<td width="8px"></td>'.
       '</tr>'.
      '</table>'.
      $oJan->MontaJanHTML(False);
    //
    // Java inicial
    $sRet_Javs .=
      "parent.document.getElementById('dv_MenuL_Barra').style.visibility='hidden';".
      "var sHTML_WaitMsg = ".JAVA_CharCode_Mini($sHTML_WaitMsg)." ;".
      "var oLista_Trm_Altera = [];".
      //
      "function Comunicar_HTTP( ofrmDados, fFnc_Concluido, fFnc_Always ) {".
       "var RequisicaoHTTP = ". 
         "$.ajax( { ".
           "url:         './car_js.php',".                         // Endereço de comunicação
           "type:        'POST',".                                 // Método postagem
           "data:        ofrmDados,".                              // Dados de postagem
           "processData: true,".                                   // Preparar dados para enviar *
           "contentType: 'application/x-www-form-urlencoded; charset=utf-8',".   // Formato dos dados á enviar
           "timeout:     120000,".                                 // Tempo de espera em milisegundos (2 minutos)
           "cache:       false,".                                  // Não guardar em cache
           "beforeSend: ".
             "function () { ".
               // Quando inicia a requisição
             "}".
         "}".
        ");".
        "RequisicaoHTTP.done(".
          "function (vResposta) {".
            "if ( fFnc_Concluido != undefined ) {".
              'fFnc_Concluido(vResposta);'.
            "}".
          "}".
        ");".
        //"RequisicaoHTTP.fail(".
        //  "function (oResposta, textStatus, errorThrown) {".
        //    // Quando houver erro
        //  "}".
        //");".
        "RequisicaoHTTP.always( ".
          "function (vResposta, sStatus, jqXHR) {".
            "if ( fFnc_Always != undefined ) {".
              'fFnc_Always(sStatus, vResposta);'.
            "}".
            // Quando terminar
            //"console.log( sStatus );".
          "}".
        ");".
        //
      "}".
      //
      "function Alterar_Status_Trm( oItem ) {".
        "var sId = oItem.id;".
        "var oItem_Tela = parent.$('#'+sId);".
        "var bAutorizado = oItem_Tela.hasClass('dv_Trm_Status_A');".
        "var nCod_Trm = parseInt( sId.substr(11) );".
        "if ( oItem_Tela.hasClass('dv_Trm_Status_P') ) { return; }".
        "oLista_Trm_Altera[ nCod_Trm ] = ( bAutorizado ? 0 : 1 );".
        //"console.log( oLista_Trm_Altera );".
        //"console.log( bAutorizado );".
        "oItem_Tela.removeClass('dv_Trm_Status_A');".
        "oItem_Tela.removeClass('dv_Trm_Status_D');".
        "oItem_Tela.addClass('dv_Trm_Status_P');".
        "oItem_Tela.attr('title', ( bAutorizado ? 'Pendente para remover autorização' : 'Pendente para autorizar.' ) );".
        "nContador_Salvar_Trm = 2;".
      "}".
      //
      "var nContador_Salvar_Trm = 20;".
      "function Salvar_Status_Trm() {".
        "if ( nContador_Salvar_Trm < 1 ) {".
          "if ( oLista_Trm_Altera.length > 0 ) {".
            "sp_App_Ent_Msg_Bar.html('Salvando alterações dos terminais...');".
            "var oLista_Trm = {};".
            "oLista_Trm_Altera.forEach(".
              "function(sItem, nIndice) {".
                "oLista_Trm[''+nIndice] = sItem;".
              "}".
            ");".
            "var oForm_Req = { mod : '".$sModulo."', submod : '".$sSubModulo."', nomeacs : '".$sNomeAcesso."', acao : 'ALTERAR_STATUS_TRM', Terminais : oLista_Trm } ;".
            "Comunicar_HTTP( oForm_Req,".
              "function ( vResposta ) {".
                //"console.log(vResposta);".
                "if ( vResposta['Sucesso'] ) {".
                  "var oTerminais = vResposta['Terminais'];".
                  "var oQtdAtivado = parent.$('#sp_APPEnt_QtdAtivado');".
                  "var nQtdAtivado = parseInt( '0'+oQtdAtivado.html() );".
                  "var sMsg_Bar = '';".
                  "Object.keys( oTerminais ).map(".
                    "function(vIndice) {".
                      "var oItem_Tela = parent.$('#Trm_Status_'+vIndice);".
                      "var sMsg_Bar_Item = '';".
                      "oItem_Tela.removeClass('dv_Trm_Status_P');".
                      "if ( oTerminais[vIndice]=='1' ) {".
                         "oItem_Tela.addClass('dv_Trm_Status_A');".
                         "oItem_Tela.attr('title', 'Terminal autorizado' );".
                         "sMsg_Bar_Item = vIndice+' = <span style=\"color:#0FCB00\">Autorizado</span>';".
                         "nQtdAtivado++;".
                      "} else {".
                         "oItem_Tela.addClass('dv_Trm_Status_D');".
                         "oItem_Tela.attr('title', 'Terminal não autorizado' );".
                         "sMsg_Bar_Item = vIndice+' = <span style=\"color:#B71900\">Bloqueado</span>';".
                         "nQtdAtivado--;".
                      "}".
                      "sMsg_Bar += ( sMsg_Bar.length > 0 ? ', ' : '' )+sMsg_Bar_Item".
                    "}".
                  ");".
                  "oQtdAtivado.html( nQtdAtivado );".
                  "parent.Alerta_Simples( 'Terminais alterados:<br>'+sMsg_Bar, 0, 'Terminais do e-Entregas');".
                  "sp_App_Ent_Msg_Bar.html('Terminais alterados: '+sMsg_Bar);".
                  //
                "} else {".
                  "sp_App_Ent_Msg_Bar.html( '<span style=\"color:#B71900\">Erro ao salvar os terminais: '+vResposta['MsgErro']+'</span>' );".
                  "parent.Alerta_Simples( vResposta['MsgErro'], 1, 'Terminais do e-Entregas');".
                  "Puxar_Terminais();".
                "}".
              "}".
            ");".
            "nContador_Salvar_Trm = 120;".
            "oLista_Trm_Altera = [];".
          "} else {".
            "nContador_Salvar_Trm = 20;".
          "}".
        "} else {".
          "nContador_Salvar_Trm--;".
        "}".
        "setTimeout( 'Salvar_Status_Trm();' , 500 );".
      "}".
      "Salvar_Status_Trm();".
      "Puxar_Entregadores();".
      //
      "function Puxar_Terminais() {".
        "var oForm_Req = { mod : '".$sModulo."', submod : '".$sSubModulo."', nomeacs : '".$sNomeAcesso."', acao : 'CAPTURAR_TERMINAIS' } ;".
        "Comunicar_HTTP( oForm_Req,".
          "function ( vResposta ) {".
            //"console.log(vResposta);".
            "if ( typeof vResposta.MsgErro == 'string' ) {".
              "parent.Alerta_Simples( vResposta.MsgErro, 2, 'Gerenciamento e-Entregas');".
              $oJan->sJavOnClickF.
            "} else {".
              "dv_App_Ent_ListaTrm.html( vResposta.HTML_Retorno );".
            "}".
          "}".
        ");".
      "}".
      //
      "function Puxar_Entregadores() {".
        "var oForm_Req = { mod : '".$sModulo."', submod : '".$sSubModulo."', nomeacs : '".$sNomeAcesso."', acao : 'PUXAR_ENTREGADORES' } ;".
        "Comunicar_HTTP( oForm_Req,".
          "function ( vResposta ) {".
            //"console.log(vResposta);".
            "dv_App_Ent_ListaEnt.html( vResposta.HTML_Retorno );".
          "}".
        ");".
      "}".
      //
      "function Subir_Entregadores() {".
        "parent.JanEspera( true, 'Subindo e atualizando cadastro de entregadores...');".
        "sp_App_Ent_Msg_Bar.html('Subindo e atualizando cadastro de entregadores...');".
        "var oForm_Req = { mod : '".$sModulo."', submod : '".$sSubModulo."', nomeacs : '".$sNomeAcesso."', acao : 'SUBIR_ENTREGADORES' } ;".
        "Comunicar_HTTP( oForm_Req,".
          "function ( vResposta ) {".
            //"console.log(vResposta);".
            "sp_App_Ent_Msg_Bar.html('Cadastro de entregadores atualizado.');".
            "parent.JanEspera( false, '');".
          "}".
        ");".
      "}".
      //
      "function Mudar_Guia( nOpcao ) {".
        "parent.document.getElementById('APPEnt_BT_Carga_Ent').style.display='none';".
        "if ".    "( nOpcao == 1 ) {".
          "Puxar_Terminais();".
        "} else if ( nOpcao == 2 ) {".
          "Puxar_Entregadores();".
          "parent.document.getElementById('APPEnt_BT_Carga_Ent').style.display='inline-block';".
        "}".
      "}".
      //
 	  "";
    // Java posterior
    $sRet_JavsPos .=
	  "var FmH = parent.document.forms['fmPApp_Ent'];".
      "var dv_App_Ent_ListaEnt = parent.$('#dv_App_Ent_ListaEnt');".
      "var dv_App_Ent_ListaTrm = parent.$('#dv_App_Ent_ListaTrm');".
      "var sp_App_Ent_Msg_Bar = parent.$('#sp_APPEnt_MensagemBar');".
      //
      "parent.document.getElementById('".$oJan->aIdsObjList[0]."').focus();".
      "parent.document.getElementById('APPEnt_BT_Carga_Ent').style.display='none';".
      "dv_App_Ent_ListaTrm.html( sHTML_WaitMsg );".
      "Puxar_Terminais();".
      //
      // teclas da janela
      "function Teclas_F( Objeto, Evento ) {".
         "vNumTecla = parent.Tecla_Apertada(Evento);".
         "if ( vNumTecla==116) { ".           //  ** [F5] **       Não atualizar
            //
         "} else if ( vNumTecla==27) { ".     //  ** [ESC] **      (SAIR)
            "setTimeout( function () { ".$oJan->sJavOnClickF." } , 10);".
         "} else {".
           "P_TeclasPress_fm(Evento);".
           "return true;".
         "}".
         "return false;".
      "}".
      "";
    //
  //
  // >> Capturar e montar os terminais registrados em HTML
  } ElseIf ( $sAcao=="CAPTURAR_TERMINAIS" ) {
    SESSION_WRITE_CLOSE();    // Encerra a sessão
    SET_TIME_LIMIT(120);      // Tempo limite de 2 minutos
    //
    $aRetornoDados = [];
    $a_Dados_Retrn = [];
    If ( EMPTY($sURL_Ent_Api) ) {
       $aRetornoDados['MsgErro'] = 'URL da comunicação da API está vazia.';
       //
    } Else {
      $a_Dados_Post =
        [ "Cmd"            => "SRV_PUXAR.TERMINAIS" ,
          "CODIGO_EMPRESA" => $nCodigo_Empr
        ];
      $a_Dados_HTTP = ComunicaUrl( $sURL_Ent_Api, $a_Dados_Post, True, 60 );
      If ( (@$a_Dados_HTTP[1]+0) == 200 ) {
         $a_Dados_Retrn = @json_decode( $a_Dados_HTTP[0], True );
      } Else {
         $aRetornoDados['MsgErro'] = 'Erro na comunicação (HTTP '.(@$a_Dados_HTTP[1]+0).')';
      }
    }
    //
    $nQtdMax_Autorizada = @$a_Dados_Retrn['QTD_MAXIMA_AUTORIZADA']+0;
    $sToken_Empresa     = @$a_Dados_Retrn['CHAVE_EMPRESA'];
    $aLista_Terminais   = @$a_Dados_Retrn['TERMINAIS'];
    If ( $nQtdMax_Autorizada > 0 ) {
      //
      $aCad_Operadores = [];
      $rCad_Operadores = MYSQL_QUERY( 'SELECT * FROM cad_funcionario;' ) or die (mysql_error());
      While ( $aCad_Item = mysql_fetch_array( $rCad_Operadores, MYSQL_ASSOC) ) {
        $vIndice = $aCad_Item['FUN_CODIGO']+0;
        $aCad_Operadores[$vIndice] = $aCad_Item;
      }
      UNSET( $rCad_Operadores );
      //
      $sHTML_Retorno = '';
      $nQtdTrm_Autorizada = 0;
      ForEach ( $aLista_Terminais As $aItem_Terminal ) {
        $bAutorizado = ( ! EMPTY( $aItem_Terminal['Autorizado'] ) );
        If ( $bAutorizado ) {  $nQtdTrm_Autorizada++;  }
        $sColuna_Operador = '';
        If ( (@$aItem_Terminal['Codigo_Operador']+0) > 0 ) {
           $sNome_Operador = @$aCad_Operadores[$aItem_Terminal['Codigo_Operador']]['FUN_NOMECP'];
           If ( EMPTY( $sNome_Operador ) ) {
             $sColuna_Operador = 'Entregador desconhecido';
           } Else {
             $sColuna_Operador = 
               Str_Zero( $aItem_Terminal['Codigo_Operador'], 4).
               ' - '.
               $aCad_Operadores[$aItem_Terminal['Codigo_Operador']]['FUN_NOMECP'];
           }
        }
        $sHTML_Retorno .=
          '<tr class="Tb_Lista_Trm_Itens">'.
           '<td valign="middle">'.
            '<div id="Trm_Status_'.$aItem_Terminal['Codigo'].'" onclick="Car_'.$sNomeAcesso.'1.Alterar_Status_Trm(this);" '.
             ( $bAutorizado ?
              'class="dv_Trm_Status_A" title="Terminal autorizado."'
             :
              'class="dv_Trm_Status_D" title="Terminal não autorizado"'
             ).
            '></div>'.
           '</td>'.
           '<td align="center">'.
            $aItem_Terminal['Codigo'].
           '</td>'.
           '<td>'.
            $aItem_Terminal['Rotulo'].
           '</td>'.
           '<td>'.
            $aItem_Terminal['IP_Remoto'].
           '</td>'.
           '<td>'.
            $sColuna_Operador.
           '</td>'.
          '</tr>';
      }
      If ( EMPTY($sHTML_Retorno) ) {
        $sHTML_Retorno =
          '<style>'.
           '.Cab_Terminal {'.
            'width: 98%;'.
            'text-align:left;'.
            'font-size: 14px;'.
           '}'.
          '</style>'.
          '<div style="height:5px;"></div>'.
          '<table class="Cab_Terminal">'.
           '<tr>'.
            '<td>'.
             'Token da empresa: <strong>'.$sToken_Empresa.'</strong>'.
            '</td>'.
            '<td>'.
             'Quantidade máxima permitida: <strong>'.$nQtdMax_Autorizada.'</strong>'.
            '</td>'.
            '<td>'.
             'Quantidade autorizada: <span style="font-weight:bold;" id="sp_APPEnt_QtdAtivado">'.$nQtdTrm_Autorizada.'</span>'.
            '</td>'.
           '</tr>'.
          '</table>'.
          '<div style="height:5px;"></div>'.
          '<div style="width:100%; text-align:center; font-size:18px; font-family:Verdana; color:#444444;">'.
           '<div style="height:150px;"></div>'.
           'Não há celulares a serem autorizados.'.
          '</div>';
        //
      } Else {
        //
        $sHTML_Retorno =
          '<style>'.
           '.Cab_Terminal {'.
            'width: 98%;'.
            'text-align:left;'.
            'font-size: 14px;'.
           '}'.
           '.Tb_Lista_Trm {'.
            'width: 98%;'.
            'font-size: 14px;'.
           '}'.
           '.Tb_Lista_Trm_Titulo {'.
            'background-color:#087980;'.
           '}'.
           '.Tb_Lista_Trm_Titulo td {'.
            'color:#FFFFFF;'.
            'padding-left: 5px;'.
            'padding-top: 5px;'.
            'padding-bottom: 5px;'.
           '}'.
           '.Tb_Lista_Trm_Itens {'.
            'background-color:#F6F6F6;'.
           '}'.
           '.Tb_Lista_Trm_Itens td {'.
            'padding-left: 5px;'.
            'padding-top: 5px;'.
            'padding-bottom: 5px;'.
           '}'.
           '.Tb_Lista_Trm_Itens:nth-of-type(odd) {'.
            'background-color:#E6E6E6;'.
           '}'.
           '.dv_Trm_Status_A {'.
            'width: 20px;'.
            'height: 20px;'.
            'background-color: #19E600;'.
            //'background: radial-gradient(at top left, #0F0 20%, #040);'.
            '-ms-border-radius: 10px;'.
            '-moz-border-radius: 10px;'.
            '-webkit-border-radius: 10px;'.
            '-o-border-radius: 10px;'.
            'border-radius: 10px;'.
            'margin: 0px auto;'.
            'cursor: pointer;'.
           '}'.
           '.dv_Trm_Status_D {'.
            'width: 20px;'.
            'height: 20px;'.
            'background-color: #666666;'.
            '-ms-border-radius: 10px;'.
            '-moz-border-radius: 10px;'.
            '-webkit-border-radius: 10px;'.
            '-o-border-radius: 10px;'.
            'border-radius: 10px;'.
            'margin: 0px auto;'.
            'cursor: pointer;'.
           '}'.
           '.dv_Trm_Status_P {'.
            'width: 20px;'.
            'height: 20px;'.
            'background-color: #BAAE00;'.
            '-ms-border-radius: 10px;'.
            '-moz-border-radius: 10px;'.
            '-webkit-border-radius: 10px;'.
            '-o-border-radius: 10px;'.
            'border-radius: 10px;'.
            'margin: 0px auto;'.
            //'cursor: pointer;'.
           '}'.
          '</style>'.
          //
          '<div style="height:5px;"></div>'.
          '<table class="Cab_Terminal">'.
           '<tr>'.
            '<td>'.
             'Token da empresa: <strong>'.$sToken_Empresa.'</strong>'.
            '</td>'.
            '<td>'.
             'Quantidade máxima permitida: <strong>'.$nQtdMax_Autorizada.'</strong>'.
            '</td>'.
            '<td>'.
             'Quantidade autorizada: <span style="font-weight:bold;" id="sp_APPEnt_QtdAtivado">'.$nQtdTrm_Autorizada.'</span>'.
            '</td>'.
           '</tr>'.
          '</table>'.
          '<div style="height:5px;"></div>'.
          '<table class="Tb_Lista_Trm">'.
           '<tr class="Tb_Lista_Trm_Titulo">'.
            '<td align="center" width="50px">'.
             ''.
            '</td>'.
            '<td align="center" width="66px">'.
             'Terminal'.
            '</td>'.
            '<td>'.
             'Rótulo'.
            '</td>'.
            '<td width="120px">'.
             'IP Remoto'.
            '</td>'.
            '<td>'.
             'Operador'.
            '</td>'.
           '</tr>'.
           $sHTML_Retorno.
          '</table>'.
          '';
        //
      }
      $aRetornoDados['HTML_Retorno'] = $sHTML_Retorno;
      //
    } Else {
      If ( EMPTY($aRetornoDados['MsgErro']) ) {
        $sMensagemErro = 'Erro desconhecido';
        //
        If ( ! EMPTY( $a_Dados_Retrn['ERRO'] ) ) {
          $sMensagemErro = 'Não foi possível efetuar a operação por erro desconhecido, erro nº '.$a_Dados_Retrn['CODIGO'];
          If ( $a_Dados_Retrn['CODIGO'] == 140 ) {
            $sMensagemErro = 'Esta empresa não está habilitada para trabalhar com e-Entregas.';
          }
        }
        $aRetornoDados['MsgErro'] = $sMensagemErro;
      }
    }
    //
    $sRetornoDados = json_encode($aRetornoDados);
    OB_CLEAN();
    HEADER('Cache-Control: no-cache, must-revalidate'); 
    HEADER('Access-Control-Allow-Origin:*');
    HEADER('Content-Type: application/json; charset=utf-8');
    //HEADER('Content-Type: text/plain; charset=utf-8');
    HEADER('Content-Length: '.STRLEN($sRetornoDados) );
    ECHO $sRetornoDados;
    EXIT;
    //
  //
  // >> Alterar status de autorizados dos terminais
  } ElseIf ( $sAcao=="ALTERAR_STATUS_TRM" ) {
    $aLista_Terminais = @$_POST['Terminais'];
    $aRetornoDados    = [];
    SESSION_WRITE_CLOSE();    // Encerra a sessão
    SET_TIME_LIMIT(120);      // Tempo limite de 2 minutos
    //
    $aAut_Terminais = [];
    ForEach ( $aLista_Terminais As $sIndice => $sItem ) {
      //
      $aAut_Terminais[] = [ 'Codigo' => ($sIndice+0) , 'Autorizar' => ($sItem+0) ];
      //
    }
    $a_Dados_Retrn = [];
    $a_Dados_Post =
      [ "Cmd"             => "SRV_CARGA.TERMINAIS" ,
        "CODIGO_EMPRESA"  => $nCodigo_Empr,
        "CODIGO_OPERADOR" => @($aSessao['LOG_FUN_CODIGO'])+0,
        "NAO_LISTADOS"    => 0,
        "TERMINAIS"       => $aAut_Terminais
      ];
    $a_Dados_HTTP = ComunicaUrl( $sURL_Ent_Api, $a_Dados_Post, True, 60 );
    If ( (@$a_Dados_HTTP[1]+0) == 200 ) {
      $a_Dados_Retrn = @json_decode( $a_Dados_HTTP[0], True );
    }
    //
    If ( @$a_Dados_Retrn['Sucesso'] ) {
      //
      $aRetornoDados['Sucesso']   = True;
      $aRetornoDados['Terminais'] = $aLista_Terminais;
      //
    } ElseIf ( ! EMPTY( $a_Dados_Retrn['ERRO'] ) ) {
      //
      $aRetornoDados['Sucesso'] = False;
      $sMensagemErro = 'Não foi possível efetuar a operação por motivo desconhecido, erro nº '.$a_Dados_Retrn['CODIGO'];
      If ( $a_Dados_Retrn['CODIGO'] == 149 ) {
        $sMensagemErro = 'Não é permitido ativar terminais maior que a quantidade máxima.';
      }
      $aRetornoDados['MsgErro'] = $sMensagemErro;
      //Info_Evento('ALERTA: Você não tem previlégio para alterar este cliente.');
      //
    } Else {
      $aRetornoDados['Sucesso'] = False;
      $sMensagemErro = 'Erro desconhecido';
      If ( ! EMPTY( $a_Dados_Retrn['TERMINAIS_NAO_REG'] ) ) {
        $sMensagemErro = 'Terminais não estão registrados para alterar status.';
      }
      $aRetornoDados['MsgErro'] = $sMensagemErro;
    }
    //
    //
    $sRetornoDados = json_encode($aRetornoDados);
    OB_CLEAN();
    HEADER('Cache-Control: no-cache, must-revalidate'); 
    HEADER('Access-Control-Allow-Origin:*');
    HEADER('Content-Type: application/json; charset=utf-8');
    //HEADER('Content-Type: text/plain; charset=utf-8');
    HEADER('Content-Length: '.STRLEN($sRetornoDados) );
    ECHO $sRetornoDados;
    EXIT;
    //
  //
  // >> Capturar e montar a lista de entregadores em HTML
  } ElseIf ( $sAcao=="PUXAR_ENTREGADORES" ) {
    SESSION_WRITE_CLOSE();    // Encerra a sessão
    SET_TIME_LIMIT(60);       // Tempo limite de 1 minutos
    //
    $sHTML_Retorno   = '';
    $aCad_Operadores = [];
    $rCad_Operadores = MYSQL_QUERY( 'SELECT * FROM cad_funcionario WHERE FUN_ENTMOT AND FUN_ATIVO_;' ) or die (mysql_error());
    While ( $aCad_Item = mysql_fetch_array( $rCad_Operadores, MYSQL_ASSOC) ) {
      $sHTML_Retorno .=
        '<tr class="Tb_Lista_Ent_Itens">'.
         '<td align="center">'.
          Str_Zero( $aCad_Item['FUN_CODIGO'], 4).
         '</td>'.
         '<td>'.
          $aCad_Item['FUN_APELID'].
         '</td>'.
         '<td>'.
          $aCad_Item['FUN_NOMECP'].
         '</td>'.
        '</tr>';
    }
    UNSET( $rCad_Operadores );
    //
    If ( EMPTY($sHTML_Retorno) ) {
      $sHTML_Retorno =
        '<div style="width:100%; text-align:center; font-size:18px; font-family:Verdana; color:#444444;">'.
         '<div style="height:150px;"></div>'.
         'Não há entregadores disponíveis.'.
        '</div>';
      //
    } Else {
      //
      $sHTML_Retorno =
        '<style>'.
         '.Tb_Lista_Ent {'.
          'width: 98%;'.
          'font-size: 14px;'.
         '}'.
         '.Tb_Lista_Ent_Titulo {'.
          'background-color:#087980;'.
         '}'.
         '.Tb_Lista_Ent_Titulo td {'.
          'color:#FFFFFF;'.
          'padding-left: 5px;'.
          'padding-top: 5px;'.
          'padding-bottom: 5px;'.
         '}'.
         '.Tb_Lista_Ent_Itens {'.
          'background-color:#F6F6F6;'.
         '}'.
         '.Tb_Lista_Ent_Itens td {'.
          'padding-left: 5px;'.
          'padding-top: 5px;'.
          'padding-bottom: 5px;'.
         '}'.
         '.Tb_Lista_Ent_Itens:nth-of-type(odd) {'.
          'background-color:#E6E6E6;'.
         '}'.
        '</style>'.
        //
        '<table width="100%">'.
         '<tr>'.
          '<td height="32px" valign="middle" align="center" style="font-size:12px; font-family:Verdana; color:#333333; font-weight:bold;">'.
           'Somente envia funcionários que estejam configurados como "Motoqueiro/Entregador" = "SIM" no cadastro.'.
          '</td>'.
        '</table>'.
        '<div style="height:5px;"></div>'.
        '<table class="Tb_Lista_Ent">'.
         '<tr class="Tb_Lista_Ent_Titulo">'.
          '<td align="center" width="66px">'.
           'Codigo'.
          '</td>'.
          '<td width="120px">'.
           'Apelido'.
          '</td>'.
          '<td>'.
           'Nome completo'.
          '</td>'.
         '</tr>'.
         $sHTML_Retorno.
        '</table>'.
        '';
      //
    }
    //
    $aRetornoDados =
      [ 'HTML_Retorno' => $sHTML_Retorno
      ];
    //
    //
    $sRetornoDados = json_encode($aRetornoDados);
    OB_CLEAN();
    HEADER('Cache-Control: no-cache, must-revalidate'); 
    HEADER('Access-Control-Allow-Origin:*');
    HEADER('Content-Type: application/json; charset=utf-8');
    //HEADER('Content-Type: text/plain; charset=utf-8');
    HEADER('Content-Length: '.STRLEN($sRetornoDados) );
    ECHO $sRetornoDados;
    EXIT;
    //
  //
  // >> Subir e atualizar cadastro de entregadores
  } ElseIf ( $sAcao=="SUBIR_ENTREGADORES" ) {
    SESSION_WRITE_CLOSE();    // Encerra a sessão
    SET_TIME_LIMIT(120);      // Tempo limite de 2 minutos
    //
    $aRetornoDados = [];
    //
    $aCad_Operadores = [];
    $rCad_Operadores = MYSQL_QUERY( 'SELECT * FROM cad_funcionario WHERE FUN_ENTMOT AND FUN_ATIVO_;' ) or die (mysql_error());
    While ( $aCad_Item = mysql_fetch_array( $rCad_Operadores, MYSQL_ASSOC) ) {
      $aCad_Operadores[] =
        [ 'Codigo' => $aCad_Item['FUN_CODIGO'],
          'Nome'   => $aCad_Item['FUN_NOMECP'],
          'Senha'  => $aCad_Item['FUN_SENHA_']
        ];
    }
    UNSET( $rCad_Operadores );
    //
    $a_Dados_Retrn = [];
    $a_Dados_Post =
      [ "Cmd"             => "SRV_CARGA.CAD_OPERADORES" ,
        "CODIGO_EMPRESA"  => $nCodigo_Empr,
        "DADOS"           => $aCad_Operadores
      ];
    $a_Dados_HTTP = ComunicaUrl( $sURL_Ent_Api, $a_Dados_Post, True, 60 );
    If ( (@$a_Dados_HTTP[1]+0) == 200 ) {
      $a_Dados_Retrn = @json_decode( $a_Dados_HTTP[0], True );
    }
    //
    $aRetornoDados = $a_Dados_Retrn;
    //
    $sRetornoDados = json_encode($aRetornoDados);
    OB_CLEAN();
    HEADER('Cache-Control: no-cache, must-revalidate'); 
    HEADER('Access-Control-Allow-Origin:*');
    HEADER('Content-Type: application/json; charset=utf-8');
    //HEADER('Content-Type: text/plain; charset=utf-8');
    HEADER('Content-Length: '.STRLEN($sRetornoDados) );
    ECHO $sRetornoDados;
    EXIT;
    //
  //
  // >> Fechar janela
  } ElseIf ( $sAcao=="FECHAR" ) {
    $sRet_Javs .=
      "parent.document.getElementById('dv_MenuL_Barra').style.visibility='visible';".
      "parent.RmElem('".$oJan->sIdObj."');".
      "";
  }
  //
}
//
//
//
//
//
?>