<?php
REQUIRE_ONCE './global/funcoes_exportacao.inc';
//
$sNomeIdJan1 = 'iJan_Sinc_Princ';
//$sNomeIdJan2 = 'iJan_RelVen_TxtVs';
$sCorBarraInf = '#E8E3CE';
//
$sPulaLinha = CHR(13).CHR(10);
$nTempo_Limite_PHP = 30*60;
$sData_Trabalho = SQLVarConfig('DATA_DE_TRABALHO');
$sEmpresaFan = SQLVarConfig('EMPRESA_NOME_FANTASIA');
$sNome_Base_Dados = $aSessao['BD_APONTADO_ACESSO'];
//
$aLista_Mensagens = [];
$sTitulo_Mensagem = 'Sincronização Nuvem';
//
//  ** TELA PRINCIPAL DE RELATORIO DE VENDAS **
If ( EMPTY($sSubModulo) ) {
		// Criar objeto Janela
		$oJanelaPrinc = New R_Janela();
		$oJanelaPrinc->sIdObj  = $sNomeIdJan1; 
		$oJanelaPrinc->nTop    = 40;
		$oJanelaPrinc->nLeft   = 5;
		$oJanelaPrinc->nWidth  = 550;   // Largura
		$oJanelaPrinc->nHeight = 0;     // Altura
		$oJanelaPrinc->nLeft  += ($nTela_W/2)-($oJanelaPrinc->nWidth/2);
		$oJanelaPrinc->sTitulo = 'Sincronizacao de Produtos';
		//    
		$sJavaTravarJ = "document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='visible'; parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',true);";
		$oJanelaPrinc->sJavOnClickF =
			$sJavaTravarJ.
			"document.forms.fmPRelVen.acao.value='FECHAR'; ".
			"document.forms.fmPRelVen.submod.value=''; ".
			"document.forms.fmPRelVen.submit();";
		$oJanelaPrinc->sJavKeyDown = "return Car_".$sNomeAcesso."1.Teclas_F(this,event);";
		//
		// JANELA TELA PRINCIPAL
		If ( EMPTY($sAcao) ) {
			 //
		//
		$oJanelaPrinc->aIdsObjList =
			ARRAY( 'sl_RelVen_TipLst', 'in_RelVen_DatIni', 'in_RelVen_DatFim' ,
					'sl_RelVen_CodCta', 'sl_RelVen_ModoRel'
			);
		// Combo de Contas
		// 
		// Buscando os registros a exportar
		// 
		$sqlGetRegistrosAExportar = "
			SELECT
				COUNT(INT_CODIGOI) as TOTAL
			FROM
				integrar_web
			WHERE
				INT_STATUS = 0
			GROUP BY
				INT_TABELA
				, INT_OPERACAO
				, INT_CAMPOREF
				, INT_VLCAMPCHAVE";
		$qryGetRegistrosAExportar 	= mysql_query($sqlGetRegistrosAExportar) or die (mysql_error());
		$nTotalRegAExportar = 0;
 		while($ftcGetRegistrosAExportar 	= mysql_fetch_array($qryGetRegistrosAExportar)){
			$nTotalRegAExportar 		+= $ftcGetRegistrosAExportar['TOTAL'];
		}
		// 
		// Buscando o caminho do FTP do CALLAPP_ADM
		// 
		$sqlGetCaminho = "
			SELECT
				var_conteudo
			FROM
				config
			WHERE
				var_nome = 'URL_COMUNICACAO_NUVEM'";
		$qryGetCaminho = mysql_query($sqlGetCaminho) or die (mysql_error());
		$ftcGetCaminho = mysql_fetch_array($qryGetCaminho);
		// 
		$sqlGetCodAcesso = "
			SELECT
			VAR_CONTEUDO
			FROM
				config
			WHERE
				var_nome = 'CODIGO_CAD_ACESSO_FILIAL'";
		$qryGetCodAcesso = mysql_query($sqlGetCodAcesso) or die (mysql_error());
		$ftcGetCodAcesso = mysql_fetch_array($qryGetCodAcesso);
		$nCodAcesso = $ftcGetCodAcesso['VAR_CONTEUDO'];
		// 
		$str 		= $ftcGetCaminho['var_conteudo'];					// Caminho do CALLAPP_ADM
		// 
		// Buscando o total de produtos para importação
		// 
		$aRetorno = ComunicaUrl($str, array("ModNome" => "CALLAPP_ADM", "c" => $nCodAcesso, "ocorrencia" => "buscar"));
		$sDados = $aRetorno[0];
		$aDados = JSON_DECODE($sDados, true);   
		$nTotalProdutos = sizeof($aDados['DADOS']['CADPRODUTOS']);
		$nTotalGrupos 	= sizeof($aDados['DADOS']['CADGRUPOS']);
		$sCaminhoTemp = getcwd().'/temporarios';
		if(!is_dir($sCaminhoTemp)){
			mkdir($sCaminhoTemp);
		}
		// 
		// Arquivo de total de produtos
		// 
		$nroArquivoProdutos = fopen($sCaminhoTemp."/sincprod.txt","w");
		fwrite($nroArquivoProdutos,"0");
		fclose($nroArquivoProdutos);
		// 
		// Arquivo de total de grupos
		// 
		$nroArquivoGrupos = fopen($sCaminhoTemp."/sincgru.txt","w");
		fwrite($nroArquivoGrupos,"0");
		fclose($nroArquivoGrupos);
		// 
		// Arquivo de total de exportacao
		// 
		$nroArquivoExportacao = fopen($sCaminhoTemp."/exptotal.txt","w");
		fwrite($nroArquivoExportacao,"0");
		fclose($nroArquivoExportacao);
		// Tela HTML
		if($nTotalProdutos == 0){
			$displayProgressBarProdutos 	= "none";
			$displayAlert					= "block";
		} else {
			$displayProgressBarProdutos = "block";
			$displayAlert 			= "none";
		}
		// 
		if($nTotalGrupos == 0){
			$displayProgressBarGrupos = "none";
			$displayAlertGrupos = "block";
		} else {
			$displayProgressBarGrupos = "block";
			$displayAlertGrupos = "none";
		}
		//
        $aSessao['Sinc_Mov_Qtd_Exportar'] = $nTotalRegAExportar;
        //
		if($nTotalRegAExportar == 0){
			$displayProgressBarExportacao 	= "none";
			$displayAlertExportacao			= "block";
		} else {
			$displayProgressBarExportacao 	= "block";
			$displayAlertExportacao			= "none";
		}
        //
		$sRet_TelaJ_HTML =
		$oJanelaPrinc->MontaJanHTML(True).
			'<div role="tabpanel">'.
				'<!-- Nav tabs -->'.
				'<ul id="ul_BarraSup_Sinc" class="nav nav-tabs nav-justified" role="tablist">'.
					'<li id="mostrarExportacao"  role="presentation">'.
						'<a href="#exportacao" aria-controls="tab" role="tab" data-toggle="tab">Exportacao</a>'.
					'</li>'.
					'<li id="mostrarImportacao" role="presentation" class="">'.
						'<a href="#importacao" aria-controls="tab" role="tab" data-toggle="tab">Importacao</a>'.
					'</li>'.
					'<li id="mostrarVerificacao" role="presentation" class="">'.
						'<a href="#dv_Verificacao" aria-controls="tab" role="tab" data-toggle="tab">Verificacao</a>'.
					'</li>'.
				'</ul>'.
			
				'<div class="tab-content">'.
                    //
					'<div role="tabpanel" class="tab-pane active" id="exportacao">'.
						'<div id="divProgressBarExportacao" style="display: '.$displayProgressBarExportacao.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Exportacao de Registros</h3></center>'.
								'<div class="progress">'.
									'<div id="progressBarExportacao" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbarExportacao" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>'.
								'</div>'.
								'<center><span id="totalRegistrosExportados"></span> de <span id="totalRegistros">'.$nTotalRegAExportar.'</span> itens alterados.</center>'.
								'<center><span id="registrosExportadosErro"></span></center>'.
                                '<div style="height:15px"></div>'.
								'<center><span id="spExportacao_Cronometro" style="font-size:13px; font-weight:bold;"></span></center>'.
							'</div>'.
						'</div>'.
						'<div id="divAlertExportacao" style="display: '.$displayAlertExportacao.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Nenhum registro encontrado para exportacao!</center>'.
							'</div>'.
						'</div>'.
					'</div>'.
                    //
					'<div role="tabpanel" class="tab-pane" id="importacao">'.
						'<div id="divProgressBarProdutos" style="display: '.$displayProgressBarProdutos.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Importacao de Produtos</h3></center>'.
								'<div class="progress">'.
									'<div id="progressBarProdutos" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbarProdutos" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">25%</div>'.
								'</div>'.
								'<center><span id="totalProdutosExportados"></span> de <span id="totalProdutos">'.$nTotalProdutos.'</span> itens alterados.</center>'.
								'<center><span id="produtosExportadosErro"></span></center>'.
							'</div>'.
						'</div>'.
						'<div id="divAlert" style="display: '.$displayAlert.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Nenhum produto encontrado para importacao!</center>'.
							'</div>'.
						'</div>'.
						// 
						'<div id="divProgressBarGrupos" style="display: '.$displayProgressBarGrupos.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Importacao de Grupos</h3></center>'.
								'<div class="progress">'.
									'<div id="progressBarGrupos" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbarGrupos" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">25%</div>'.
								'</div>'.
								'<center><span id="totalGruposExportados">0</span> de <span id="totalGrupos">'.$nTotalGrupos.'</span> itens alterados.</center>'.
								'<center><span id="gruposExportadosErro"></span></center>'.
							'</div>'.
						'</div>'.
						'<div id="divAlert" style="display: '.$displayAlertGrupos.'; padding:5%" class="row">'.
							'<div class="col-xs-12">'.
								'<center><h3>Nenhum grupo encontrado para importacao!</center>'.
							'</div>'.
						'</div>'.
					'</div>'.
                    //
					'<div role="tabpanel" class="tab-pane" id="dv_Verificacao">'.
                     '<div style="height:15px;"></div>'.
                     '<table width="100%">'.
                      '<tr>'.
                       '<td width="100px" align="right">'.
                        'Periodo:'.
                       '</td>'.
                       '<td width="26px" align="right">'.
                        '<img src="images/bimg_calendario.png" border="0" id="bt_Sinc_DatIni" style="cursor:pointer;">'.
                       '</td>'.
                       '<td width="90px" align="center">'.
                        '<input style="width:80px; text-align:center; font-size:12px;" value="'.date('d/m/Y').'" id="in_Sinc_DatIni" type="text" maxlength="10">'.
                       '</td>'.
                       '<td width="20px" align="center">'.
                        '-'.
                       '</td>'.
                       '<td width="26px" align="right">'.
                        '<img src="images/bimg_calendario.png" border="0" id="bt_Sinc_DatFim" style="cursor:pointer;">'.
                       '</td>'.
                       '<td width="90px" align="center">'.
                        '<input style="width:80px; text-align:center; font-size:12px;" value="'.date('d/m/Y').'" id="in_Sinc_DatFim" type="text" maxlength="10">'.
                       '</td>'.
                       '<td>'.
                       '</td>'.
                      '</tr>'.
                     '</table>'.
                     '<div style="height:15px;"></div>'.
                     '<div id="dv_Retorno_Verificacao" style="width:100%; height:280px;">'.
                     '</div>'.
					 '<center><span id="sp_Verificacao_Status" style="font-weight:bold;"></span></center>'.
                     '<div style="height:15px;"></div>'.
                    '</div>'.
                    //
				'</div>'.
			'</div>'.
			'<form name="fmPRelVen" 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="">'.
				'<input name="acao" type="hidden" value="">'.
				'<input name="nomeacs" type="hidden" value="'.$sNomeAcesso.'">'.
				'<input name="Pesq_CodCta" type="hidden" value="">'.
			'</form>'.
			'<table id="tb_Exporacao_Forcada_Descri" width="100%" style="background-color:'.$sCorBarraInf.'; display:none;">'.
             '<tr>'.
              '<td width="20px" height="26px">'.
              '</td>'.
              '<td valign="middle" style="font-size:11px; color:#AA0000;">'.
               UTF8_DECODE(
               '* O botão exportar sobe as tabelas: fat_geral, fat_item, mov_caixa, mov_modalidade_pag.'
               ).
              '</td>'.
             '</tr>'.
            '</table>'.
			'<table width="100%" style="background-color:'.$sCorBarraInf.';"><tr>'.
					'<td width="4px" height="40px">&nbsp;</td>'.
					'<td align="left">'.
							'<button style="display:none" id="btnVerificacao" class="btn btn-default"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <b>Verificar</b></button>'.	
							'<button id="btnBuscar" class="btn btn-default"><i class="fa fa-cloud-download" aria-hidden="true"></i> <b>Importar</b></button>'.	
							'<button style="display:none" id="btnExportar" class="btn btn-default"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <b>Exportar</b></button>'.	
					'</td>'.
					'<td align="left" width="200px">'.
					  '<button style="display:none" id="btnExportar_Forcada" class="btn btn-default"><i class="fa fa-cloud-upload" aria-hidden="true"></i> <b>Exportar</b></button>'.
					'</td>'.
					'<td align="right">'.
							HTML_Botao( 3, 'objRelVen_BT_Fch', $oJanelaPrinc->sJavOnClickF
													, 'Sair (ESC)' ,'images/btimg_fechar.png').		    
					'</td>'.
					'<td width="4px">&nbsp;</td>'.
			'</tr></table>'.		   
		//
		$oJanelaPrinc->MontaJanHTML(False);
		//
		// Java anterior
		$sRet_Javs .=
			'parent.document.getElementById("dv_MenuL_Barra").style.visibility="hidden";'.
			"function Teclas_F( Objeto, Evento ) {".
					"vNumTecla = parent.Tecla_Apertada(Evento);".
					"if ( vNumTecla==119) {".         // ** [F8] **
							"if (parent.document.getElementById('objRelVen_BT_Abr').style.display!='none') {".           // (Visualizar)
								"parent.".$sJava_Desfoca_Input.
								"setTimeout( parent.document.getElementById('objRelVen_BT_Abr').onclick , 10);".
							"}".
					"} else if ( vNumTecla==116) { ".  // ** [F5] **     N�o atualizar
							
					"} else if ( vNumTecla==27 ) { ".  // [ESC]
							"parent.".$sJava_Desfoca_Input.
							"setTimeout( parent.document.getElementById('objRelVen_BT_Fch').onclick , 10);".
					"} else {".
					"return true;".
					"} ".
					"return false;".
			'}'.
		"";
			// Java posterior
		$sRet_JavsPos .=
			'if(parent.$("#totalProdutos").html() == 0){'.
				 'parent.$("#btnBuscar").prop("disabled", true);'.
			'}'.
			// 
            'parent.Calendar.setup({ '.
              'inputField : "in_Sinc_DatIni", '.
              'trigger    : "bt_Sinc_DatIni", '.
              'onSelect   : function() { this.hide(); parent.sIdHasFocus=""; }, '.
              'showTime   : 0, '.
              'dateFormat : "%d/%m/%Y" '.
            '});'.
            'parent.Calendar.setup({ '.
              'inputField : "in_Sinc_DatFim", '.
              'trigger    : "bt_Sinc_DatFim", '.
              'onSelect   : function() { this.hide(); parent.sIdHasFocus=""; }, '.
              'showTime   : 0, '.
              'dateFormat : "%d/%m/%Y" '.
            '});'.
            //
			'function buscarProdutos(buscar){'.
				// Produtos
				'var totalProdutos = parent.$("#totalProdutos").html();'.
				'parent.$.post('.
					'"temporarios/sincprod.txt"'.
					',{'.

					'}, function(data){'.
						'parent.$("#totalProdutosExportados").html(data);'.
						'totalProdutosExportados = data;'.
						'percentagem = data / totalProdutos * 100;'.
						'percentagem = parseInt(percentagem);'.
						'if(percentagem <= 100 && buscar) { '.
							'setTimeout(function(){'.
								'buscarProdutos(true);'.
							'}, 20);'.
                        '}'.
						'parent.$("#progressBarProdutos").attr("aria-valuenow", data).css("width", percentagem+"%").html(percentagem+"%");'.
						'if(percentagem > 0){'.
							'total = totalProdutos - totalProdutosExportados;'.
							'parent.$("#gruposExportadosErro").html("Restam " +  total + " registros a serem importados.");'.
						'}'.
						'buscarGrupos();'.
					'}'.
				');'.
				// ./Produtos
				// Grupos
			'}'.
			// 
			'function buscarGrupos(buscar){'.
				'var totalGrupos = parent.$("#totalGrupos").html();'.
				'parent.$.post('.
					'"temporarios/sincgru.txt"'.
					',{'.

					'}, function(data){'.
						'parent.$("#totalGruposExportados").html(data);'.
						'totalGruposExportados = data;'.
						'percentagem = data / totalGrupos * 100;'.
						'percentagem = parseInt(percentagem);'.
						'parent.$("#progressBarGrupos").attr("aria-valuenow", data).css("width", percentagem+"%").html(percentagem+"%");'.
						'if(percentagem < 100 && buscar) { '.
							'setTimeout(function(){'.
								'buscarGrupos(true);'.
							'}, 20);'.
						'}'.
						'if(percentagem > 0){'.
							'total = totalGrupos - totalGruposExportados;'.
							'parent.$("#gruposExportadosErro").html("Restam " +  total + " registros ha serem importados.");'.
						'}'.
						'buscarExportar();'.
					'}'.
				');'.
			'}'.
			// 
			'function buscarExportar(buscar){'.
				'var totalRegistros = parent.$("#totalRegistros").html();'.
				// 'alert(totalRegistros);'.
				'parent.$.post('.
					'"temporarios/exptotal.txt"'.
					',{'.

					'}, function(data){'.
						// 'alert(data);'.
						'parent.$("#totalRegistrosExportados").html(data);'.
						'totalRegistrosExportados = data;'.
						// 'alert(totalRegistrosExportados);'.
						'percentagem = data / totalRegistros * 100;'.
						'percentagem = parseInt(percentagem);'.
						// 'alert(percentagem);'.
						'parent.$("#progressBarExportacao").attr("aria-valuenow", data).css("width", percentagem+"%").html(percentagem+"%");'.
						'if(percentagem < 100 && buscar) { '.
							'setTimeout(function(){'.
								// 'alert("foi");'.
								'buscarExportar(true);'.
							'}, 1000);'.
						'}'.
						'if(percentagem > 0){'.
							'total = totalRegistros - totalRegistrosExportados;'.
							'parent.$("#registrosExportadosErro").html("Restam " +  total + " registros ha serem exportados.");'.
						'}'.
					'}'.
				');'.
			'}'.
			// 
			'function buscar(buscar){'.
				'buscarProdutos(buscar);'.
			'}'.
			'buscar(false);'.
			//
			'parent.$("#btnVerificacao").on("click",'.
              'function () {'.
                'parent.$("#dv_Retorno_Verificacao").html("");'.
                'parent.$("#btnVerificacao").prop("disabled", true);'.
                'var sData_Inicial = parent.$("#in_Sinc_DatIni").val();'.
                'var sData_Final   = parent.$("#in_Sinc_DatFim").val();'.
				'parent.$.post('.
				  '"./car_js.php" , '.
				  '{  mod      : "'.$sModulo.'",'.
				     'submod   : "'.$sSubModulo.'",'. 
				     'nomeacs  : "'.$sNomeAcesso.'",'.
				     'acao     : "VERIFICAR",'.
                     'Data_Ini : sData_Inicial,'.
                     'Data_Fim : sData_Final '.
				  '} , '.
                  'function ( vDados ) {'.
                     'parent.$("#dv_Retorno_Verificacao").html( vDados );'.
                     'parent.$("#btnVerificacao").prop("disabled", false);'.
				  '}'.
                ');'.
              '}'.
            ');'.
			//
			'parent.$("#btnBuscar").on("click",'.
				'function () {'.
					'parent.$("#produtosExportadosErro").html("");'.
					'buscarProdutos(true);'.
                    'parent.$("#btnBuscar").prop("disabled", true);'.
					'parent.$.post( "./car_js.php", '.
					'{'.
						'mod     : "'.$sModulo.'",'.
						'submod  : "'.$sSubModulo.'",'. 
						'nomeacs : "'.$sNomeAcesso.'",'.
						'acao    : "IMPORTAR"'.
					'},'.
					'function ( Dados ) {'.
                        'parent.$("#btnBuscar").prop("disabled", false);'.
					  	'Mensagens( Dados );'.
					'}'.
					');'.
				'}'.
			');'.
			// 
            'var bHab_Exportar_Forcada = '.( $R_CadFuncionario->FUN_APELID=="A99" ? 'true' : 'false' ).';'.
			'parent.$("#mostrarVerificacao").on("click",
				function () {'.
					'parent.$("#btnVerificacao").css({display: "block"});'.
					'parent.$("#btnExportar").css({display: "none"});'.
                    'if ( bHab_Exportar_Forcada ) {'.
					  'parent.$("#btnExportar_Forcada").css({display: "block"});'.
					  'parent.$("#tb_Exporacao_Forcada_Descri").css({display: ""});'.
                    '} else {'.
					  'parent.$("#tb_Exporacao_Forcada_Descri").css({display: "none"});'.
					  'parent.$("#btnExportar_Forcada").css({display: "none"});'.
                    '}'.
					'parent.$("#btnBuscar").css({display: "none"});'.
				'}'.
			');'.
			// 
			'parent.$("#mostrarImportacao").on("click",
				function () {'.
					'parent.$("#btnVerificacao").css({display: "none"});'.
					'parent.$("#btnExportar").css({display: "none"});'.
					'parent.$("#btnExportar_Forcada").css({display: "none"});'.
					'parent.$("#btnBuscar").css({display: "block"});'.
                    'parent.$("#tb_Exporacao_Forcada_Descri").css({display: "none"});'.
				'}'.
			');'.
			// 
			'parent.$("#mostrarExportacao").on("click",
				function () {'.
					'parent.$("#btnVerificacao").css({display: "none"});'.
					'parent.$("#btnBuscar").css({display: "none"});'.
					'parent.$("#btnExportar_Forcada").css({display: "none"});'.
					'parent.$("#btnExportar").css({display: "block"});'.
                    'parent.$("#tb_Exporacao_Forcada_Descri").css({display: "none"});'.
				'}'.
			');'.
			// 
			'parent.$("#btnExportar_Forcada").on("click",'.
				'function () {'.
                    'var sData_Inicial = parent.$("#in_Sinc_DatIni").val();'.
                    'var sData_Final   = parent.$("#in_Sinc_DatFim").val();'.
                    'parent.$("#btnExportar_Forcada").prop("disabled", true);'.
                    'parent.$("#btnVerificacao").prop("disabled", true);'.
                    'parent.$("#ul_BarraSup_Sinc").css( { display:"none" } );'.
                    'f_Status_Exportacao_Forcada();'.
                    'var PostDados = '.
					  '{ mod     : "'.$sModulo.'",'.
					  	'submod  : "'.$sSubModulo.'",'. 
					  	'nomeacs : "'.$sNomeAcesso.'",'.
					  	'acao    : "EXPORTACAO_FORCADA",'.
                        'Data_Ini : sData_Inicial,'.
                        'Data_Fim : sData_Final '.
					  '};'.
                    'parent.$.ajax('.
                      '{ type        : "POST",'.
                        'url         : "./car_js.php",'.
                        'cache       : false,'.
                        'timeout     : '.(($nTempo_Limite_PHP+3)*1000).','.
                        'data        : PostDados'.
                      '}'.
                    ')'.
                    '.always('.
                      'function (vDados, sStatus, vRetorno) {'.
                        'parent.$("#btnExportar_Forcada").prop("disabled", false);'.
                        //'parent.$("#btnVerificacao").prop("disabled", false);'.
                        'parent.$("#ul_BarraSup_Sinc").css( { display:"" } );'.
                        'parent.$("#btnVerificacao").trigger("click");'.
                        'Mensagens( vDados );'.
                      '}'.
                    ');'.
				'}'.
			');'.
            'function f_Status_Exportacao_Forcada() {'.
			  'parent.$.post( "temporarios/exptotal.txt", '.
				'{ }, '.
                'function( vDados ) {'.
                   'var vTmp = vDados + ",0,0";'.
                   'var nPosicao = vTmp.split(",");'.
                   'parent.$("#sp_Verificacao_Status").html( "Ja foram exportados "+nPosicao[0]+" de "+nPosicao[1]+" registros..." );'.
                   'if ( parent.$("#btnExportar_Forcada").prop("disabled") ) {'.
                       'setTimeout( function () { f_Status_Exportacao_Forcada(); } , 600 );'.
                   '} else {'.
                       'parent.$("#sp_Verificacao_Status").html( "Foram exportados "+nPosicao[1]+" registros." );'.
                   '}'.
                '}'.
              ');'.
            '} '.
            //
			'parent.$("#btnExportar").on("click",'.
				'function () {'.
					'buscarExportar(true);'.
                    "hh = 0; mm = 0; ss = -1;".
                    'bCronometro_Continuar = true;'.
                    'Cronometro();'.
                    'parent.$("#btnExportar").prop("disabled", true);'.
                    'var PostDados = '.
					  '{ mod     : "'.$sModulo.'",'.
					  	'submod  : "'.$sSubModulo.'",'. 
					  	'nomeacs : "'.$sNomeAcesso.'",'.
					  	'acao    : "EXPORTAR_LOTE"'.
					  '};'.
                    'parent.$.ajax('.
                      '{ type        : "POST",'.
                        'url         : "./car_js.php",'.
                        'cache       : false,'.
                        'timeout     : '.(($nTempo_Limite_PHP+3)*1000).','.
                        'data        : PostDados'.
                      '}'.
                    ')'.
                    '.always('.
                      'function (vDados, sStatus, vRetorno) {'.
                        'bCronometro_Continuar = false;'.
                        'parent.$("#btnExportar").prop("disabled", false);'.
                        'Mensagens( vDados );'.
                      '}'.
                    ');'.
				'}'.
			');'.
			'parent.$("#mostrarExportacao").trigger("click");'.
            //
            "function Mensagens(vDados) {".
               //"console.log(vDados);".
               "var sMsgs_HTML = '';".
               "if ( vDados.Msgs !== undefined ) { ".
                  "vDados.Msgs.forEach( ".
                    "function( sMensagem ) { ".
                      //"console.log(sMensagem);".
                      "sMsgs_HTML += ".
                         "sMensagem + ".
                         "'<br>';".
                    "}".
                  ");".
                  "parent.Alerta_Simples(sMsgs_HTML, 0, 'Mensagens');".
               "}".
            "}".
            //
            "var hh = 0; var mm = 0; var ss = 0;".
            "var bCronometro_Continuar = false;".
            "function Cronometro() {".
               "ss = ss + 1;".
               "if (ss > 59) {".
                   "ss = 00;".
                   "mm = mm + 1;".
                   "if (mm > 59){".
                       "mm = 00;".
                       "hh = hh + 1;".
                       "if (hh > 23){".
                           "hh = 00;".
                       "}".
                 "}".
               "}".
               "if (hh <= 9){".
                   'xhh = "0" + hh;'.
               "} else {".
                   "xhh = hh;".
               "}".
               "if (mm <= 9){".
                   'xmm = "0" + mm;'.
               "} else {".
                   "xmm = mm;".
               "}".
               "if (ss <= 9){".
                   'xss = "0" + ss;'.
               "} else {".
                   "xss = ss;".
               "}".
               'parent.document.getElementById("spExportacao_Cronometro").innerHTML = xhh + ":" + xmm + ":" + xss;'.
               'if ( bCronometro_Continuar ) {'.
                   'setTimeout("Cronometro();", 1000);'.
               '}'.
            '}'.
            //
		    "";
    //
	// VERIFICAÇÃO
    } ElseIf ( $sAcao=="VERIFICAR" ) {
       OB_CLEAN();
       //
       $nCodigo_EmpSm = @$Dados_Empresa['EMP_CODIGO']+0;
       $sData_Inicial = ConvertDataBRUS( @$_POST['Data_Ini'] );
       $sData_Final   = ConvertDataBRUS( @$_POST['Data_Fim'] );
       //$nData_Inicial = ConvertDataSTR( ConvertDataBRUS($sData_Inicial) );
       //$nData_Final   = ConvertDataSTR( ConvertDataBRUS($sData_Final  ) );
       //$sData_Inicial = DATE("Y-m-d",$nData_Inicial);
       //$sData_Final   = DATE("Y-m-d",$nData_Final);
			 //
			 $aResultados = eCook_Sinc_Verificar_Web( $nCodigo_EmpSm , $sData_Inicial, $sData_Final );
			 //
       $sHTML_Retorno = '';
       $bDivergentes = false;
       //
       ForEach( $aResultados As $sTabela => $aTabela ) {
          $sHTML_Tmp = '';
          ForEach( $aTabela As $sOrigem => $aDados ) {
             $sHTML_TmpC =
               '<td width="100px" height="26px">'.
                'Origem'.
               '</td>';
             $sHTML_Tmp2 =
               '<td height="24px">'.
                $sOrigem.
               '</td>';
             ForEach( $aDados As $sCampo => $v_Dado ) {
                $sHTML_TmpC .=
                  '<td width="100px">'.
                   $sCampo.
                  '</td>';
                $sHTML_Tmp2 .=
                  '<td>'.
                   $v_Dado.
                  '</td>';
             }
             $sHTML_Tmp .=
               '<tr>'.
                $sHTML_Tmp2.
               '</tr>';
          }
          $b_Identicos = $aTabela['Web'] == $aTabela['Local'];
          if ( ! $bDivergentes ) {  $bDivergentes = (!$b_Identicos);  }
          $sHTML_Retorno .=
            '<div style="height:15px;"></div>'.
            '<div style="width:100%; text-align:center; '.($b_Identicos ? '' : 'background-color:#F59D8F;').'">'.
             '<span style="font-size:13px; font-weight:bold">'.
              $sTabela.
             '</span>'.
             '<table width="100%">'.
              '<tr>'.
               '<td align="center">'.
               //
                '<table border="1px">'.
                 '<tr>'.
                  $sHTML_TmpC.
                 '</tr>'. 
                 $sHTML_Tmp.
                '</table>'.
               //
               '</td>'.
              '</tr>'.
             '</table>'.
            '</div>'.
            '<div style="height:5px;"></div>'.
            '<script>'.
             "parent.Car_".$sNomeAcesso."1.bHab_Exportar_Forcada = ".
                ( ($R_CadFuncionario->FUN_APELID=="A99" OR ((0+@$aSessao['Sinc_Mov_Qtd_Exportar'])==0 && $bDivergentes)) ?
                'true'  :  'false' ).
                ";".
             'parent.$("#mostrarVerificacao").trigger("click");'.
            '</script>'.
            '';
       }
       //
       ECHO $sHTML_Retorno;
       EXIT;
    //
	// IMPORTAR
    } ElseIf ( $sAcao=="IMPORTAR" ) {
       SESSION_WRITE_CLOSE();
       SET_TIME_LIMIT($nTempo_Limite_PHP);    // Tempo de execução do PHP
       $sTitulo_Mensagem = 'eCook Web - eCook Local';
       //
       $nCodigo_BData = SQLVarConfig('CODIGO_CAD_ACESSO_FILIAL')+0;
       If ( $nCodigo_BData > 0 ) {
          Importar( $nCodigo_BData );
       } Else {
          Sinc_Simdesk_REG_NTF( "Código da filial não configurado" );
       }
       //
       If ( EMPTY($aLista_Mensagens) ) {
          $aLista_Mensagens[] = "Concluído com sucesso.";
       }
       Sinc_Fim_Enviar_Mensagens();
	   //
    //
    // Exportar registros em lote
    } ElseIf ( $sAcao=="EXPORTAR_LOTE" ) {
			 OB_CLEAN();
       $nCodigo_EmpSm = @$Dados_Empresa['EMP_CODIGO']+0;
			 $sData_UltSincF = SQLVarConfig('DATA_ULTIMA_SINC_FORCADA', True);
			 $nData_UltSincF = ConvertDataSTR( $sData_UltSincF );
       $aSessao['Sinc_Mov_Qtd_Exportar'] = 0;
       $_SESSION[NomeVar_Sessao] = $aSessao;
       SESSION_WRITE_CLOSE();
       SET_TIME_LIMIT($nTempo_Limite_PHP);    // Tempo de execução do PHP
			 $aLista_Mensagens = eCook_Sinc_Exportacao();
			 //
       If ( EMPTY($aLista_Mensagens) && $nData_UltSincF < (MKTIME(0,0,0)-(10*24*60*60)) ) {
          $nData_Inicial = $nData_UltSincF;
          $nData_Final   = MKTIME(0,0,0);
          $sData_Inicial = DATE("Y-m-d",$nData_Inicial);
          $sData_Final   = DATE("Y-m-d",$nData_Final);
					//
					$b_Identicos = True;
          $aResultados = eCook_Sinc_Verificar_Web( $nCodigo_EmpSm , $sData_Inicial, $sData_Final );
          ForEach( $aResultados As $sTabela => $aTabela ) {
            $b_Identicos = $aTabela['Web'] == $aTabela['Local'];
            if ( ! $b_Identicos ) {  break; }
					}
					If ( ! $b_Identicos ) {
						$aLista_Mensagens = eCook_Sinc_Exportacao_Forcada( $sData_Inicial, $sData_Final );
					}
          //
          SQLVarConfigG( 'DATA_ULTIMA_SINC_FORCADA', DATE('Y-m-d') );
			 }
			 //
       If ( EMPTY($aLista_Mensagens) ) {
          $aLista_Mensagens[] = "Concluído com sucesso.";
       }
       Sinc_Fim_Enviar_Mensagens();
    //
    // Exportar registros em lote forçadamente
    } ElseIf ( $sAcao=="EXPORTACAO_FORCADA" ) {
       $sData_Inicial = @$_POST['Data_Ini'];
       $sData_Final   = @$_POST['Data_Fim'];
       $nData_Inicial = ConvertDataSTR( ConvertDataBRUS($sData_Inicial) );
       $nData_Final   = ConvertDataSTR( ConvertDataBRUS($sData_Final  ) );
       $sData_Inicial = DATE("Y-m-d",$nData_Inicial);
       $sData_Final   = DATE("Y-m-d",$nData_Final);
       OB_CLEAN();
       SESSION_WRITE_CLOSE();
       SET_TIME_LIMIT($nTempo_Limite_PHP);    // Tempo de execução do PHP
       $aLista_Mensagens = eCook_Sinc_Exportacao_Forcada( $sData_Inicial, $sData_Final );
       If ( EMPTY($aLista_Mensagens) ) {
          $aLista_Mensagens[] = "Concluído com sucesso.";
       }
       Sinc_Fim_Enviar_Mensagens();
    //
    // Exportar registros
    } ElseIf ( $sAcao=="EXPORTAR" ) {
       SESSION_WRITE_CLOSE();
       SET_TIME_LIMIT($nTempo_Limite_PHP);    // Tempo de execução do PHP
       $sTitulo_Mensagem = 'eCook Local - eCook Web';
		ob_clean();
		// 
		$sCaminhoWebService		= "";			// Caminho de comunicação do local para web
		$nCodEmp 							= ""; 		// Código da empresa no cad_empresa
		$arraySql							= ""; 		// Matriz com as instruções para alteração
		// 
		$sVersaoBancoLocal		= "";			// Versão do banco de dados local
		$sVersaoBancoNuvem		= "";			// Versão do banco de dados web
		$sChaveIntegrLocal		= "";			// Chave de integração web do banco local
		$sChaveIntegrNuvem		= "";			// Chave de integração web do banco na nuvem
        //
        $nCodigo_BData = SQLVarConfig('CODIGO_CAD_ACESSO_FILIAL')+0;   // Código do banco no cad_acesso
        If ( $nCodigo_BData < 1 ) {
           Sinc_Simdesk_REG_NTF( "Código da filial não configurado" );
           Sinc_Fim_Enviar_Mensagens();
        }
		// Buscando o caminho do callapp no eCook Retaguarda
		$sqlGetCaminho = "
			SELECT
				VAR_CONTEUDO
			FROM
				config
			WHERE
				var_nome = 'URL_COMUNICACAO_RETAGUARDA'";
		$qryGetCaminho 				= mysql_query($sqlGetCaminho) or die (mysql_error());
		$ftcGetCaminho 				= mysql_fetch_array($qryGetCaminho);
		$sCaminhoWebService		= $ftcGetCaminho['VAR_CONTEUDO'].'callapp.php';
		// 
		// Buscando o código da empresa
		$sqlGetCodEmp = "
			SELECT
				EMP_CODIGO
			FROM	
				cad_empresa";
		$qryGetCodEmp 	= mysql_query($sqlGetCodEmp) or die (mysql_error());
		$ftcGetCodEmp 	= mysql_fetch_array($qryGetCodEmp) or die (mysql_error());
		$nCodEmp		= $ftcGetCodEmp['EMP_CODIGO'];
		// 
		// Se o caminho do webservice não estiver preenchido
		// Retorno uma mensagem de erro e trato na função em javascript
		// 
		if (empty($sCaminhoWebService)){
           Sinc_Simdesk_REG_NTF( "A URL de Comunicação do eCook - Retaguarda não foi configurada no banco local do cliente." );
           Sinc_Fim_Enviar_Mensagens();
		}
		// Buscando a chave de integração web o banco local
		$sqlGetChaveIntegr = "
			SELECT
				VAR_CONTEUDO
			FROM	
				config
			WHERE
				VAR_NOME = 'CHAVE_ECOOK_WEB_INTEGRACAO'";
		$qryGetChaveIntegr = mysql_query($sqlGetChaveIntegr) or die (mysql_error());
		$ftcGetChaveIntegr = mysql_fetch_array($qryGetChaveIntegr);
		$sChaveIntegrLocal = $ftcGetChaveIntegr['VAR_CONTEUDO'];
		// Buscando a versão do banco de dados local
		$sqlGetVersaoBanco = "
			SELECT
				VAR_CONTEUDO
			FROM
				config
			WHERE
				VAR_NOME = 'VERSAO_BASE_DADOS'";
		$qryGetVersaoBanco = mysql_query($sqlGetVersaoBanco) or die (mysql_error());
		$ftcGetVersaoBanco = mysql_fetch_array($qryGetVersaoBanco);
		$sVersaoBancoLocal = $ftcGetVersaoBanco['VAR_CONTEUDO'];		
		// 
		$aAcaoSql = array(
			"CodApl"   => "25",
			"VerApl"   => Aplicativo_Versao,
			"SQLQUERY" => "select VAR_CONTEUDO FROM config WHERE VAR_NOME = 'VERSAO_BASE_DADOS'"
		);
		// Montando o array
		$aComunicacaoWeb = array(
			"DBCod" 			=> $nCodigo_BData,
			"CodEmp" 			=> $nCodEmp,
			"Acao"				=> "EXECUTAR_SQL",
			"PmAcao"			=> $aAcaoSql
		);
		// Buscando a versão da base de dados web
		$aRetorno = ComunicaUrl(
			$sCaminhoWebService, 
			json_encode($aComunicacaoWeb)
		);
		$jRetorno = $aRetorno[0];
		$aResultado = json_decode($jRetorno, true);
		// 
		$sVersaoBancoNuvem = $aResultado['ResultSQL'][0]['VAR_CONTEUDO'];
		// 
		// Comparo as versões do banco
		// Devem ser iguais
		// 
		//$sVersaoBancoLocal = "18.11.20";
		if ($sVersaoBancoLocal != $sVersaoBancoNuvem){
           Sinc_Simdesk_REG_NTF( "A versão do banco de dados local do cliente é divergente da versão do banco de dados na nuvem.<br>&nbsp;Local: ".$sVersaoBancoLocal."<br>&nbsp;Nuvem: ".$sVersaoBancoNuvem );
           Sinc_Fim_Enviar_Mensagens();
		}
		// 
		$aAcaoSql = array(
			"CodApl" 		=> "25",
			"VerApl" 		=> Aplicativo_Versao,
			"SQLQUERY"	=> "select VAR_CONTEUDO FROM config WHERE VAR_NOME = 'CHAVE_ECOOK_WEB_INTEGRACAO'"
		);
		// Montando o array
		$aComunicacaoWeb = array(
			"DBCod" 			=> $nCodigo_BData,
			"CodEmp" 			=> $nCodEmp,
			"Acao"				=> "EXECUTAR_SQL",
			"PmAcao"			=> $aAcaoSql
		);
		// Buscando a chave de integração no banco de dados da nuvem
		$aRetorno = ComunicaUrl(
			$sCaminhoWebService, 
			json_encode($aComunicacaoWeb)
		);
		// 
		$jRetorno = $aRetorno[0];
		$aResultado = json_decode($jRetorno, true);
		// 
		$sChaveIntegrNuvem = $aResultado['ResultSQL'][0]['VAR_CONTEUDO'];
		// 
		// Se a chave de integração no local estiver vazia
		// Comunico e envio a notificação para o SimDesk
		// 
		if (empty($sChaveIntegrLocal)){
           Sinc_Simdesk_REG_NTF("Chave de integração web não configurada no banco de dados local do cliente.");
           Sinc_Fim_Enviar_Mensagens();
		}
		// 
		// Se a chave de integração na web estiver vazia
		// Comunico e envio a notificação para o SimDesk
		// 
		if (empty($sChaveIntegrNuvem)){
           Sinc_Simdesk_REG_NTF("Chave de integração web não configurada no banco de dados na nuvem do cliente.");
           Sinc_Fim_Enviar_Mensagens();
		}
		// 
		// Comparo a chave de integração do local e da Web
		// Devem ser iguais
		// 
		if ($sChaveIntegrLocal != $sChaveIntegrNuvem){
           Sinc_Simdesk_REG_NTF( "A chave de integração do banco de dados local do cliente é divergente da chave de integração do banco na nuvem.<br>&nbsp;Local: ".$sChaveIntegrLocal."<br>&nbsp;Nuvem: ".$sChaveIntegrNuvem."" );
           Sinc_Fim_Enviar_Mensagens();
		}
		// 
		$arraySql = array();
		// 
		$sqlUpdateDtIntegracao = "
			UPDATE
				config
			SET
				VAR_CONTEUDO = NOW()
			WHERE
				VAR_NOME = 'DATA_WEB_ULT_INTEGRACAO'";
		$qryUpdateDtIntegracao = mysql_query($sqlUpdateDtIntegracao) or die (mysql_error());
		// 
		$sqlGetAlteracoes = "
			SELECT
				GROUP_CONCAT(DISTINCT INT_CODIGOI) as CODIGOS
				, INT_TABELA
				, INT_OPERACAO
				, INT_CAMPOREF
				, INT_VLCAMPCHAVE
			FROM
				integrar_web
			WHERE
				INT_STATUS = 0
			GROUP BY
				INT_TABELA
				, INT_OPERACAO
				, INT_CAMPOREF
				, INT_VLCAMPCHAVE";
		$qryGetAlteracoes = mysql_query($sqlGetAlteracoes) or die (mysql_error());
		// 
		// Processando as alterações
		// 
		while($ftcGetAlteracoes = mysql_fetch_array($qryGetAlteracoes)){
			$sTabela				= $ftcGetAlteracoes['INT_TABELA'];				// Tabela de alteração
			$sCampoRef			= $ftcGetAlteracoes['INT_CAMPOREF'];			// Campo de referência
			$sVlrCampChave	= $ftcGetAlteracoes['INT_VLCAMPCHAVE'];		// Valor do campo de referência
			$sOperacao			= $ftcGetAlteracoes['INT_OPERACAO'];			// Operação: I -> Inserir / A -> Alterar / D -> Remover
			$sCodigos 			= $ftcGetAlteracoes['CODIGOS'];						// Códigos dos campos a alterar
			// 
			// Se a tabela for config e o campo de referencia for diferente de DATA_WEB_ULTIMA_INTEGRACAO
			// Atualizo sem processar na web
			// 
			if(($sTabela == "config" && $sVlrCampChave == "DATA_WEB_ULT_INTEGRACAO") || $sTabela != "config"){
				$sSql = "";
				// Se for inserção
				if(STRTOUPPER($sOperacao) == "I" || STRTOUPPER($sOperacao) == "A"){ 	
					// Verifico se a tabela é config ou não
					// Se for config, a chave primaria é o var_nome
					$sqlBuscar = "";
					if (STRTOUPPER($sTabela) == "CONFIG") {
						$sqlBuscar = "
							SELECT
								VAR_NOME
								, VAR_CONTEUDO
							FROM
								config
							WHERE
								VAR_NOME = '".$sVlrCampChave."'";
					} else {
						$sqlBuscar .= 
							"SELECT ".
								"* ".
							"FROM ".
								$sTabela.
							" WHERE ".
								$sCampoRef." = '".$sVlrCampChave."'";
					}
					// 
					$qryBuscar = mysql_query($sqlBuscar) or die (mysql_error());
					// 
					$ftcBuscar = mysql_fetch_array($qryBuscar, MYSQL_ASSOC);
					// 
					if(STRTOUPPER($sOperacao) == "I"){
						$sSql = "INSERT IGNORE INTO ".$sTabela." SET ";
					} else {
						$sSql = "UPDATE ".$sTabela." SET ";
					}	
					// 
					// Concateno os campos
					// 
					$sql = "";
					foreach($ftcBuscar as $sCampo => $sValor){
						$sql .= (EMPTY($sql) ? "" : ", ").$sCampo . " = '".utf8_encode($sValor)."'";						
					}					
					// 
					$sSql .= $sql;
					// Se a operção for inserção
					if(STRTOUPPER($sOperacao) == "I"){
					} 
					// Se a operação for diferente de inserção
					else {
						// Se for update na tabela config
						if(STRTOUPPER($sTabela) == "CONFIG"){
							$sSql .= " WHERE VAR_NOME = '".$sVlrCampChave."'";
						} else {
							$sSql .= " WHERE ".$sCampoRef." = '".$sVlrCampChave."'";
						}
					}
				} 
				// Se for remoção
				else if (STRTOUPPER($sOperacao) == "D") {
					if(STRTOUPPER($sTabela) == "CONFIG"){
						$sSql = "DELETE FROM ".$sTabela." WHERE VAR_NOME = '".$sCampoRef."' AND VAR_CONTEUDO = '".$sVlrCampChave."'";
					} else {
						$sSql = "DELETE FROM ".$sTabela." WHERE ".$sCampoRef." = '".$sVlrCampChave."'";
					}
				} 
				// Se não retornar nenhum registro na consulta para montar a query
				if($sql == "" && STRTOUPPER($sOperacao) != "D"){
					// Montando o array
					$array = array(
						"Codigo" 			=> $sCodigos,
						"Ocorrencia" 	=> "Sucesso",
					);
				} else {
					$arrayAcao = array(
						"CodApl" 		=> "25",
						"VerApl" 		=> Aplicativo_Versao,
						"SQLQUERY"	=> $sSql
					);
					// Montando o array
					$array = array(
						"DBCod" 			=> $nCodigo_BData,
						"CodEmp" 			=> $nCodEmp,
						"Acao"				=> "EXECUTAR_SQL",
						"PmAcao"			=> $arrayAcao,
						"Codigo" 			=> $sCodigos,
						"Tabela" 			=> $sTabela,
						"CampRef"			=> $sCampoRef,
						"CampChave" 	=> $sVlrCampChave,
						"Operacao"		=> $sOperacao
					);
				}
				// 
			} else {
				// Montando o array
				$array = array(
					"Codigo" 			=> $sCodigos,
					"Ocorrencia" 	=> "Sucesso",
				);
			}
			// Montando a matriz para chamar o webservice
			array_push($arraySql, $array);
		}
		// 
		$total = 0; // Total de registros exportados
		// 
		// Processando a matriz de alterações
		// 
		foreach($arraySql as $aDados){
			// 
			// Se a Ocorrencia igual a sucesso
			// Apenas atualizo o campo 
			// Sem precisar integrar no webservice
			// 
			if(@$aDados['Ocorrencia'] != "Sucesso" && !@$aDados['Erro']){
				// Comunicando com o webservice
				$aRetorno = ComunicaUrl(
					$sCaminhoWebService, 
					json_encode($aDados)
				);
				// Retornando o resultado
				$sResultado = $aRetorno[0];
				$nResultado = $aRetorno[1];
				// Transformo em array
				$aResultado = json_decode($sResultado, true);
			}
			// 
			// Se não tiver erro no retorno
			// Atualizo a tabela de integracao web
			// 
			// $totalItens = sizeof(explode(",", $aDados['Codigo']));
			$qtde = sizeof(explode(",", $aDados['Codigo']));
			if((empty($aResultado["Erro"]) || $aDados['Ocorrencia'] == "Sucesso") && !@$aDados['Erro']){
				$sqlUpdate = "
					UPDATE
						integrar_web
					SET
						INT_STATUS = 3
						, INT_DATA = NOW()
					WHERE
						INT_CODIGOI IN (".$aDados['Codigo'].")";
				$qryUpdate = mysql_query($sqlUpdate) or die (mysql_error());
				// 
			} else {
				$sqlUpdate = "
					UPDATE
						integrar_web
					SET
						INT_STATUS = 2
						, INT_DATA = NOW()
					WHERE
						INT_CODIGOI IN (".$aDados['Codigo'].")";
				$qryUpdate = mysql_query($sqlUpdate) or die (mysql_error());
				// 
                Sinc_Simdesk_REG_NTF("Erro ao exportar registros do banco de dados local para web.<br><br>&nbsp;Código dos registros na tabela de integração: ".$aDados['Codigo']."<br><br>&nbsp; Erro: ".$aResultado['Erro']."<br><br>&nbsp;SQL: ".$aDados['PmAcao']['SQLQUERY']."<br><br>&nbsp;JSON: ".json_encode($aDados));
			}
			// 
			// Localizo o arquivo de sincronização dos produtos
			// Atualizo ele de acordo com os regisros inseridos/atualizados
			// Serve para gerenciar a barra de progresso da exportação
			// 
			$total+= $qtde;
			$nroTotal = fopen("temporarios/exptotal.txt","w");
			fwrite($nroTotal,$total);
			fclose($nroTotal);
		}
        //
        If ( EMPTY($aLista_Mensagens) ) {
           $aLista_Mensagens[] = "Concluído com sucesso.";
        }
        Sinc_Fim_Enviar_Mensagens();
        //
	} ElseIf ( $sAcao=="FECHAR" ) {
      $sRet_Javs .=
	      'parent.document.getElementById("dv_MenuL_Barra").style.visibility="visible";'.
	      "parent.RmElem('".$oJanelaPrinc->sIdObj."');".
	      "parent.Car_".$sNomeAcesso."2.location.href='about:blank';".
	      "parent.Car_".$sNomeAcesso."1.location.href='about:blank';";
	}
}
//

Function Importar($codBanco) {
    Global $sNome_Base_Dados;
	// 
	// Buscando o diretório que ficará armazenado o arquivo da barra de progressos de insert/update de produtos
	// 
	$sCaminhoTemp = getcwd().'/temporarios';
	// 
	// Verifico se o diretório não existe
	// Se não existir -> crio o diretório
	// 
	if(!is_dir($sCaminhoTemp)){
		 mkdir($sCaminhoTemp);
	}
	// 
	// Buscando o caminho do FTP do CALLAPP_ADM
	// 
	$sqlGetCaminho = "
		SELECT
			var_conteudo
		FROM
			config
		WHERE
			var_nome = 'URL_COMUNICACAO_NUVEM'";
	$qryGetCaminho = mysql_query($sqlGetCaminho) or die (mysql_error());
	$ftcGetCaminho = mysql_fetch_array($qryGetCaminho);
	// 
	$str 		= $ftcGetCaminho['var_conteudo'];					// Caminho do CALLAPP_ADM
	$aRetorno 	= ComunicaUrl(										// Chamando a API via CURL
						$str, 
						array(
							"ModNome" => "CALLAPP_ADM"
							, "c" => $codBanco
						)
				); 																				
	$sDados		= $aRetorno[0];  									// Armazenando os daods de retorno
	$aDados		= JSON_DECODE($sDados, true);						// Convertendo o JSON em Array
	// 
	// Buscando a exportação disponível
	// 
	//$sqlGetExportacao = 
	//	 "SELECT
	//			EXP_CODIGO
	//	 FROM
	//			`".DBSql_Bank."`.exportacao
	//	 WHERE
	//			EXP_FILIAL = '".$codBanco."'
	//			AND EXP_DATA_IMPORTACAO < '".date('Y-m-d H:i:s')."'
	//			AND EXP_FINALIZADA = 0";
	//$qryGetExportacao = mysql_query($sqlGetExportacao) or die (mysql_error());
	//$ftcGetExportacao = mysql_fetch_array($qryGetExportacao);
	// 
	// Se existir exportação
	// 
	//if(mysql_num_rows($qryGetExportacao) > 0){
	//	$nCodExportacao = $ftcGetExportacao['EXP_CODIGO'];	 
	//}
	// 
	$sSql = "";    // Armazena a instrução de INSERT / UPDATE
	// 
	// Busco o campo para fazer o versionamento da importação
	// 
	$aCamposLocal = array();  // Array que armazena os campos do banco Local
	$sqlGetCamposProdutos = "
		SELECT 
			`COLUMN_NAME` 
		FROM 
			`INFORMATION_SCHEMA`.`COLUMNS` 
		WHERE 
			`TABLE_SCHEMA`='".$sNome_Base_Dados."' 
			AND `TABLE_NAME`='cad_produto'";
	$qryGetCamposProdutos = mysql_query($sqlGetCamposProdutos) or die (mysql_error());
	while($ftcGetCamposProdutos = mysql_fetch_array($qryGetCamposProdutos, MYSQL_ASSOC)){
		$sIndice = $ftcGetCamposProdutos['COLUMN_NAME'];
		array_push($aCamposLocal, $sIndice);
	}
	// 
	// Busco os campos para fazer o versinamento da importação
	// 
	$aCamposLocalGrupos = array();  // Array que armazena os campos do banco Local
	$sqlGetCamposGrupos = "
		SELECT 
			`COLUMN_NAME` 
		FROM 
			`INFORMATION_SCHEMA`.`COLUMNS` 
		WHERE 
			`TABLE_SCHEMA`='".$sNome_Base_Dados."' 
			AND `TABLE_NAME`='cad_grupo_produtos';";
	$qryGetCamposGrupos = mysql_query($sqlGetCamposGrupos) or die (mysql_error());
	while($ftcGetCamposGrupos = mysql_fetch_array($qryGetCamposGrupos, MYSQL_ASSOC)){
		$sIndice = $ftcGetCamposGrupos['COLUMN_NAME'];
		array_push($aCamposLocalGrupos, $sIndice);
	}
	// 
	// Percorrendo a matriz
	// 
	foreach($aDados as $aRegistros){
		$total=0;
		foreach($aRegistros['CADPRODUTOS'] as $aProdutos){
			// 
			// Buscando se o produto já existe no banco
			// 
			$sqlGetProduto = "
				SELECT
					ITE_CODIGOI
				FROM
					cad_produto
				WHERE
					ITE_CODIGOI = ".$aProdutos['ITE_CODIGOI'];
			$qryGetProduto = mysql_query($sqlGetProduto) or die (mysql_error());
			//
			// Se o produto já existir no banco  -> atualizo via código interno
			// Se o produto não existir no banco -> realizo a inserção
			// 
			if(mysql_num_rows($qryGetProduto) == 0){
				$sSql = "INSERT INTO cad_produto SET ";
			} else {
				$sSql = "UPDATE cad_produto SET ";
			}
			$sql = ""; // String dos campos com os valores
			$aFiliais 	= array();  // Array de filiais (a partir da $sFiliais [explode ;])
			foreach($aProdutos as $sCampo => $sValor){
				//  
				//  
				// Se o campo do foreach for o de filiais
				// Transformo a string em array
				// 
				// Verifico se o campo vindo do banco da web existe no banco local
				// Se existir -> concateno na string do insert/update
				// 
				if($sCampo == "ITE_FILIAIS"){
					$aFiliais = explode(";", $sValor);
				}
				if(in_array($sCampo, $aCamposLocal)){
				
					
					// 
					// Se o campo do foreach for o de item ativo
					// Comparo qual filial foi selecionada (ou todas)
					// Produto ativo de acordo com a seleção de filiais (caso sejam selecionadas mais de uma)
					// Ou
					// Produto ativo de acordo selecionado no formulario (caso a opção todas esteja selecionada)
					// 
					if($sCampo == "ITE_ITEM_ATIVO_"){
						// 
						// Se alguma filial específica for selecionada para receber o produto
						// Senão, mantenho o valor selecionado para todas
						// 
						if(!in_array("Todas", $aFiliais)){
							// 
							// Se a filial local não estiver no array de filiais que receberão o produto ativo
							// Desativo o produto
							// 
							if(!in_array($codBanco, $aFiliais)){
								$sValor = 0;
							} else {
								$sValor = 1;
							}					
							// 
						}
						// 
					}
					$sql .= (EMPTY($sql) ? "" : ", ").$sCampo . " = '".utf8_decode($sValor)."'";
				}
			}    
			// 
			// Concateno a string dos campos junto com a string de insert/update
			// 
			$sSql .= $sql;
			// 
			// Se o produto já existir no sistema, coloco a condição do WHERE
			// 
			if(mysql_num_rows($qryGetProduto) > 0){
				$sSql .= " WHERE ITE_CODIGOI = ".$aProdutos['ITE_CODIGOI'];
			}
			// Executo a query
			$qry = mysql_query($sSql) or die (mysql_error());
			// Incremento o total
			$total++;
			// 
			// Localizo o arquivo de sincronização dos produtos
			// Atualizo ele de acordo com os regisros inseridos/atualizados
			// Serve para gerenciar a barra de progresso da importação
			// 
			$nroArquivoProdutos = fopen($sCaminhoTemp."/sincprod.txt","w");
			fwrite($nroArquivoProdutos,$total);
			fclose($nroArquivoProdutos);
			// 
		}
		//  
		$total = 0;
		foreach($aRegistros['CADGRUPOS'] as $aGrupos){
			// 
			// Buscando se o grupo já existe no banco
			// 
			$sqlGetGrupo = "
				SELECT
					GRU_CODIGO
				FROM
					cad_grupo_produtos
				WHERE
					GRU_CODIGO = ".$aGrupos['GRU_CODIGO'];
			$qryGetGrupo = mysql_query($sqlGetGrupo) or die (mysql_error());
			//
			// Se o grupo já existir no banco  -> atualizo via código interno
			// Se o grupo não existir no banco -> realizo a inserção
			//  
			if(mysql_num_rows($qryGetGrupo) == 0){
				$sSql = "INSERT INTO cad_grupo_produtos SET ";
			} else {
				$sSql = "UPDATE cad_grupo_produtos SET ";
			}
			$sql = ""; // String dos campos com os valores
			// 
			foreach($aGrupos as $sCampo => $sValor){
				//  
				$aFiliais 	= array();  // Array de filiais (a partir da $sFiliais [explode ;])
				// Verifico se o campo vindo do banco da web existe no banco local
				// Se existir -> concateno na string do insert/update
				// 
				if(in_array($sCampo, $aCamposLocalGrupos)){
					//  
					// Se o campo do foreach for o de filiais
					// Transformo a string em array
					// 
					if($sCampo == "GRU_FILIAIS"){
						$aFiliais = explode(";", $sValor);
					}
					// 
					// Se o campo do foreach for o de item ativo
					// Comparo qual filial foi selecionada (ou todas)
					// Grupo ativo de acordo com a seleção de filiais (caso sejam selecionadas mais de uma)
					// Ou
					// Grupo ativo de acordo selecionado no formulario (caso a opção todas esteja selecionada)
					// 
					if($sCaminhoTemp == "GRU_ATIVO_"){
						// 
						// Se alguma filial específica for selecionada para receber o grupo
						// Senão, mantenho o valor selecionado para todas
						// 
						if(!in_array("Todas", $aFiliais)){
							// 
							// Se a filial local não estiver no array de filiais que receberão o produto ativo
							// Desativo o produto
							// 
							if(!in_array($codBanco, $aFiliais)){
								$sValor = 0;
							} else {
								$sValor = 1;
							}					
							// 
						}
						// 
					}
					$sql .= (EMPTY($sql) ? "" : ", ").$sCampo . " = '".utf8_decode($sValor)."'";
				}
			}
			// 
			// Concateno a string dos campos junto com a string de insert/update
			// 
			$sSql .= $sql;
			// 
			// Se o grupo já existir no sistema, coloco a condição do WHERE
			// 
			if(mysql_num_rows($qryGetGrupo) > 0){
				$sSql .= " WHERE GRU_CODIGO = ".$aGrupos['GRU_CODIGO'];
			}
			// Executo a query
			$qry = mysql_query($sSql) or die (mysql_error());
			// Incremento o total
			$total++;
			// 
			// Localizo o arquivo de sincronização dos produtos
			// Atualizo ele de acordo com os regisros inseridos/atualizados
			// Serve para gerenciar a barra de progresso da importação
			// 
			$nroArquivoGrupos = fopen($sCaminhoTemp."/sincgru.txt","w");
			fwrite($nroArquivoGrupos,$total);
			fclose($nroArquivoGrupos);
		}
		//  
	}
	// 
	// Buscando o último codigo interno do cadastro de produtos e incrementando um
	// 
	$sqlGetUltCodIProduto = "
		SELECT
			MAX(ITE_CODIGOI) as CODIGO
		FROM
			cad_produto";
	$qryGetUltCodIProduto = mysql_query($sqlGetUltCodIProduto) or die (mysql_error());
	$ftcGetUltCodIProduto = mysql_fetch_array($qryGetUltCodIProduto);
	$nUltCodIProduto = $ftcGetUltCodIProduto['CODIGO'] + 1;
	// 
	// Atualizando o último código livre na tabela de config
	// 
	$sqlUpdateConfig = "
		UPDATE
			config
		SET
			VAR_CONTEUDO = '".$nUltCodIProduto."'
		WHERE
			VAR_NOME = 'CAD_PRODUTO_SEQCOD'";
	$qryUpdateConfig = mysql_query($sqlUpdateConfig) or die (mysql_error());
	// 
	// Buscando o último codigo interno do cadastro de grupo de produtos e incrementando um
	// 
	$sqlGetUltCodIGrupo = "
		SELECT
			MAX(GRU_CODIGO) as CODIGO
		FROM
			cad_grupo_produtos";
	$qryGetUltCodIGrupo = mysql_query($sqlGetUltCodIGrupo) or die (mysql_error());
	$ftcGetUltCodIGrupo = mysql_fetch_array($qryGetUltCodIGrupo);
	$nUltCodIGrupo = $ftcGetUltCodIGrupo['CODIGO'] + 1;
	// 
	// Atualizando o último código livre na tabela de config
	// 
	$sqlUpdateConfig = "
		UPDATE
			config
		SET
			VAR_CONTEUDO = '".$nUltCodIGrupo."'
		WHERE
			VAR_NOME = 'CAD_GRUPO_PRODUTO_SEQCOD'";
	$qryUpdateConfig = mysql_query($sqlUpdateConfig) or die (mysql_error());
	// 
	// Chamando a API via CURL para Finalizar a Exportação
	// Finalizar a Exportação = Atualizar a data de sincronização e o campo de exportação finalizada
	// 
	$aRetorno = ComunicaUrl(
					$str, 
					array(
						"ModNome" => "CALLAPP_ADM"
						, "c" => $codBanco
						, "ocorrencia" => "FINALIZAR_EXPORTACAO"
					)
				);
	$sDados = $aRetorno[0];
	$aDados = JSON_DECODE($sDados, true);
	// 
	return "Sucesso";
}
//
//
Function Sinc_Simdesk_REG_NTF( $sTexto ) {
  Global $Dados_Empresa, $sTitulo_Mensagem, $aLista_Mensagens;
  $nCodigo_EmpSm = @$Dados_Empresa['EMP_CODIGO']+0;
  Info_Evento( $sTexto , 1 );
  Reg_Ntf_Simdesk( $nCodigo_EmpSm, $sTexto, $sTitulo_Mensagem );
  $aLista_Mensagens[] = $sTexto;
}
//
Function Sinc_Fim_Enviar_Mensagens() {
  Global $aLista_Mensagens;
  $aEnviarDados = [ "Msgs" => $aLista_Mensagens ];
  $sEnviarDados = JSON_ENCODE($aEnviarDados);
  //OB_CLEAN();
  HEADER('Cache-Control: no-cache, must-revalidate'); 
  HEADER('Access-Control-Allow-Origin:*');
  HEADER('Content-Type: application/json;charset=utf-8');
  HEADER('Content-Length: '.STRLEN($sEnviarDados) );
  ECHO $sEnviarDados;
  EXIT;
}
//
?>