<?php
REQUIRE_ONCE('./global/funcoes_acbr.inc');                // Carrega as funcoes do ACBR
REQUIRE_ONCE("./global/funcoes_cad_telefones.inc");
//
$sNomeIdJan1    = 'iJan_FisECF_Cupom';
$sNomeIdJan2    = 'iJan_FisECF_Princ';
$sNomeIdJan3    = 'iJan_FisCFE_E_XML';
$sNomeIdJan6    = 'iJan_Cxa_InsPr';     // Tela para inserir produto
$sCorBarraInf   = '#E8E3CE';
$sTipoLocal     = SQLVarConfig('NOME_LOCAIS_SVC');
$sData_Trabalho = SQLVarConfig('DATA_DE_TRABALHO');
$sSQL_ExbModPag = "SELECT * FROM cad_modalidade_pag WHERE MPG_MOS_REC=1 AND MPG_TRAVADO=0 ORDER BY MPG_N_ORDEM ASC, MPG_DESCRIC ASC;";
$nTmpFrmEnv = 500;
$nModuloChamado = @$aSessao['ECF_Mod_Chamado']+0;        // Qual modulo foi chamado: 1 e 2=Fin_Fat_Geral, 3=Cxa_receber_local
$nTipoFiscal    = Terminal_e_Fiscal();
//
$ImpFiscal = New ComACBR();
$ImpFiscal->Host_IP         = ObterIPdoCliente();
$ImpFiscal->Host_Porta      = 3434;
$ImpFiscal->sECF_CNPJ       = $Dados_Empresa['EMP_N_CNPJ'];
$ImpFiscal->sECF_CNPJ_S     = SoftHouse_CNPJ;
$ImpFiscal->sSAT_Assinatura = SQLVarConfig('FISCAL_SAT_ASSINATURA');
$ImpFiscal->nTimeOutECF     = 10;
If ( $nTipoFiscal==1 ) {
   $ImpFiscal->nTipo_EmissoFiscal = Acbr_EmissorFiscal_ECF;
} ElseIf ( $nTipoFiscal==2 ) {
   $ImpFiscal->nTipo_EmissoFiscal = Acbr_EmissorFiscal_SAT;
}
//
//  ** JANELA DA EMISSÃO DE CUPOM **
If ( $sSubModulo=="ECF_CUPOM" ) {
    // Criar objeto Janela
    $oJanelaPrinc = New R_Janela();
    $oJanelaPrinc->sIdObj  = $sNomeIdJan1;
    $oJanelaPrinc->nTop    = 2;
    $oJanelaPrinc->nLeft   = 5;
    $oJanelaPrinc->nWidth  = 780;   // Largura
    $oJanelaPrinc->nHeight = 0;     // Altura
	$oJanelaPrinc->nLeft  += ($nTela_W/2)-($oJanelaPrinc->nWidth/2);
    $oJanelaPrinc->sTitulo = 'Emissão de cupom fiscal';
    //    
    $nFat_CodigoI = @$_REQUEST['Fat_CodigoI']+0;
	//
	$sJavaTravarJ =
	  "parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',true);".
	  "parent.document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='visible'; ";
	$sJavaFechaEr = "parent.Car_".$sNomeAcesso."4.location.href = './car_js.php?mod=".$sModulo."&submod=".$sSubModulo."&nomeacs=".$sNomeAcesso."&acao=FECHAR';";
	$oJanelaPrinc->sJavOnClickF =
         $sJavaTravarJ.
		 $sJavaFechaEr.
         //"parent.document.forms.fmPFisCup2.acao.value='FECHAR'; ".
         //"NomeQdrCar = parent.document.forms.fmPFisCup2.target;".
         //"NomeQdrCar = NomeQdrCar.substr(0,NomeQdrCar.length-1)+'6';".
         //"parent.document.forms.fmPFisCup2.target = NomeQdrCar;".
         //"parent.document.forms.fmPFisCup2.submit();".
		 "";
    //
	// PARAMETRO INVALIDO
	If ($nFat_CodigoI==0 && $sAcao<>"FECHAR")  {
	   $sRet_Javs .=
	       Info_Evento('Parametros do codigo do faturamento interno inválido.',0).
           $sJavaFechaEr;
    //
    // ATUALIZA TELA: PRODUTOS E VALORES
    } ElseIf ( $sAcao=="ATUALIZA" ) {
	   //
       $nValorAcre  = Somente_Numeros(@$_REQUEST['Acrecim'],'.,');
       $nValorAcre  = STR_REPLACE(",",".",$nValorAcre)+0;
       $nValorDesc  = Somente_Numeros(@$_REQUEST['Descont'],'.,');
       $nValorDesc  = STR_REPLACE(",",".",$nValorDesc)+0;
	   $nTotOpcional= 0;   // total dos opcionais 
       //$nValorPag1  = Somente_Numeros(@$_REQUEST['PagMod1'],'.,');
       //$nValorPag1  = STR_REPLACE(",",".",$nValorPag1)+0;
       //$nValorPag2  = Somente_Numeros(@$_REQUEST['PagMod2'],'.,');
       //$nValorPag2  = STR_REPLACE(",",".",$nValorPag2)+0;
	   //
	   $aPagamentos = $aSessao[$sNomeAcesso.'_PAGAMENTO'];
	   ForEach ( $aPagamentos As $sIndiceECF=>$nValorPagM ) {
           If ( STRLEN($sIndiceECF)>0 ) {
              $nValorPagM = Somente_Numeros(@$_REQUEST['PagMod_'.$sIndiceECF],'.,');
              $nValorPagM = STR_REPLACE(",",".",$nValorPagM)+0;
       	      $aPagamentos[ $sIndiceECF ] = $nValorPagM;
           }
       }
	   $aSessao[$sNomeAcesso.'_PAGAMENTO'] = $aPagamentos;
	   //
       $sCli_CPFCNP = @$_POST['CPFCNPJ']; 
       $sCli_NomeCP = @$_POST['NomeCli'];
       $sCli_Endere = @$_POST['Enderec']; 
       //
	   $bIniciarTela = @$aSessao[$sNomeAcesso.'_INICIAR']+0;
	   $aSessao[$sNomeAcesso.'_INICIAR'] = 0;
	   //
	   $Row_FatGer = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_CODIGOI=".$nFat_CodigoI.";") or die(MYSQL_ERROR());
	   $Row_FatGer = MYSQL_FETCH_OBJECT($Row_FatGer);
	   If ( (@$Row_FatGer->FAT_CLIENTE+0)>0 ) {
	      $Row_CadCli = MYSQL_QUERY("SELECT * FROM cad_cliente WHERE CLI_CODIGOI=".$Row_FatGer->FAT_CLIENTE.";") or die(MYSQL_ERROR());
	      If ( ! $Row_CadCli = MYSQL_FETCH_OBJECT($Row_CadCli) ) {
	         UNSET( $Row_CadCli );
	      }
	   }
	   //
	   If ($aSessao[$sNomeAcesso.'_JANESPERA']) {
	      $aSessao[$sNomeAcesso.'_JANESPERA'] = False;
	      $sRet_Javs .=
		     "parent.JanEspera(false);".
             'parent.document.getElementById("i_FisCup_CPFCNPJ").focus();'.
			 "";
	   }
       //
	   // Puxar informações na entrada
       If ($bIniciarTela) {
          //
		  // Puxar informações das tabelas e Fat_Geral e Fat_Item
		  $sMsg_Erro = '';
		  $sNCM_Erro = '';
		  If ($nFat_CodigoI>0) {
	         If ( (@$Row_FatGer->FAT_CANCELA+0)>0 OR (@$Row_FatGer->FAT_RCFORMA+0)==0 ) {
	            $sRet_Javs .=     // Nao recebido ou cancelada
	                Info_Evento('Somente é permitido esta operação com comanda<br> recebida e não cancelada.',1).
                    $sJavaFechaEr;
	         } Else {
			    // Puxar dados do Cad_Tabela_IBPT
				$aTabelaIBPT = ARRAY();
				$aTabelaCEST = ARRAY();
				
                $Rows = MYSQL_QUERY("SELECT * FROM cad_tabela_ibpt;") Or Die(MYSQL_ERROR());
                While ( $Row = MYSQL_FETCH_ARRAY($Rows) ) {
				   $aTabelaIBPT[$Row['IBP_COD_NCM']] = $Row;
				}
				// CEST
				$Rows_Cest = MYSQL_QUERY("SELECT * FROM cad_cest;") Or Die(MYSQL_ERROR());
                While ( $Row_C = MYSQL_FETCH_ARRAY($Rows_Cest) ) {
				   $aTabelaCest[$Row_C['CST_CODCES']] = $Row_C;
				}
				//
			    // Puxar dados do FAT_GERAL e FAT_ITEM
				$aLista_dos_Itens = ARRAY();
				$sItensCancelados = '';
	            $nFat_CodigoI = $Row_FatGer->FAT_CODIGOI;
		        $nR_Local = $Row_FatGer->FAT_NUM_MES;
                $Rows_FatIte = MYSQL_QUERY("SELECT * FROM fat_item WHERE FAT_GAR_EST=0 AND FAT_PRE_TOT > 0 AND FAT_CFATGER=".$Row_FatGer->FAT_CODIGOI." ORDER BY FAT_DAT_HOR ASC;") or die(MYSQL_ERROR());
                $aCoresLinPr = ARRAY( 0=>0, 1=> '#FFFFAB', 2=> '#FFEEB9');
                $nValorTotal = 0;
                $nTotOpcional = 0;
				While ( $Row_FatIte = MYSQL_FETCH_ARRAY($Rows_FatIte) ) {
				   $bExecAdc = True;
				   $aDados_Item = ARRAY();
				   $aDados_Item[0]  = 0;           // Codigo único no cupom, pode ser o do Fat_item
				   $aDados_Item[1]  = '';          // Codigos   do produto   (100;104;180;100)
				   $aDados_Item[2]  = '';          // Descrição do produto   (AAA;BBB;CCC;DDD)
				   $aDados_Item[3]  = 0 ;          // Aliquota do ICMS       (18.00)
				   $aDados_Item[4]  = 0 ;          // Quantidade
				   $aDados_Item[5]  = '';          // Unidade                (UN ou KG ou PC etc...)
				   $aDados_Item[6]  = 0 ;          // Valor unitário do item (22.50)
				   $aDados_Item[7]  = '';          // Lista de opcionais direto do Banco de dados
				   $aDados_Item[8]  = 0;           // Valor total dos opcionais
				   $aDados_Item[9]  = '';          // Tipo do preço
				   $aDados_Item[10] = '';          // Codigo ECF da aliquota ICMS
				   $aDados_Item[11] = '00000000';  // Codigo NCM do produto
				   $aDados_Item[12] = 0;           // Codigo C.F.O.P.
				   $aDados_Item[13] = 0;           // CST do PIS
				   $aDados_Item[14] = 0;           // CST do COFINS
				   $aDados_Item[15] = 0;           // CST do ICMS
				   $aDados_Item[16] = 0;           // Origem do produto: 0=Nacional, 1=Importado
				   $aDados_Item[17] = 0;           // Aliquota do PIS
				   $aDados_Item[18] = 0;           // Aliquota do COFINS
				   $aDados_Item[19] = '';          // Codigo de barras EAN
				   $aDados_Item[20] = '0000000000'; // Codigo cest do produto
				   //
				   $aDados_Item[0] = $Row_FatIte['FAT_CODIGOI'];
                   For ($iContIte = 1; $iContIte<=4; $iContIte++) {
                      If ($Row_FatIte['FAT_CODITE'.$iContIte]==0) { BREAK; }
					  $sSQLQuery =
					      "SELECT prd.*, ori.*, trb.*, icm.* ".
						  "FROM cad_produto             AS prd ".
						  "LEFT JOIN cad_produto_origem AS ori ON ori.ORI_CODIGO =prd.ITE_COD_ORI ".
						  "LEFT JOIN cad_tributacao     AS trb ON trb.TRB_CODIGOI=prd.ITE_FISCAL_TRIB ".
						  "LEFT JOIN cad_cst            AS icm ON icm.CST_CODIGOI=trb.TRB_COD_CST ".
						  "WHERE ITE_CODIGOI=".$Row_FatIte['FAT_CODITE'.$iContIte].
						  ";";
                      $Row_CadPro = MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
                	  If ( $Row_CadPro=MYSQL_FETCH_OBJECT($Row_CadPro) ) {
                	     If ($Row_CadPro->ITE_FISCAL_TRIB>0 && $aDados_Item[3]==0) {
                	 	    $aDados_Item[3]  = $Row_CadPro->TRB_I_C_M_S+0;
                	 	    $aDados_Item[10] = $Row_CadPro->CST_COD_ECF;
						    $aDados_Item[12] = $Row_CadPro->TRB_COD_CFO+0;
						    $aDados_Item[13] = $Row_CadPro->TRB_COD_PIS+0;
						    $aDados_Item[14] = $Row_CadPro->TRB_COD_CFN+0;
						    $aDados_Item[15] = $Row_CadPro->CST_CODFISC+0;
						    $aDados_Item[16] = $Row_CadPro->ORI_TIPCAL+0;
						    $aDados_Item[17] = $Row_CadPro->TRB_PER_PIS+0;
						    $aDados_Item[18] = $Row_CadPro->TRB_PER_CFN+0;
                	 	 }
					 	 //$aDados_Item[1] .= $Row_CadPro->ITE_CODIGOI.';'; 
						 // 18-05-16 imprimia o codigo interno
						 // cicero - gustavo - robson - Alteração 3680 - Piz Pepe no dia 29/01/2016
                         // conforme contador do cliente deve sair o codigo livre						 
						 $aDados_Item[1] .= $Row_CadPro->ITE_CODIGOL.';';
					 	 $aDados_Item[2] .= $Row_CadPro->ITE_DESCRIC.';';
				         

						If ( STRLEN($Row_CadPro->ITE_COD_NCM)==0 ) {
				    		$sNCM_Erro .= 'Produto sem NCM: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
							//$bExecAdc = False;
				         } ElseIf ( (@$Row_CadPro->TRB_COD_CFO+0)==0 ) {
				    		$sNCM_Erro .= 'Produto sem C.F.O.P: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
				         } ElseIf ( (@$Row_CadPro->CST_CODFISC+0)==0 ) {
				    		$sNCM_Erro .= 'Produto sem CST ICMS: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
				         } ElseIf ( (@$Row_CadPro->TRB_COD_PIS+0)==0 ) {
				    		$sNCM_Erro .= 'Produto sem CST PIS: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
				         } ElseIf ( (@$Row_CadPro->TRB_COD_CFN+0)==0 ) {
				    		$sNCM_Erro .= 'Produto sem CST COFINS: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
				         } Else {
						    If ( ISSET($aTabelaIBPT[$Row_CadPro->ITE_COD_NCM] ) ) {
							   $aDados_Item[11] = $Row_CadPro->ITE_COD_NCM;
							} Else {
				               $sNCM_Erro .= 'Produto com NCM inválido: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
							   //$bExecAdc = False;
							}
							//
							If ( ((@$Row_CadPro->CST_CODFISC+0)==60)|| ((@$Row_CadPro->CST_CODFISC+0)==500) ) {
						   
							   If ( ISSET($aTabelaCest[$Row_CadPro->ITE_CES_COD] ) ) {
							      $aDados_Item[20] = $Row_CadPro->ITE_CES_COD;
							   } Else {
				                  $sNCM_Erro .= 'Produto com CEST inválido: '.$Row_CadPro->ITE_CODIGOL.' - '.$Row_CadPro->ITE_DESCRIC.'<br>';
							   //$bExecAdc = False;
							   }
							}
							
						 }
                	  }
                   }
				   $aDados_Item[4] = $Row_FatIte['FAT_QTD_ITE'];
				   $aDados_Item[5] = ( EMPTY($Row_CadPro->ITE_SIG_UNIDADE) ? 'UN' : $Row_CadPro->ITE_SIG_UNIDADE );
				   //$aDados_Item[6] = $Row_FatIte['FAT_PRE_TOT']-$Row_FatIte['FAT_PRE_OPC']; JA ESTAVA COMENTADO
				   IF ($Row_FatIte['FAT_UNITARI']== 0) { // COMO ESTAVA ANTES SEM ESTE IF 15-04-16 
				      $aDados_Item[6] = $Row_FatIte['FAT_PRE_TOT'];
				      $aDados_Item[6] = $aDados_Item[6] / $aDados_Item[4];
				   } ELSE {
				      $aDados_Item[6] = $Row_FatIte['FAT_UNITARI'];
				   }
				   $aDados_Item[7] = $Row_FatIte['FAT_OPCINAL'];
				   //$aDados_Item[8] = $Row_FatIte['FAT_PRE_OPC'];
				   $aDados_Item[9] = $Row_FatIte['FAT_PRE_TIP'];
				   //
				   $nTotOpcional =  $nTotOpcional + $Row_FatIte['FAT_PRE_OPC'];  // acumula pre_opc de todos os itens
				   //
				   If ($bExecAdc) {
				      $aLista_dos_Itens[] = $aDados_Item;
				      If ( STRLEN($Row_FatIte['FAT_CANITEM'])>0 ) {
				         $sItensCancelados .= '('.$Row_FatIte['FAT_CODIGOI'].')';
				      }
				      If (STRLEN($aDados_Item[10])==0) {
				         $sMsg_Erro = 'Alguns produtos estão sem aliquota, eles serão cancelados da emissão do cumpom fiscal.';
				         $sItensCancelados .= '('.$Row_FatIte['FAT_CODIGOI'].')';
				      }
				   }
                }
				//
                // ** Pagamentos **
				$aPagamentos = ARRAY();
				$aPag_Modali = ARRAY();
                $Rows_MovPag = MYSQL_QUERY($sSQL_ExbModPag) or die(MYSQL_ERROR());
                While ( $Row_MovPag = MYSQL_FETCH_OBJECT($Rows_MovPag) ) {
				   $sIndiceECF = '';
				   If ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ) {
				      $sIndiceECF = $Row_MovPag->MPG_IND_ECF;
				   } ElseIf ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_SAT ) {
				      $sIndiceECF = Str_Zero($Row_MovPag->MPG_IND_SAT,2);
				   }
                   If ( STRLEN($sIndiceECF)>0 && (!ISSET($aPagamentos[ $sIndiceECF ])) ) {
					  $aPagamentos[ $sIndiceECF ] = 0;
					  $aPag_Modali[ $sIndiceECF ] = $Row_MovPag->MPG_DESCRIC;
					  //
                   }
                }				
		        $aSessao[$sNomeAcesso.'_PAG_MODAL']=$aPag_Modali;
				//
                $Rows_MovPag = MYSQL_QUERY("SELECT * FROM mov_modalidade_pag,cad_modalidade_pag WHERE MOV_CFATGER=".$nFat_CodigoI." AND (MOV_MPGCODI=MPG_CODIGOI OR (MOV_MPGCODI=999 AND MPG_CODIGOI=1));") or die(MYSQL_ERROR());
                While ( $Row_MovPag = MYSQL_FETCH_OBJECT($Rows_MovPag) ) {
				   $sIndiceECF = '';
				   If ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ) {
				      $sIndiceECF = $Row_MovPag->MPG_IND_ECF;
				   } ElseIf ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_SAT ) {
				      $sIndiceECF = Str_Zero($Row_MovPag->MPG_IND_SAT,2);
				   }
				   If ( $Row_MovPag->MOV_MPGCODI==0 ) { Continue; }
                   If ( STRLEN($sIndiceECF)>0 ) {
					  $aPagamentos[ $sIndiceECF ] = @$aPagamentos[ $sIndiceECF ] + $Row_MovPag->MOV_VALORMV;
                   } Else {
				      // Erro sem posição fiscal
				      $sMsg_Erro = 'Existe modalidade de pagamento nesta comanda que não contem posicão no emissor fiscal no cadastro.';
				   }
                }
		        //
	            $aSessao[$sNomeAcesso.'_FAT_ITENS'] = $aLista_dos_Itens;
	            $aSessao[$sNomeAcesso.'_ITENS_CAN'] = $sItensCancelados;
				$aSessao[$sNomeAcesso.'_PAGAMENTO'] = $aPagamentos;
			 }
		  }
		  //
          //Dados do consumidor
          If (STRLEN(@$Row_CadCli->CLI_NOMECP) >0 && STRLEN($sCli_NomeCP)==0 ) { $sCli_NomeCP = $Row_CadCli->CLI_NOMECP ; }
          If (STRLEN(@$Row_CadCli->CLI_ENDLOG) >0 && STRLEN($sCli_Endere)==0 ) { $sCli_Endere = $Row_CadCli->CLI_ENDLOG.", ".$Row_CadCli->CLI_ENDNUM." ".$Row_CadCli->CLI_ENDCPL ; }
          If (STRLEN(@$Row_FatGer->FAT_NOMCLIE)>0 && STRLEN($sCli_NomeCP)==0 ) { $sCli_NomeCP = $Row_FatGer->FAT_NOMCLIE; }
          //Acrécimo
          $nValorAcre = (@$Row_FatGer->FAT_TAXASVR+0) + (@$Row_FatGer->FAT_TAXACVR+0)+$nTotOpcional;
          //$nValorDesc = (@$Row_FatGer->FAT_TOT_VAL+$nValorAcre) * ((@$Row_FatGer->FAT_DESCONT+0)/100);
		  $nValorDesc = (@$Row_FatGer->FAT_VALDESC)+0;
		  //
		  If (STRLEN($sMsg_Erro.$sNCM_Erro)>0) {
		     If ( STRLEN($sNCM_Erro)>0 ) {
			    $sNCM_Erro =
				   'Encontrei produtos faltando informações para<br>cálculo de tributos no cupom fiscal.'.
				   '<p>'.
				   '<div style="font-size:12px; width:70%;" align="left">'.
				   $sNCM_Erro.
				   '</div>'.
				   '<br>';
			 }
	         $sRet_Javs .= Info_Evento($sMsg_Erro.'<br>'.$sNCM_Erro,0,"Emissão de cupom fiscal");
		  }
		  //
       }
	   //
	   $aLista_dos_Itens = @$aSessao[$sNomeAcesso.'_FAT_ITENS'];
	   $sItensCancelados = @$aSessao[$sNomeAcesso.'_ITENS_CAN'];
	   $aPagamentos      = @$aSessao[$sNomeAcesso.'_PAGAMENTO'];
	   //
	   $bPerm_Cupom = True;
	   $sLstProds_Html = '';
	   $sLstBInf1_Html = '';
	   $sLstBInf3_Html = '';
	   // **
          //$sRet_Javs .=
          //    "parent.document.forms.fmPFisCup2.Fat_CodigoI.value='".$nFat_CodigoI."';".
          //    "";
	      $aCoresLinPr = ARRAY( 0=>0, 1=> '#FFFFAB', 2=> '#FFEEB9');
		  $nValorTotal = 0;
		  ForEach ($aLista_dos_Itens As $aDados_Item) {
			 //
		     $aCoresLinPr[0]++;
		     If ( STRLEN(@$aCoresLinPr[$aCoresLinPr[0]])==0 ) { $aCoresLinPr[0] = 1; }
	         $sCorLinha = @$aCoresLinPr[$aCoresLinPr[0]];
			 //
			 // Item Cancelado
			 $bItemCancelado = ( STRPOS(" ".$sItensCancelados,"(".$aDados_Item[0].")")>0 );
			 //
			 $sImgBotRmv = 'btimg_remover.png';
			 $sTitBotRmv = 'Remover este produto';
             If ( $bItemCancelado ) { // Item cancelado
			    $sCorLinha = '#CCCCCC';
				$sImgBotRmv = 'btimg_volta.png';
				$sTitBotRmv = 'Incluir novamente este produto';
			 } Else {
			    $nValorTotal += ($aDados_Item[6]*$aDados_Item[4])+$aDados_Item[8];
			 }
			 //
			 $sOnClick_Del =
                  "JanEspera(true, 'Aguarde...');".
			      "document.forms.fmPFisCup2C.acao.value='RMV_ITEM';".
			      "document.forms.fmPFisCup2C.Fat_Item_CodI.value='".$aDados_Item[0]."';".
                  "document.forms.fmPFisCup2C.submit();".
				  "";
			 //
		     $sIte_Descric = $aDados_Item[2];
			 $aIte_Descric = EXPLODE(';',$aDados_Item[2]);
			 $iContIte = COUNT( $aIte_Descric )-1;
			 If ($iContIte>1) {
			    $sIte_Descric = '';
			    ForEach ($aIte_Descric As $s_ADescric) {
				   If (STRLEN($s_ADescric)>0) {
			          $sIte_Descric .= " 1 / ".$iContIte." - ".$s_ADescric.'<br>';
				   }
				}
			 } Else {
			    $sIte_Descric = STR_REPLACE(";","", $sIte_Descric);
			 }
			 // Monta lista de opcionais
			 $sHTMLLstOpc = '';
			 If ( STRLEN($aDados_Item[7])>1 ) {
			    $aFat_Opcional = EXPLODE(';',$aDados_Item[7]);
                For ($iContIteOpc = 0; $iContIteOpc<=200; $iContIteOpc++) {
				     If ( STRLEN($aFat_Opcional[$iContIteOpc])==0 ) { BREAK; }
					 $aFat_OpcItem = EXPLODE(',',$aFat_Opcional[$iContIteOpc]);
					 // 0=Codigo do Item, 1=Quantidade, 2=Preco total
	                 $Row_CadPro = MYSQL_QUERY("SELECT * FROM cad_produto WHERE ITE_CODIGOI=".(@$aFat_OpcItem[0]+0).";") or die(MYSQL_ERROR());
				     If ( $Row_CadPro=MYSQL_FETCH_OBJECT($Row_CadPro) ) {
					    $sHTMLLstOpc .=
						    "<table width='100%'>".
							 "<tr>".
							  '<td width="45px"></td>'.
							  '<td width="15px" align="right">'.
					 	       $aFat_OpcItem[1].' x'.
							  '</td>'.
							  '<td>'.
					           $Row_CadPro->ITE_DESCRIC.
							  '</td>'.
							//  '<td width="70px">'.
					 	    //   ( ($aFat_OpcItem[2]+0>0) ? 'R$ '.FormatoMoeda($aFat_OpcItem[2]) : '').
							//  '</td>'.
							  '<td width="20px"></td>'.
							 "</tr>".
					 	    "</table>";
					 }
				}
			 }
			 // Tipo do preço (TAMANHO)
			 $sDescri_TipPre = $aDados_Item[9];
			 If ( $sDescri_TipPre=='M' ) {
			    $sDescri_TipPre = '(Meia)';
			 } ElseIf ( STRLEN($sDescri_TipPre)==0 ) {
			    $sDescri_TipPre = '';
			 } Else {
			    $sDescri_TipPre = SQLVarConfig('DESCRI_PROPRECO'.$sDescri_TipPre);
			 }
			 // Observações
			 //$sFat_Observa = $Row_FatIte['FAT_OBSERV1'].'<br>'.$Row_FatIte['FAT_OBSERV2'];
			 //If (STRLEN($sFat_Observa)>4) {
             //   $sFat_Observa =
             //       "<table width='100%'>".
             //   	 "<tr>".
             //   	  '<td width="45px"></td>'.
             //   	  '<td>'.
             //          $sFat_Observa.
             //   	  '</td>'.
             //   	  '<td width="20px"></td>'.
             //   	 "</tr>".
             //       "</table>";
			 //} Else {
			 //  $sFat_Observa = '';
			 //}
			 $sFat_Observa = '';
			 //
			 //
		     $sLstProds_Html .=
			    "<table border='0' style='width:100%; background-color:".$sCorLinha.";'>".
			     "<tr>".
			      "<td width='34px' height='25px' align='left' valign='middle'>".
			        '&nbsp;<img src="./images/'.$sImgBotRmv.'" border="0" style="cursor:pointer;" onclick="'.$sOnClick_Del.'" title="'.$sTitBotRmv.'">'.
			      "</td>".
			      "<td width='30px' align='right' style='font-weight:bold; color:555555;'>".
			       ($aDados_Item[4]+0).' x '.
			      "</td>".
				  ( STRLEN($sDescri_TipPre)>0 ?
			      "<td width='50px' align='right'>".
				   $sDescri_TipPre.'&nbsp;-&nbsp;'.
			      "</td>" : '').
			      "<td style='font-weight:bold; color:555555;'>".
			       $sIte_Descric.
			      "</td>".
				  ( $aDados_Item[3]>0 ?
				  '<td width="38px" align="right">'.
				   $aDados_Item[3]." %".
				  '</td>'
				  : '').
				  '<td width="6px" align="right">'.
				   '&nbsp;'.
				  '</td>'.
			      "<td width='70px' align='left' style='font-weight:bold; font-size:12px; color:#770000;'>".
			       //"R$ ".FormatoMoeda(($aDados_Item[6]*$aDados_Item[4])+$aDados_Item[8]).
			       "R$ ".FormatoMoeda(($aDados_Item[6]*$aDados_Item[4])).
			      "</td>".
			     "</tr>".
			    "</table>".
				( STRLEN($sHTMLLstOpc.$sFat_Observa)>3 ?
				'<div style="width:100%; background-color:'.$sCorLinha.';">'.
				$sHTMLLstOpc.
				$sFat_Observa.
				'</div>'.
				'<div style="height:6px;"></div>'
				: '').
			    "<div style='width:100%; height:2px;'></div>".
			    "";
		  }
		  // ****
		  // Valor Total Geral
		  $nValorGeral = ROUND( ($nValorAcre + $nValorTotal - $nValorDesc), 2);
	      $aSessao[$sNomeAcesso.'_FAT_TOTPRO'] = $nValorTotal;
		  $nValorTotalR = 0;
	      ForEach ( $aPagamentos As $sIndiceECF=>$nValorPagM ) {
		     $nValorTotalR += $nValorPagM;
	         $sRet_Javs .=  "parent.document.getElementById('i_FisECF_PagMod_".$sIndiceECF."').value = '".FormatoMoeda($nValorPagM)."'; ";
		  }
		  $nValTroco = $nValorTotalR - $nValorGeral;
		  //
		  $sLstBInf1_Html =
			   "<span style='color:#FFFFFF; font-size:16px; font-weight:bold;'>".
			    "Total dos produtos: R$ ".FormatoMoeda($nValorTotal).
			   "</span>".
			   "";
		  //
		  If ($nValorTotal==0) {
			 $bPerm_Cupom = False;
		     $sLstBInf3_Html .=
		         "<span style='font-size:16px; color:#FF6600; font-weight:bold;'>".
		          "NÃO HÁ PRODUTOS PARA EMITIR O CUPOM".
		         "</span>";
		  } ElseIf ($nValorAcre>$nValorTotal OR $nValorDesc>$nValorTotal) {
			 $bPerm_Cupom = False;
		     $sLstBInf3_Html .=
		         "<span style='font-size:16px; color:#FF6600; font-weight:bold;'>".
		          "NÃO É PERMITIDO, ACRÉCIMO OU DESCONTO MAIOR QUE O SUBTOTAL.".
		         "</span>";
		  } ElseIf ($nValTroco==0) {
		     $sLstBInf3_Html .=
		         "<span style='font-size:16px; color:#FFFF00; font-weight:bold;'>".
		          'Pagamento exato'.
		         "</span>";
		  } ElseIf ($nValTroco>0) {
		     $sLstBInf3_Html .=
		         "<span style='font-size:16px; color:#FFFF00; font-weight:bold;'>".
		          "Troco de R$ ".FormatoMoeda($nValTroco).
		         "</span>";
		  } ElseIf ($nValTroco<0) {
			 $bPerm_Cupom = False;
		     $sLstBInf3_Html .=
		         "<span style='font-size:16px; color:#FF6600; font-weight:bold;'>".
		          "Falta receber R$ ".FormatoMoeda($nValTroco).
		         "</span>";
		  }
		  //
		  $sLstBInf2_Html =
		      '<table width="100%">'.
			   '<tr>'.
			    '<td align="right" style="font-size:13px;">'.
			     "Total de pagamento digitado:".
				'</td>'.
			    '<td width="130px" align="left" style="font-size:13px; font-weight:bold;">'.
			     'R$ '.FormatoMoeda($nValorTotalR).
				'</td>'.
			   '</tr>'.
			  '</table>'.
		      //"&nbsp;<br>".
			  "";
		  //
          If ( (@$Row_FatGer->FAT_CLIENTE+0)>0){
             $aTelefones = CapturarTelefones(1, (@$Row_FatGer->FAT_CLIENTE+0));
          }
		  $sLstProds_Html =
		      "<table width='100%'>".
			   "<tr>".
			    "<td align='center'>".
				 "<span style='font-weight:bold; font-size:16px;'>".
			     ((@$Row_FatGer->FAT_TIP_LOC+0)==0 ? STRTOUPPER($sTipoLocal).' '.Str_Zero((@$Row_FatGer->FAT_NUM_MES+0),3).' ' : '').
			     ((@$Row_FatGer->FAT_TIP_LOC+0)==1 ? 'BALCÃO ' : '').
			     ((@$Row_FatGer->FAT_TIP_LOC+0)==2 ? 'ENTREGA ' : '').
				 "</span>".
				"<br>".
				 'Comanda: '.Str_Zero($Row_FatGer->FAT_SQCOMAN,4).'&nbsp;&nbsp;&nbsp;'.
			     "<span style='color:#006600;'>DATA: </span>".
				 ConvertDataUSBR(@$Row_FatGer->FAT_DATAINI)." ".DATE("H:i:s",ConvertDtHrSTR(@$Row_FatGer->FAT_DAT_INI)).
				"</td>".
			   "</tr>".
			  "</table>".
			  ( (@$Row_FatGer->FAT_TIP_LOC)>0 ?            //  Não for mesa
		      "<table>".
		       "<tr>".
			    "<td width='75px' align='right' style='color:#006600;'>".
				 "Nome:".
				"</td>".
			    "<td align='left'>".
				 (@$Row_FatGer->FAT_NOMCLIE).
				"</td>".
			   "</tr>".
			   ( (@$Row_FatGer->FAT_TIP_LOC+0)==2 ?         //  Somente Entrega
		       "<tr>".
			    "<td align='right' style='color:#006600;'>".
				 "Bairro:".
				"</td>".
			    "<td align='left'>".
				 @$Row_CadCli->CLI_ENDBAI.
				 "&nbsp;&nbsp;&nbsp;&nbsp;".
				 "<span style='color:#006600;'>Telefone:</span>&nbsp;".
				 @$aTelefones[0].
				 " , ".
				 @$aTelefones[1].
				"</td>".
			   "</tr>".
		       "<tr>".
			    "<td align='right' style='color:#006600;'>".
				 "Endereço:".
				"</td>".
			    "<td align='left'>".
				 @$Row_CadCli->CLI_ENDLOG.', '.@$Row_CadCli->CLI_ENDNUM.' '.@$Row_CadCli->CLI_ENDCPL.
				"</td>".
			   "</tr>"
			   : '').
			  // Obs 1
			  ( STRLEN($Row_FatGer->FAT_OBSERV1)>0 ?
		       "<tr>".
			    "<td align='right' style='color:#006600;'>".
				 "Observação 1:".
				"</td>".
			    "<td align='left'>".
				 $Row_FatGer->FAT_OBSERV1.
				"</td>".
			   "</tr>"
			   : '').
			  // Obs 2
			  ( STRLEN($Row_FatGer->FAT_OBSERV2)>0 ?
		       "<tr>".
			    "<td align='right' style='color:#006600;'>".
				 "Observação 2:".
				"</td>".
			    "<td align='left'>".
				 $Row_FatGer->FAT_OBSERV2.
				"</td>".
			   "</tr>"
			   : '').
			   //
			  "</table>"
			  : '').
			  "<div style='height:10px;'></div>".
			  $sLstProds_Html;
	   //
	   $aSessao[$sNomeAcesso.'_PERM_CUPOM'] = $bPerm_Cupom;
	   //
	   $sRet_Javs .=
	       "parent.document.getElementById('Q_FisCup_Prods').innerHTML = " .JAVA_CharCode($sLstProds_Html)."; ".
	       "parent.document.getElementById('Q_FisCup_BInf1').innerHTML = " .JAVA_CharCode_Mini($sLstBInf1_Html)."; ".
	       "parent.document.getElementById('Q_FisCup_BInf2').innerHTML = ".JAVA_CharCode_Mini($sLstBInf2_Html)."; ".
	       "parent.document.getElementById('Q_FisCup_BInf3').innerHTML = ".JAVA_CharCode_Mini($sLstBInf3_Html)."; ".
		   "parent.document.getElementById('s_FisCup_SubTota').innerHTML = '".FormatoMoeda($nValorTotal)."';".
		   "parent.document.getElementById('i_FisCup_Acrecim').value = '".FormatoMoeda($nValorAcre)."'; ".
		   "parent.document.getElementById('i_FisCup_Descont').value = '".FormatoMoeda($nValorDesc)."'; ".
		   "parent.document.getElementById('s_FisCup_CuTotal').innerHTML = '".FormatoMoeda($nValorGeral)."'; ".
		   "parent.document.getElementById('i_FisCup_CPFCNPJ').value = '".$sCli_CPFCNP."'; ".
		   "parent.document.getElementById('i_FisCup_NomeCli').value = '".STR_REPLACE("'"," ",$sCli_NomeCP)."'; ".
		   "parent.document.getElementById('i_FisCup_Enderec').value = '".STR_REPLACE("'"," ",$sCli_Endere)."'; ".
		   "parent.document.getElementById('objFisCup_BT_GerCupF').style.display='".($bPerm_Cupom ? 'inline-block' : 'none')."'; ".
	       "";
	   //
    //
    // CANCELAR OU VOLTAR ITEM
    } ElseIf ( $sAcao=="RMV_ITEM" ) {
	   $aSessao[$sNomeAcesso.'_JANESPERA'] = True;
	   //
	   $sRet_Javs .= "setTimeout( function () { ".$aSessao[$sNomeAcesso.'_CXA_ALTPROD']." }, ".$nTmpFrmEnv.");";
	   //
	   $nR_FatItem_CodI = @$_REQUEST["Fat_Item_CodI"]+0;
	   $bExecCan = False;
	   If ( 99999000>$nR_FatItem_CodI ) {
	      $Row_FatIte = MYSQL_QUERY("SELECT * FROM fat_item WHERE FAT_GAR_EST=0 AND FAT_CFATGER=".$nFat_CodigoI." AND FAT_CODIGOI=".$nR_FatItem_CodI.";") or die(MYSQL_ERROR());
	      $Row_FatGer = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_CODIGOI=".$nFat_CodigoI.";") or die(MYSQL_ERROR());
	      If ( ($Row_FatGer = MYSQL_FETCH_OBJECT($Row_FatGer)) && ($Row_FatIte = MYSQL_FETCH_OBJECT($Row_FatIte)) ) {
	         $bExecCan = True;
	      } Else {
             $sRet_Javs .= Info_Evento('Não é possível remover este item, codigo inválido. ITEM('.$nR_FatItem_CodI.') , GERAL('.$nFat_CodigoI.').',1);
	      }
	   } Else {
          $bExecCan = True;
	   }
	   If ($bExecCan) {
	      //
	      $sItensCancelados = @$aSessao[$sNomeAcesso.'_ITENS_CAN'];
		  //
		  // Este item não está na lista de cancelados, vai ser adicionado
		  If ( STRPOS(" ".$sItensCancelados,"(".$nR_FatItem_CodI.")")==0 ) {
		     $sItensCancelados .= "(".$nR_FatItem_CodI.")";
		  //
		  // Este item está na lista de cancelados, vai ser removido
		  } Else {
		     $sItensCancelados = STR_REPLACE("(".$nR_FatItem_CodI.")","",$sItensCancelados);
		  }
		  //
	      $aSessao[$sNomeAcesso.'_ITENS_CAN'] = $sItensCancelados;
		  //
	   }
	   //
    //
    // ** EXECUÇÃO DA EMISSÃO DO CUPOM FISCAL  -  ECF **
	//
    } ElseIf ( $sAcao=="GER_FISECF" ) {
	   $bPerm_Cupom = @$aSessao[$sNomeAcesso.'_PERM_CUPOM']+0;
	   $bMensagemEr = True;
	   $sRet_Javs .= "parent.JanEspera(false);";
	   $nFSC_Cod_COO = 0;
	   SET_TIME_LIMIT(120);    // Tempo de execução do PHP
	   //
	   
	   
	   //
       If ( $bPerm_Cupom ) {
	      $bPerm_Cupom = False;
		  $bMensagemEr = False;
	      $ImpFiscal->Conectar();
	      If ( $ImpFiscal->nCod_Erro==Acbr_ERRO_Conexao_TCP OR $ImpFiscal->nCod_Erro==Acbr_ERRO_Resposta ) {
             $sRet_Javs .= Info_Evento('Não foi possível conectar ao Emissor Fiscal.',1,'ERRO - Emissor Fiscal');
	      } ElseIf ( $ImpFiscal->nCod_Erro==Acbr_ERRO_ECFLinha ) {
             $sRet_Javs .= Info_Evento('ERRO: A impressora não está em linha.',1,'ERRO - Emissor Fiscal');
	      } ElseIf ( $ImpFiscal->nCod_Erro==Acbr_ERRO_CNPJ ) {
			 $sRet_Javs .= Info_Evento('ERRO: CNPJ do ECF (Impressora) é diferente do sistema.<br>CNPJ do sistema: '.($ImpFiscal->sECF_CNPJ).'<br>'.'CNPJ do ECF:'.$ImpFiscal->sECF_CNPJ_E,1);
	      } ElseIf ( $ImpFiscal->nCod_Erro==Acbr_ERRO_Reducao_Z ) {
             $sRet_Javs .= Info_Evento('ERRO: Impressora precisa tirar Redução Z.',1,'ERRO - Emissor Fiscal');
	      } ElseIf ( $ImpFiscal->nCod_Erro>0 ) {
             $sRet_Javs .= Info_Evento((STRLEN($ImpFiscal->sACBR_Erro) ? HTMLENTITIES($ImpFiscal->sACBR_Erro) : "ERRO: Desconhecido" ),1,'ERRO - Emissor Fiscal');
	     	  
		  } ElseIf ( $ImpFiscal->nCod_Erro==0 ) {
		    // Tudo certo
			$bPerm_Cupom = True;
		    $bMensagemEr = True;
	      }
	   }
	   //
       If ( $bPerm_Cupom ) {
	      //
          $nValorAcre  = Somente_Numeros(@$_REQUEST['Acrecim'],'.,');
          $nValorAcre  = STR_REPLACE(",",".",$nValorAcre)+0;
          $nValorDesc  = Somente_Numeros(@$_REQUEST['Descont'],'.,');
          $nValorDesc  = STR_REPLACE(",",".",$nValorDesc)+0;
		  $sCli_CPFCNPJ = @$_REQUEST['CPFCNPJ'];
		  $sCli_CPFCNPJ = Somente_Numeros($sCli_CPFCNPJ);
		  $sCli_NomeCmp = RemoveAcentos(@$_REQUEST['NomeCli']);
		  $sCli_Enderec = RemoveAcentos(@$_REQUEST['Enderec']);
	      $aLista_dos_Itens = @$aSessao[$sNomeAcesso.'_FAT_ITENS'];
	      $sItensCancelados = @$aSessao[$sNomeAcesso.'_ITENS_CAN'];
		  //
		  // Pegar número de série e modelo do ECF
		  $sFSC_ECF_Ser = $ImpFiscal->ECF_NumSerie();
		  $sFSC_ECF_Mod = $ImpFiscal->ECF_ModeloECF();
		  //
	      // Abrir Cupom
		  $bPerm_Cupom = $ImpFiscal->ECF_AbreCupom( $sCli_CPFCNPJ, $sCli_NomeCmp, $sCli_Enderec );
		  //
	   }
       If ( $bPerm_Cupom ) {
	      // Puxar dados do FAT_GERAL
	      $Row_FatGer = MYSQL_QUERY("SELECT * FROM fat_geral WHERE FAT_CODIGOI=".$nFat_CodigoI.";") or die(MYSQL_ERROR());
	      $Row_FatGer = MYSQL_FETCH_ARRAY($Row_FatGer);
		  //
		  // Incluir novo cupom fiscal no Banco de dados
		  $nFSC_Cod_COO = $ImpFiscal->ECF_NumCupom();
		  $nFSC_CodigoI = SQLVarConfig('FISCAL_GERAL_SEQCOD',True)+0;
		  SQLVarConfigG('FISCAL_GERAL_SEQCOD',$nFSC_CodigoI+1);
          $sSQLQuery =
                 "INSERT INTO fiscal_geral(".            // Novo registro
				     "FSC_CODIGOI,FSC_COD_EMP,FSC_CREGIME,FSC_CFATGER,FSC_COD_FUN,FSC_DT_REAL,FSC_DT_TRAB,FSC_NOMECLI,FSC_CPF_CLI,".
					 "FSC_ENDECLI,FSC_COD_COO,FSC_ECF_SER,FSC_ECF_MOD".
				 ") VALUES (".
				     $nFSC_CodigoI.",".                  // FSC_CODIGOI = Codigo sequencial interno
					 $Dados_Empresa['EMP_CODIGO'].",".   // FSC_COD_EMP = Codigo da empresa da tabela Cad_Empresa
					 $Dados_Empresa['EMP_REGIME'].",".   // FSC_CREGIME = Codigo do regime da tabela Cad_Regime_Fiscal
					 $nFat_CodigoI.",".                  // FSC_CFATGER = Codigo referencial da tabela Fat_Geral
					 $R_CadFuncionario->FUN_CODIGO.",".  // FSC_COD_FUN = Codigo interno do funcionario
					 "'".DATE("Y-m-d H:i:s")."',".       // FSC_DT_REAL = Data e hora real do momento da emssião do cupom fiscal
					 "'".$sData_Trabalho."',".           // FSC_DT_TRAB = Data de trabalho
					 SQL_Bin($sCli_NomeCmp).",".         // FSC_NOMECLI = Nome do consumidor (cliente)
					 "'".$sCli_CPFCNPJ."',".             // FSC_CPF_CLI = CPF ou CNPJ do consumidor
					 SQL_Bin($sCli_Enderec).",".         // FSC_ENDECLI = Endereço completo do consumidor
					 "'".$nFSC_Cod_COO."',".             // FSC_COD_COO = Codigo sequencial COO do cupom fiscal
					 "'".$sFSC_ECF_Ser."',".             // FSC_ECF_SER = Numero do serial do ECF
					 "'".$sFSC_ECF_Mod."'".              // FSC_ECF_MOD = Modelo do ECF
				 "); ";
          MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
          Info_Evento('Iniciou a emissão do cupom fiscal no ECF. (COO:'.Str_Zero($nFSC_Cod_COO,6).')',0);
		  //
		  // Produtos
		  $nSubTotal = 0;
		  $nImpTotal = 0;
		  $sDes_NCM  = '';
		  $sDes_CEST = '';
		  $sDes_ITE  = '';
		  ForEach ($aLista_dos_Itens As $aDados_Item) {
		      If ( STRPOS(" ".$sItensCancelados,"(".$aDados_Item[0].")")>0 ) {
			     Continue;
			  }
		      $sCodigos = $aDados_Item[1];
			  $nCodigoP = EXPLODE(";", $sCodigos.';');
			  $nCodigoP = @$nCodigoP[0]+0;
			  $sCodigos = STR_REPLACE(";"," ",$sCodigos);
		      
			  // codigo ncm e cest na descrição
			  $sDes_NCM  = '';
			  $sDes_CEST = '';
			  
			  $sDes_ITE = $aDados_Item[2];
			  $sCod_NCM = $aDados_Item[11];
			  $sCod_CEST = $aDados_Item[20];
			  
		 
			  If (($sCod_NCM+0)>0) {
			      
				  $sDes_NCM = '#'.$sCod_NCM;
				  $sDes_ITE = '#'.$aDados_Item[2];
              }			  
			  If (($sCod_CEST+0)>0) {
			      
				  $sDes_CEST = '#'.$sCod_CEST;
				  $sDes_ITE = '#'.$aDados_Item[2];
              }			  
			  $sDescric = STR_REPLACE(".","",$sDes_CEST).STR_REPLACE(".","",$sDes_NCM).STR_REPLACE(";",",",$sDes_ITE);
			  //$sDescric = STR_REPLACE(";",",",$sDescric);
			  // Envio para ECF
			  $bPerm_Cupom = $ImpFiscal->ECF_VendeItem(
			                      $sCodigos,                                                            // Codigo do produto
					              RemoveAcentos($sDescric),                                             // Descricao
					              (($aDados_Item[3]+0)>0 ? $aDados_Item[3]+0 : '').$aDados_Item[10],    // Aliquota de ICMS
					              ($aDados_Item[4]+0),                                                  // Quantidade
					              ($aDados_Item[6]+0),                                                  // Valor Unitário
					              '0',                                                                  // Desconto em portentagem
					              $aDados_Item[5] );                                                    // Unidade
			  //
			  If ( ! $bPerm_Cupom ) { BREAK; }
			  //
			  $nFSI_Pre_Tot = $aDados_Item[6]*$aDados_Item[4];
			  $nSubTotal   += $nFSI_Pre_Tot;                          // Somar para o subtotal
			  $nFSI_Imp_Tot = CalcularIBPT($nCodigoP,$nFSI_Pre_Tot);  // Calcular imposto IBPT
			  $nImpTotal   += $nFSI_Imp_Tot;                          // Somar ao total de imposto IBPT
			  //
			  // Incluir do bando de dados
		      $nFSI_CodigoI = SQLVarConfig('FISCAL_ITEM_SEQCOD',True)+0;
		      SQLVarConfigG('FISCAL_ITEM_SEQCOD',$nFSI_CodigoI+1);
              $sSQLQuery =
                     "INSERT INTO fiscal_item(".            // Novo registro
              	         "FSI_CODIGOI,FSI_CODFISC,FSI_CODITEM,FSI_DESITEM,FSI_ALIQUOT,FSI_COD_ECF,FSI_QTD_ITE,FSI_UNITARI,FSI_PRE_TOT,".
						 "FSI_IMP_TOT,FSI_PRE_TIP,FSI_UNIDADE,FSI_COD_NCM,FSI_ICM_CST,FSI_COD_CES".
              	     ") VALUES (".
                         $nFSI_CodigoI.",".                           // FSI_CODIGOI = Codigo sequencial interno
                         $nFSC_CodigoI.",".                           // FSI_CODFISC = Codigo sequencial da tabela Fiscal_Geral
                         "'".$sCodigos."',".                          // FSI_CODITEM = Codigo(s) do(s) item(s)
                		 SQL_Bin($sDescric).",".                      // FSI_DESITEM = Descricao do item
                		 "'".($aDados_Item[3]+0)."',".                // FSI_ALIQUOT = Aliquota em %
                		 "'".($aDados_Item[10])."',".                 // FSI_COD_ECF = Codigo de tributação para o ECF
                		 "'".($aDados_Item[4]+0)."',".                // FSI_QTD_ITE = Quantidade do item
                		 "'".($aDados_Item[6]+0)."',".                // FSI_UNITARI = Preço Unitário do item
						 "'".($nFSI_Pre_Tot)."',".                    // FSI_PRE_TOT = Preço total do calculo do item
						 "'".($nFSI_Imp_Tot)."',".                    // FSI_IMP_TOT = Total do imposto IBPT
						 "'".$aDados_Item[9]."',".                    // FSI_PRE_TIP = Tipo do preço
						 "'".$aDados_Item[5]."',".                    // FSI_UNIDADE = Sigla de unidade
						 "'".$aDados_Item[11]."',".                   // FSI_COD_NCM = Codigo NCM
						 "'".$aDados_Item[15]."', ".                  // FSI_ICM_CST = CST do ICMS
						 "'".STR_REPLACE(".","",$aDados_Item[20])."' ".  // FSI_COD_CES = Codigo do CEST
              	     ");";
              MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			  //
			  // Opcionais
			  /* BLOQUEADO NO DIA 05/04/2013 POR DECISAO DO CICERO
			  If ( STRLEN($aDados_Item[7])>1 ) {
			     $aFat_Opcional = EXPLODE(';',$aDados_Item[7]);
                 For ($iContIteOpc = 0; $iContIteOpc<=200; $iContIteOpc++) {
			 	     If ( STRLEN($aFat_Opcional[$iContIteOpc])==0 ) { BREAK; }
			 		 $aFat_OpcItem = EXPLODE(',',$aFat_Opcional[$iContIteOpc]);
			 		 // 0=Codigo do Item, 1=Quantidade, 2=Preco total
                     $Row_CadPro = MYSQL_QUERY("SELECT * FROM cad_produto,cad_tributacao,cad_cst WHERE ITE_CODIGOI=".(@$aFat_OpcItem[0]+0)." AND (ITE_FISCAL_TRIB=0 OR (TRB_CODIGOI=ITE_FISCAL_TRIB AND TRB_COD_CST=CST_CODIGOI));") or die(MYSQL_ERROR());
			 	     If ( $Row_CadPro=MYSQL_FETCH_OBJECT($Row_CadPro) ) {
					    // Envio para ECF
			            $ImpFiscal->ECF_VendeItem(
						        $Row_CadPro->ITE_CODIGOI,                                                                         // Codigo do produto
								$Row_CadPro->ITE_DESCRIC,                                                                         // Descricao
								($Row_CadPro->TRB_I_C_M_S>0 ? $Row_CadPro->TRB_I_C_M_S : '').$Row_CadPro->CST_COD_ECF,            // Aliquota
								$aFat_OpcItem[1],                                                                                 // Quantidade
								($aFat_OpcItem[2]/$aFat_OpcItem[1]),                                                              // Valor Unitário
								'0',                                                                                              // Desconto em portentagem
								$Row_CadPro->ITE_SIG_UNIDADE                                                                      // Unidade
						);
						//
			            $nSubTotal += $aFat_OpcItem[2];   // Somar para o subtotal
                        //
                        // Incluir do bando de dados
                        $nFSI_CodigoI = SQLVarConfig('FISCAL_ITEM_SEQCOD')+0;
                        SQLVarConfigG('FISCAL_ITEM_SEQCOD',$nFSI_CodigoI+1);
                        $sSQLQuery =
                               "INSERT INTO fiscal_item(".            // Novo registro
                        	         "FSI_CODIGOI,FSI_CODFISC,FSI_CODITEM,FSI_DESITEM,FSI_ALIQUOT,FSI_COD_ECF,FSI_QTD_ITE,FSI_PRE_TOT,".
                        		 "FSI_PRE_TIP".
                        	     ") VALUES (".
                                     $nFSI_CodigoI.",".                           // FSI_CODIGOI = Codigo sequencial interno
                                     $nFSC_CodigoI.",".                           // FSI_CODFISC = Codigo sequencial da tabela Fiscal_Geral
                                     "'".$Row_CadPro->ITE_CODIGOI."',".           // FSI_CODITEM = Codigo(s) do(s) item(s)
                          		     "'".$Row_CadPro->ITE_DESCRIC."',".           // FSI_DESITEM = Descricao do item
                          		     "'".($Row_CadPro->TRB_I_C_M_S+0)."',".       // FSI_ALIQUOT = Aliquota em %
                          		     "'".$Row_CadPro->CST_COD_ECF."',".           // FSI_COD_ECF = Codigo de tributação para o ECF
                          		     "'".($aFat_OpcItem[1]+0)."',".               // FSI_QTD_ITE = Quantidade do item
                          		     "'".($aFat_OpcItem[2])."',".                 // FSI_PRE_TOT = Preço total do calculo do item
                        		     "'0'".                                       // FSI_PRE_TIP = Tipo do preço
                        	     "); ";
                        MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
                        //
			 		 }
			 	 }
			  }
			  //
		     */
		  }
		  //
	   }
       If ( $bPerm_Cupom ) {
		  // Sobtotalizar
		  $bPerm_Cupom = $ImpFiscal->ECF_SubTotalizaCupom( ($nValorAcre-$nValorDesc) );
	   }
	   $sFSC_Rec_Mod = '';
       If ( $bPerm_Cupom ) {
	      $nTotal_Liq = ($nSubTotal+($nValorAcre-$nValorDesc));
		  // Pagamentos
	      $aPagamentos = $aSessao[$sNomeAcesso.'_PAGAMENTO'];
		  $aPag_Modali = $aSessao[$sNomeAcesso.'_PAG_MODAL'];
		  $nTMP_TotPag = 0;
		  ASORT($aPagamentos);
	      ForEach ( $aPagamentos As $sIndiceECF=>$nValorPagM ) {
		     If ($nValorPagM>0) {
			    If ($nTMP_TotPag>$nTotal_Liq) { BREAK; }
			    $bPerm_Cupom = $ImpFiscal->ECF_EfetuaPagamento( $sIndiceECF, $nValorPagM );
				If (! $bPerm_Cupom) { BREAK; }
			    $sFSC_Rec_Mod .= $sIndiceECF.','.$aPag_Modali[$sIndiceECF].','.$nValorPagM.';';
			    $nTMP_TotPag += $nValorPagM;
			 }
		  }
	   }
       If ( $bPerm_Cupom ) {
          //
          // Atualizar cupom fiscal no Banco de dados
          $sSQLQuery =
                 "UPDATE fiscal_geral SET ".
					"FSC_SBTOTAL='".$nSubTotal."', ".
					"FSC_ACRESCI='".$nValorAcre."', ".
					"FSC_DESCONT='".$nValorDesc."', ".
		  		    "FSC_REC_MOD='".$sFSC_Rec_Mod."', ".
					"FSC_TOT_LIQ='".$nTotal_Liq."'".
           	     "WHERE FSC_CODIGOI=".$nFSC_CodigoI."; ";
          MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
		  //
		  // Observações de fechamento do cupom
		  $sObs_CupomF =
		   //'1234567890123456789012345678901234567890|'.
		     'Valor Aprox Tributos '       .AlinhaStr('R$ '.FormatoMoeda($nImpTotal),2,19).'|'.
		     'Fonte: IBPT                 '.AlinhaStr('('.(ROUND(($nImpTotal/$nSubTotal)*100, 2)+0).'%)',2,12).'|'.
		     ( @$Row_FatGer['FAT_CODIGOI']+0>0 ? 
			   AlinhaStr(
			    ($Row_FatGer['FAT_TIP_LOC']==0 ? AlinhaStr( STRTOUPPER($sTipoLocal),0,10,'.').': '.Str_Zero($Row_FatGer['FAT_NUM_MES'],3) : '').
			    ($Row_FatGer['FAT_TIP_LOC']==1 ? 'BALCAO'  : '').
			    ($Row_FatGer['FAT_TIP_LOC']==2 ? 'ENTREGA' : '')
			   ,0,16).
			   AlinhaStr('Num. Comanda: '.Str_Zero($Row_FatGer['FAT_SQCOMAN'],6),2,24).
			 '|' : '').
			 'Operador..: '.SUBSTR($R_CadFuncionario->FUN_APELID.' - '.PegarPorPausa($R_CadFuncionario->FUN_NOMECP,4),0,28).
			 '';
		  // Fecha Cupom
		  $bPerm_Cupom = $ImpFiscal->ECF_FechaCupom( RemoveAcentos($sObs_CupomF) );
		  //
	   }
	   //
	   If ( $bPerm_Cupom ) {
          Info_Evento('Cupom no ECF concluido com sucesso',0);
	      $sRet_Javs .= $sJavaFechaEr;
	   //
	   // ERRO NO EMISSOR FISCAL
	   } Else {
	      //
		  If ( ($nFSC_Cod_COO+0)>0 ) {
		     // Cancela o cupom no emissor fiscal
	         If ($ImpFiscal->ECF_CancelaCupom() ) {
			    // Cancela o cupom no banco de dados
	            $sFSC_Cancela = $R_CadFuncionario->FUN_CODIGO.';'.DATE("Y-m-d H:i:s").';ERRO > '.HTMLENTITIES($ImpFiscal->sACBR_Erro);
                $sSQLQuery =
                       "UPDATE fiscal_geral SET ".
		        		    "FSC_CANCELA='".$sFSC_Cancela."' ".
                 	   "WHERE FSC_COD_COO=".$nFSC_Cod_COO."; ";
                MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			 }
		  }
		  //
		  If ($bMensagemEr) {
             $sRet_Javs .=
                 Info_Evento('Houve um erro na impressão do cupom fiscal.<br><br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,'ERRO - Emissor Fiscal').
                 '';
		  }
	   }
       
    //
    // ** EXECUÇÃO DA EMISSÃO DO CUPOM FISCAL  -  SAT **
	//
    } ElseIf ( $sAcao=="GER_FISSAT" ) {
	   $bPerm_Cupom = @$aSessao[$sNomeAcesso.'_PERM_CUPOM']+0;
       $sPulaLinha  = CHR(13).CHR(10);
	   $bMensagemEr = True;
	   $sRet_Javs .= "parent.JanEspera(false);";
	   SET_TIME_LIMIT(120);    // Tempo de execução do PHP
	   //
	   // verifica dados preeenchidos no cadastro de empresa
	   $bFalta_Dados_Empresa = False;
	   $sMen_001 = 'Falta Informações no Cadastro de Empresa<br>';
	   If (STRLEN($Dados_Empresa['EMP_CODCID']) <=0 ){
	      $bFalta_Dados_Empresa = True;
		  $sMen_001 .= ' - Código Cidade IBGE<br>';
	   }
	   If (STRLEN($Dados_Empresa['EMP_N_CNPJ']) <=0 ){
	      $bFalta_Dados_Empresa = True;
		  $sMen_001 .= ' - CNPJ Emitente<br>';
	   }
	   
	   If (STRLEN($Dados_Empresa['EMP_NUMIES']) <=0 ){
	      $bFalta_Dados_Empresa = True;
		  $sMen_001 .= ' - Ins.Est.Emitente<br>';
	   }
	   
	   
       If ( $bPerm_Cupom ) {
	      $bPerm_Cupom = False;
		  $bMensagemEr = False;
	      $ImpFiscal->Conectar();
	      If ( $ImpFiscal->nCod_Erro==Acbr_ERRO_Conexao_TCP OR $ImpFiscal->nCod_Erro==Acbr_ERRO_Resposta ) {
             $sRet_Javs .= Info_Evento('Não foi possível conectar ao Emissor Fiscal.',1,'ERRO - Emissor Fiscal');
	      } ElseIf ( $ImpFiscal->nCod_Erro==Acbr_ERRO_SAT_Inicializacao ) {
             $sRet_Javs .= Info_Evento('ERRO: Erro ao inicializar o SAT. '.$ImpFiscal->sACBR_Erro,1,'ERRO - SAT');
	      } ElseIf ( $ImpFiscal->nCod_Erro>0 ) {
             $sRet_Javs .= Info_Evento((STRLEN($ImpFiscal->sACBR_Erro) ? HTMLENTITIES($ImpFiscal->sACBR_Erro) : "ERRO: Desconhecido" ),1,'ERRO - Emissor Fiscal');
	      } ElseIf ($bFalta_Dados_Empresa) {
			    $sRet_Javs .= Info_Evento($sMen_001,1,'ERRO - Cadastro de Empresa'); 
		  } ElseIf ( $ImpFiscal->nCod_Erro==0 ) {
		    // Tudo certo
			$bPerm_Cupom = True;
		    $bMensagemEr = True;
	      }
	   }
	   
	   
	   //
       If ( $bPerm_Cupom ) {
	      // Capturar dados
          $nValorAcre   = Somente_Numeros(@$_REQUEST['Acrecim'],'.,');
          $nValorAcre   = STR_REPLACE(",",".",$nValorAcre)+0;
          $nValorDesc   = Somente_Numeros(@$_REQUEST['Descont'],'.,');
          $nValorDesc   = STR_REPLACE(",",".",$nValorDesc)+0;
		  $sCfe_NCaixa  = ( $R_CadFuncionario->FUN_CODIGO>999 ? 999 : $R_CadFuncionario->FUN_CODIGO );
		  $sCli_CPFCNPJ = @$_REQUEST['CPFCNPJ'];
		  $sCli_CPFCNPJ = Somente_Numeros($sCli_CPFCNPJ);
		  $sCli_NomeCmp = RemoveAcentos(@$_REQUEST['NomeCli']);
		  //$sCli_Enderec = RemoveAcentos(@$_REQUEST['Enderec']);
		  //$aCli_Enderec = EXPLODE(',',$sCli_Enderec.',');
		  $sCli_End_Lgr = @$aCli_Enderec[0];
		  $sCli_End_Nro = @$aCli_Enderec[1];
		  $sCli_End_Cpl = @$aCli_Enderec[2];
		  $sCli_Municip = "";
		  $sCli_Estado_ = "";
	      $aLista_dos_Itens = @$aSessao[$sNomeAcesso.'_FAT_ITENS'];
	      $sItensCancelados = @$aSessao[$sNomeAcesso.'_ITENS_CAN'];
	      $aPagamentos      = @$aSessao[$sNomeAcesso.'_PAGAMENTO'];
		  $aPag_Modalidades = @$aSessao[$sNomeAcesso.'_PAG_MODAL'];
		  //
	      $Row = MYSQL_QUERY("SELECT * FROM cad_cidade WHERE CID_CODIGO=".$Dados_Empresa['EMP_CODCID'].";") or die(MYSQL_ERROR());
	      If ( $Row = MYSQL_FETCH_OBJECT($Row) ) {
		     $sCli_Municip = $Row->CID_NOMECD;
		     $sCli_Estado_ = $Row->CID_ESTADO;
		  }
		  
		  // Inicio do texto de requisição do cupom fiscal eletrônico
		  $sTexto_CFe =
		     '[infCFe]'.$sPulaLinha.
             'versao=0.06'.$sPulaLinha.
             '[Identificacao]'.$sPulaLinha.
             'CNPJ={CNPJ-SOFTHOUSE}'.$sPulaLinha.
             'signAC={ASSINATURA-PADRAO}'.$sPulaLinha.
             'numeroCaixa='.$sCfe_NCaixa.$sPulaLinha.
             '[Emitente]'.$sPulaLinha.
             'CNPJ={CNPJ-EMITENTE}'.$sPulaLinha.
             'IE='.$Dados_Empresa['EMP_NUMIES'].$sPulaLinha.
             'IM='.$sPulaLinha.
             'indRatISSQN=N'.$sPulaLinha.
             '[Destinatario]'.$sPulaLinha.
             'CNPJCPF='.$sCli_CPFCNPJ.$sPulaLinha.
             'xNome='.$sCli_NomeCmp.$sPulaLinha.
             '[Entrega]'.$sPulaLinha.
             'xLgr='.$sCli_End_Lgr.$sPulaLinha.
             'nro='.$sCli_End_Nro.$sPulaLinha.
             'xCpl='.$sCli_End_Cpl.$sPulaLinha.
             'xBairro='.$sPulaLinha.
             'xMun='.$sCli_Municip.$sPulaLinha.
			 '';
		  //
		  // Produtos
		  $nSubTotal = 0;
		  $nImpTotal = 0;
		  $nCnt_Item = 0;
		  ForEach ($aLista_dos_Itens As $aDados_Item) {
		      If ( STRPOS(" ".$sItensCancelados,"(".$aDados_Item[0].")")>0 ) {
			     Continue;
			  }
			  $nCnt_Item++;
		      $sCodigos = $aDados_Item[1];
			  $nCodigoP = EXPLODE(";", $sCodigos.';');
			  $nCodigoP = @$nCodigoP[0]+0;
			  $sCodigos = STR_REPLACE(";"," ",$sCodigos);
		      $sDescric = $aDados_Item[2];
			  $sDescric = STR_REPLACE(";",",",$sDescric);
			  //
			  $nFSI_Pre_Tot = $aDados_Item[6]*$aDados_Item[4];
			  $nSubTotal   += $nFSI_Pre_Tot;                          // Somar para o subtotal
			  $nFSI_Imp_Tot = CalcularIBPT($nCodigoP,$nFSI_Pre_Tot);  // Calcular imposto IBPT
			  $nImpTotal   += $nFSI_Imp_Tot;                          // Somar ao total de imposto IBPT
			  //
			  // Adição no texto CFe
			  $sTexto_CFe .=
                 '[Produto'.Str_Zero($nCnt_Item,3).']'.$sPulaLinha.
                 'cProd='.$sCodigos.$sPulaLinha.                           // Codigo do produto
                 'xProd='.RemoveAcentos($sDescric).$sPulaLinha.            // Nome do produto
                 //'infAdProd=Teste de Produto'.$sPulaLinha.                 //
                 'cEAN='.$aDados_Item[19].$sPulaLinha.                     // Codigo de barras
                 'NCM='.$aDados_Item[11].$sPulaLinha.                      // NCM do produto
                 'CFOP='.$aDados_Item[12].$sPulaLinha.                     // C.F.O.P.
                 'uCom='.$aDados_Item[5].$sPulaLinha.                      // Unidade
                 'Combustivel=0'.$sPulaLinha.
                 'qCom='.NUMBER_FORMAT($aDados_Item[4], 3, ',','').$sPulaLinha.
                 'vUnCom='.FormatoMoeda($aDados_Item[6]+0).$sPulaLinha.
                 'indRegra=A'.$sPulaLinha.                                 // Indicador de regra de calculo
                 'vDesc=0'.$sPulaLinha.
                 'vOutro=0'.$sPulaLinha.
                 'vItem12741='.FormatoMoeda($nFSI_Imp_Tot).$sPulaLinha.    // Imposto embutido (Lei 12.741)
                 //'[ObsFiscoDet'.Str_Zero($nCnt_Item,3).'001]'.$sPulaLinha.
                 //'xCampoDet=Teste'.$sPulaLinha.
                 //'xTextoDet=Texto Teste'.$sPulaLinha.
                 '[ICMS'.Str_Zero($nCnt_Item,3).']'.$sPulaLinha.
                 'Orig='.$aDados_Item[16].$sPulaLinha.                     // Origem do produto: 0=Nacional, 1=Importado
                 'CST='.$aDados_Item[15].$sPulaLinha.                      // CST do ICMS
                 '[PIS'.Str_Zero($nCnt_Item,3).']'.$sPulaLinha.
                 'CST='.Str_Zero($aDados_Item[13],2).$sPulaLinha.          // CST do PIS
				 'PISAliq='.$aDados_Item[17].$sPulaLinha.
                 '[COFINS'.Str_Zero($nCnt_Item,3).']'.$sPulaLinha.
                 'CST='.Str_Zero($aDados_Item[14],2).$sPulaLinha.          // CST do COFINS
				 'COFINSAliq='.$aDados_Item[18].$sPulaLinha.
				 '';
			  //
	      }
		  // Desconto ou acrecimo no texto CFe
		  $nValor_Desc_Acre = $nValorAcre - $nValorDesc;
		  If ( $nValor_Desc_Acre>0 ) {             // Acrécimo
	         $sTexto_CFe .=
               '[DescAcrEntr]'.$sPulaLinha.
               'vAcresSubtot='.FormatoMoeda($nValor_Desc_Acre).$sPulaLinha.
			   '';
		  } ElseIf ( $nValor_Desc_Acre<0 ) {       // Desconto
	         $sTexto_CFe .=
               '[DescAcrEntr]'.$sPulaLinha.
               'vDescSubtot='.FormatoMoeda(-$nValor_Desc_Acre).$sPulaLinha.
			   '';
		  }
	      //
	      // Parte final no texto CFe
	      $sTexto_CFe .=
             '[Total]'.$sPulaLinha.
             'vCFeLei12741='.FormatoMoeda($nImpTotal).$sPulaLinha.
             //'[DadosAdicionais]'.$sPulaLinha.
             //'infCpl=Teste emissao CFe/SAT'.$sPulaLinha.
             //'[ObsFisco001]'.$sPulaLinha.
             //'xCampo=ObsFisco 1'.$sPulaLinha.
             //'xTexto=Teste ObsFisco 1'.$sPulaLinha.
	         '';
	      //
          ASORT($aPagamentos);
	      $nCnt_Pag = 0;
		  $sFSC_Rec_Mod = '';
          ForEach ( $aPagamentos As $sIndiceECF=>$nValorPagM ) {
             If ($nValorPagM==0) { CONTINUE; }
		     $nCnt_Pag++;
             $sFSC_Rec_Mod .= $sIndiceECF.','.$aPag_Modalidades[$sIndiceECF].','.$nValorPagM.';';
	         $sTexto_CFe .=
                '[Pagto'.Str_Zero($nCnt_Pag,3).']'.$sPulaLinha.
                'cMP='.$sIndiceECF.$sPulaLinha.
                'vMP='.FormatoMoeda($nValorPagM).$sPulaLinha.
		   	 '';
          }
	      $nTotal_Liq = ($nSubTotal+($nValorAcre-$nValorDesc));
		  //
		  // Enviar CFe
		  If ( $ImpFiscal->SAT_CriarEnviarCfe($sTexto_CFe) ) {          // Cfe Emitido com sucesso
			 //
	         $aSAT_Resposta = EXPLODE("|",$ImpFiscal->sACBR_Resposta);
			 $sCfe_ArquvXML = SUBSTR($aSAT_Resposta[11], STRPOS($aSAT_Resposta[11], CHR(13).CHR(10)."Arquivo=")+10 ) ;
			 $sCfe_ArquvXML = SUBSTR($sCfe_ArquvXML,  0, STRPOS($sCfe_ArquvXML, ".xml")+4) ;
			 $sCfe_TextoXML = SUBSTR($aSAT_Resposta[11], STRPOS($aSAT_Resposta[11], CHR(13).CHR(10)."XML=")+6 ) ;
			 //
			 $bAmbienteDsv  =(ExtXML( $sCfe_TextoXML          ,'tpAmb'      )+0)==2;
		     $nFSC_Cod_COO  = ExtXML( $sCfe_TextoXML          ,'nCFe'       )+0;
			 $sFSC_ECF_Ser  = ExtXML( $sCfe_TextoXML          ,'nserieSAT'  );
			 $sFSC_ECF_Mod  = "SAT.CFe ".ExtXML($sCfe_TextoXML,'mod'        );
			 $sFSC_DT_Real  = ExtXML($sCfe_TextoXML,'dEmi').' '.ExtXML($sCfe_TextoXML,'hEmi');
			 $sFSC_DT_Real  = SUBSTR($sFSC_DT_Real,0,4)."-".SUBSTR($sFSC_DT_Real, 4,2)."-".SUBSTR($sFSC_DT_Real, 6,2)." ".
			                  SUBSTR($sFSC_DT_Real,9,2).":".SUBSTR($sFSC_DT_Real,11,2)."-".SUBSTR($sFSC_DT_Real,13,2);
			 //
			 // Mandar o ACBR imprimir o cupom fiscal
			 $ImpFiscal->SAT_ImprimirExtratoVenda($sCfe_ArquvXML);
			 //
			 // Incluir novo XML na tabela FISCAL_CFE no banco de dados
             $sSQLQuery =
			    "INSERT INTO fiscal_cfe(".
				   "CFE_TXT_XML,CFE_ARQ_XML".
				") VALUES (".
				   SQL_Bin($sCfe_TextoXML).",".
				   SQL_Bin($sCfe_ArquvXML)." ".
				");";
		     MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			 $nFSC_Cod_CFE = MYSQL_INSERT_ID();
		     // Incluir novo cupom fiscal no Banco de dados
	         $nFSC_CodigoI = SQLVarConfig('FISCAL_GERAL_SEQCOD',True)+0;
		     SQLVarConfigG('FISCAL_GERAL_SEQCOD',$nFSC_CodigoI+1);
             $sSQLQuery =
                "INSERT INTO fiscal_geral(".            // Novo registro
                  "FSC_CODIGOI,FSC_COD_EMP,FSC_CREGIME,FSC_CFATGER,FSC_COD_FUN,FSC_DT_REAL,FSC_DT_TRAB,FSC_NOMECLI,FSC_CPF_CLI,".
			   	  "FSC_ENDECLI,FSC_COD_COO,FSC_ECF_SER,FSC_ECF_MOD,FSC_COD_CFE,FSC_SBTOTAL,FSC_ACRESCI,FSC_DESCONT,FSC_REC_MOD,".
				  "FSC_TOT_LIQ".
			   	") VALUES (".
			      $nFSC_CodigoI.",".                  // FSC_CODIGOI = Codigo sequencial interno
			      $Dados_Empresa['EMP_CODIGO'].",".   // FSC_COD_EMP = Codigo da empresa da tabela Cad_Empresa
			      $Dados_Empresa['EMP_REGIME'].",".   // FSC_CREGIME = Codigo do regime da tabela Cad_Regime_Fiscal
			      $nFat_CodigoI.",".                  // FSC_CFATGER = Codigo referencial da tabela Fat_Geral
			      $R_CadFuncionario->FUN_CODIGO.",".  // FSC_COD_FUN = Codigo interno do funcionario
			      "'".$sFSC_DT_Real."',".             // FSC_DT_REAL = Data e hora real do momento da emssião do cupom fiscal
			      "'".$sData_Trabalho."',".           // FSC_DT_TRAB = Data de trabalho
			      SQL_Bin($sCli_NomeCmp).",".         // FSC_NOMECLI = Nome do consumidor (cliente)
			      "'".$sCli_CPFCNPJ."',".             // FSC_CPF_CLI = CPF ou CNPJ do consumidor
			      SQL_Bin($sCli_Enderec).",".         // FSC_ENDECLI = Endereço completo do consumidor
			      "'".$nFSC_Cod_COO."',".             // FSC_COD_COO = Codigo sequencial COO do cupom fiscal
			      "'".$sFSC_ECF_Ser."',".             // FSC_ECF_SER = Numero do serial do ECF
			      "'".$sFSC_ECF_Mod."',".             // FSC_ECF_MOD = Modelo do ECF
				  $nFSC_Cod_CFE.",".                  // FSC_COD_CFE = Codigo na tabela FISCAL_CFE
			      "'".$nSubTotal."',".                // FSC_SBTOTAL = Subtotal do cupom fiscal
			      "'".$nValorAcre."',".               // FSC_ACRESCI = Acréscimos
			      "'".$nValorDesc."',".               // FSC_DESCONT = Descontos
		  	      "'".$sFSC_Rec_Mod."',".             // FSC_REC_MOD = Modalidades e recebimentos
			      "'".$nTotal_Liq."'".                // FSC_TOT_LIQ = Total liquido
			   	"); ";
             MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			 //
		     ForEach ($aLista_dos_Itens As $aDados_Item) {
			    //
			    $nFSI_Pre_Tot = $aDados_Item[6]*$aDados_Item[4];
			    $nFSI_Imp_Tot = CalcularIBPT($nCodigoP,$nFSI_Pre_Tot);  // Calcular imposto IBPT
				//
		        $nFSI_CodigoI = SQLVarConfig('FISCAL_ITEM_SEQCOD',True)+0;
		        SQLVarConfigG('FISCAL_ITEM_SEQCOD',$nFSI_CodigoI+1);
                $sSQLQuery =
                   "INSERT INTO fiscal_item(".            // Novo registro
                      "FSI_CODIGOI,FSI_CODFISC,FSI_CODITEM,FSI_DESITEM,FSI_ALIQUOT,FSI_COD_ECF,FSI_QTD_ITE,FSI_UNITARI,FSI_PRE_TOT,".
			       	  "FSI_IMP_TOT,FSI_PRE_TIP,FSI_UNIDADE,FSI_COD_NCM,FSI_COD_CFO,FSI_PIS_CST,FSI_PIS_ALQ,FSI_CFN_CST,".
					  "FSI_CFN_ALQ,FSI_ORIGEM_,FSI_COD_EAN,FSI_ICM_CST".
                   ") VALUES (".
                       $nFSI_CodigoI.",".                           // FSI_CODIGOI = Codigo sequencial interno
                       $nFSC_CodigoI.",".                           // FSI_CODFISC = Codigo sequencial da tabela Fiscal_Geral
                     "'".STR_REPLACE(";"," ",$aDados_Item[1])."',". // FSI_CODITEM = Codigo(s) do(s) item(s)
                   	 SQL_Bin(STR_REPLACE(";",",",$sDescric)).",".   // FSI_DESITEM = Descricao do item
                   	 "'".($aDados_Item[3]+0)."',".                  // FSI_ALIQUOT = Aliquota do ICMS
                   	 "'',".                                         // FSI_COD_ECF = Codigo de tributação para o ECF
                   	 "'".($aDados_Item[4]+0)."',".                  // FSI_QTD_ITE = Quantidade do item
                   	 "'".($aDados_Item[6]+0)."',".                  // FSI_UNITARI = Preço Unitário do Item
					 "'".($nFSI_Pre_Tot)."',".                      // FSI_PRE_TOT = Preço total do calculo do item
			       	 "'".($nFSI_Imp_Tot)."',".                      // FSI_IMP_TOT = Total do imposto IBPT
			       	 "'".$aDados_Item[9]."',".                      // FSI_PRE_TIP = Tipo do preço
			       	 "'".$aDados_Item[5]."',".                      // FSI_UNIDADE = Sigla de unidade
			       	 "'".$aDados_Item[11]."',".                     // FSI_COD_NCM = Codigo NCM
			       	 "'".$aDados_Item[12]."',".                     // FSI_COD_CFO = Codigo do C.F.O.P.
			       	 "'".$aDados_Item[13]."',".                     // FSI_PIS_CST = CST do PIS
			       	 "'".$aDados_Item[17]."',".                     // FSI_PIS_ALQ = Aliquota do PIS
			       	 "'".$aDados_Item[14]."',".                     // FSI_CFN_CST = CST do COFINS
			       	 "'".$aDados_Item[18]."',".                     // FSI_CFN_ALQ = Aliquota do COFINS
			       	 "'".$aDados_Item[16]."',".                     // FSI_ORIGEM_ = Origem do produto
			       	 "'".$aDados_Item[19]."',".                     // FSI_COD_EAN = Codigo de barras EAN
			       	 "'".$aDados_Item[15]."' ".                     // FSI_ICM_CST = CST do ICMS
                   ");";
                MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			 }
			 //
            Info_Evento('Cupom no SAT concluido com sucesso',0);
			 If ( $bAmbienteDsv ) {
                $sRet_Javs .= Info_Evento('Este cupom fiscal não tem validade fiscal, cupom fiscal eletronico para desenvolvimento do software.',0,'Simsoft - SAT');
			 }
	         $sRet_Javs .= $sJavaFechaEr;
			 //
		  } Else {                                                      // Cfe Rejeitado
             $sRet_Javs .= Info_Evento('ERRO: Nao foi possivel emitir cupom.<br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro, ENT_QUOTES),1,'ERRO - SAT');
		  }
	      //
	   }
    //
	// Puxar CNPJ ou CPF do ultimo cupom fiscal
    } ElseIf ( $sAcao=="C_CNPJCPF" ) {
        $sCli_CPFCNP = @$_POST['CPFCNPJ'];
        $sCli_NomCli = '';
        $sCli_EndCli = '';
        If (STRLEN($sCli_CPFCNP)>10 ) { 
          $sSQLQuery = 
		    "SELECT ".
			     "FSC_NOMECLI, ".
                 "FSC_ENDECLI ".
		    "FROM fiscal_geral ".
			"WHERE ".
                  "FSC_CPF_CLI='".$sCli_CPFCNP."' ".
			"ORDER BY FSC_DT_REAL DESC LIMIT 1 ".
            ";";
          $Row = MYSQL_QUERY($sSQLQuery) or die($sSQLQuery.'<br>'.MYSQL_ERROR());
		
          If ( $Row = MYSQL_FETCH_OBJECT($Row) ) {
		     $sCli_NomCli = $Row->FSC_NOMECLI;
             $sCli_EndCli = $Row->FSC_ENDECLI;
          }
        }
        $sRet_Javs .=
           "parent.document.getElementById('i_FisCup_NomeCli').value = '".STR_REPLACE("'"," ",$sCli_NomCli)."'; ".
		   "parent.document.getElementById('i_FisCup_Enderec').value = '".STR_REPLACE("'"," ",$sCli_EndCli)."'; ".
           "";

    // FECHAR
    } ElseIf ( $sAcao=="FECHAR" ) {
	   $aSessao[$sNomeAcesso.'_CXA_ALTPROD'] = '';
	   //
       $sRet_Javs .=
	       ( $nModuloChamado>0 ? 
			 ( $nModuloChamado<=2 ?
		       "parent.document.getElementById('iJan_FatG_Princ_Travar').style.visibility='hidden';".
		       "parent.Disabled_In_Elems('iJan_FatG_Princ',false);"
			 : '').
			 ( $nModuloChamado==1 ?
               'parent.document.getElementById("in_FatGer_DatIni").focus();'
			 : '').
			 ( $nModuloChamado==2 ?
			   'parent.document.getElementById("in_FatGer_CampOculto").focus();'
			 : '').
             ( $nModuloChamado==3 ?
               ( @$aSessao['CXA_REC_ABERTO'] ?
                 "parent.document.getElementById('iJan_Cxa_Receb_Travar').style.visibility='hidden';".
                 "parent.Disabled_In_Elems('iJan_Cxa_Receb',false);"
               :
                 ( @$aSessao['CXA_PRI_ABERTO'] ?
                   "parent.document.getElementById('iJan_Cxa_Princ_Travar').style.visibility='hidden';".
                   "parent.Disabled_In_Elems('iJan_Cxa_Princ',false);".
                   'parent.document.getElementById("i_CxaRec_NumLoc").focus();'
				 :
			       @$aSessao["JAVA_EXECUTAR_AO_FECHAR"]
				 )
               )
			 : "").
		     ""
		   :
		     "parent.document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='hidden';".
			 ""
		   ).
	       "parent.Car_".$sNomeAcesso."3.location.href='about:blank';".		   
	       "if (parent.document.getElementById('".$oJanelaPrinc->sIdObj."') != null) { parent.RmElem('".$oJanelaPrinc->sIdObj."'); }".
		   "";
    //
    // JANELA TELA PRINCIPAL
    } Else {
	   //
	   $nModuloChamado = 0;
	   If ($sAcao=="_FIN_FAT_") { $nModuloChamado = (@$aSessao['RELFTG_RecCaixa']+0 ? 2 : 1 ); }
	   If ($sAcao=="_CXA_REC_") { $nModuloChamado = 3; }
       $aSessao['ECF_Mod_Chamado'] = $nModuloChamado;
	   $aSessao[$sNomeAcesso.'_INICIAR'] = True;
	   $aSessao[$sNomeAcesso.'_ITENS_CAN'] = '';
	   $aSessao[$sNomeAcesso.'_FAT_ITENS'] = ARRAY();
	   $aSessao[$sNomeAcesso.'_PAGAMENTO'] = ARRAY();
	   $aSessao[$sNomeAcesso.'_JANESPERA'] = False;
	   //
	   $bMostrarJan = True;
	   //
       If ($bMostrarJan) {
          //
          //$sJavaAtlProd = 'parent.Car_'.$sNomeAcesso.'4.location.href = "./car_js.php?mod='.$sModulo.'&submod='.$sSubModulo.'&nomeacs='.$sNomeAcesso.'&acao=ATUALIZA&Fat_CodigoI='.$nFat_CodigoI.'";';
		  $sJavaAtlProd =
              "parent.document.forms.fmPFisCup2.acao.value='ATUALIZA';".
              "parent.document.forms.fmPFisCup2.submit(); ".
			  "";
          $aSessao[$sNomeAcesso.'_CXA_ALTPROD'] = $sJavaAtlProd;
          //
          $sJavInpR_OnBlur = $sJavaAtlProd;
		  //
	      $oJanelaPrinc->sJavKeyDown = "return Car_".$sNomeAcesso."3.Teclas_F(this,event);";
		  //
	      ARRAY_PUSH($oJanelaPrinc->aIdsObjList,
            'i_FisCup_CPFCNPJ', 'i_FisCup_NomeCli','i_FisCup_Enderec',
			'i_FisCup_Acrecim', 'i_FisCup_Descont'
          );
		  //
		  // Modalidade de pagamento
		  $sHTMLPags = '';
          $Rows_MovPag = MYSQL_QUERY($sSQL_ExbModPag) or die(MYSQL_ERROR());
		  $sIndicesECF = '';
          While ( $Row_MovPag = MYSQL_FETCH_OBJECT($Rows_MovPag) ) {
			 $sIndiceECF = '';
			 If ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ) {
			    $sIndiceECF = $Row_MovPag->MPG_IND_ECF;
			 } ElseIf ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_SAT ) {
			    $sIndiceECF = Str_Zero($Row_MovPag->MPG_IND_SAT,2);
			 }
             If ( STRLEN($sIndiceECF)>0 && STRPOS(" ".$sIndicesECF,'('.$sIndiceECF.')')==0 ) {
			    $sIndicesECF .= '('.$sIndiceECF.')';
		        $sHTMLPags .=
                    '<table style="width:100%;">'.
                     '<tr>'.
                      '<td height="25px" align="right" valign="middle" style="font-size:14px;">'.
                       $Row_MovPag->MPG_DESCRIC.':&nbsp;'.
                      '</td>'.
                      '<td width="100px" valign="middle" align="left">'.
                       '<input name="PagMod_'.$sIndiceECF.'" id="i_FisECF_PagMod_'.$sIndiceECF.'" type="text" maxlength="60" value="0,00" style="font-size:14px; height:23px; width:97%;" onblur="'.$sJavInpR_OnBlur.'">'.
                      '</td>'.
                     '</tr>'.
                    '</table>';
		  	    //
	            ARRAY_PUSH( $oJanelaPrinc->aIdsObjList, 'i_FisECF_PagMod_'.$sIndiceECF );
			    //
             }
          }
		  UNSET( $sIndicesECF );
		  //
          // Tela HTML
          $sRet_TelaJ_HTML =
             $oJanelaPrinc->MontaJanHTML(True).
             '<form name="fmPFisCup2C" accept-charset="utf-8" method="post" action="./car_js.php" target="car_'.$sNomeAcesso.'4">'.
              '<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.'">'.
              '<input name="Fat_CodigoI" type="hidden" value="'.$nFat_CodigoI.'">'.
              '<input id="iFat_Item_CodI" name="Fat_Item_CodI" type="hidden" value="">'.
			 '</form>'.
             //Formulario para Cnpj
             '<form name="fmPFisCup3" accept-charset="utf-8" method="post" action="./car_js.php" target="car_'.$sNomeAcesso.'5">'.
              '<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.'">'.
              '<input name="Fat_CodigoI" type="hidden" value="'.$nFat_CodigoI.'">'.
              '<input name="CPFCNPJ" type="hidden" value="">'.
             '</form>'.
              //
             '<form name="fmPFisCup2" accept-charset="utf-8" method="post" action="./car_js.php" target="car_'.$sNomeAcesso.'4">'.
              '<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.'">'.
              '<input name="Fat_CodigoI" type="hidden" value="'.$nFat_CodigoI.'">'.
              '<input name="Fat_Item_CodI" type="hidden" value="">'.
             '<table width="100%">'.
              '<tr>'.
               '<td width="410px" valign="top">'.
                // Parte dos produtos
                '<div id="Q_FisCup_Prods" style="width:100%; height:450px; background:#FFE9D2; border-style:solid; border-width:1px; border-color:#CCCCCC; overflow:auto;">'.
                  '<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">'.
                   '<tr><td align="center" valign="middle" style="color:#555555;">'.
                   'Aguarde um momento...<br>'.
                   '<img src="images/img_load1.gif" border="0">'.
                   '</td></tr>'.
                  '</table>'.
                '</div>'.
               '<td valign="top">'.
			    // Dados do consumidor
			    '<div align="center" style="width:100%; height:20px; font-size:14px; font-weight:bold; background:#0066FF; color:#FFFFFF;">'.
				 'Dados do Consumidor'.
				'</div>'.
				'<table width="100%">'.
				 '<tr>'.
				  '<td width="70px" align="right">'.
				   'CPF/CNPJ:'.
				  '</td>'.
				  '<td align="left">'.
                    '<input id="i_FisCup_CPFCNPJ" name="CPFCNPJ" type="text" maxlength="18" style="font-size:13px; height:21px; width:125px;" onchange="Car_'.$sNomeAcesso.'3.C_Cnpj_Cpf();" onblur="if (this.value.length==0) { Car_'.$sNomeAcesso.'3.C_Cnpj_Cpf(); }">'.
                  '</td>'.
				 '</tr><tr>'.
				  '<td align="right">'.
				   'Nome:'.
				  '</td>'.
				  '<td align="left">'.
                   '<input id="i_FisCup_NomeCli" name="NomeCli" type="text" maxlength="60" style="font-size:11px; height:21px; width:98%;">'.
				  '</td>'.
				 '</tr><tr>'.
				  '<td align="right">'.
				   'Endereço:'.
				  '</td>'.
				  '<td align="left">'.
                   '<input id="i_FisCup_Enderec" name="Enderec" type="text" maxlength="60" style="font-size:11px; height:21px; width:98%;">'.
				  '</td>'.
				 '</tr>'.
				'</table>'.
			    // Valores do cupom
				'<div style="height:15px;"></div>'.
			    '<div align="center" style="width:100%; height:20px; font-size:14px; font-weight:bold; background:#0066FF; color:#FFFFFF;">'.
				 'Valores do cupom fiscal'.
				'</div>'.
				'<table width="280px">'.
				 '<tr>'.
				  '<td width="130px" align="right">'.
				   'Total dos produtos (+):'.
				  '</td>'.
				  '<td align="left">'.
                   '<span style="font-size:14px; font-weight:bold;">R$ <span id="s_FisCup_SubTota">0,00</span></span>'.
				  '</td>'.
				 '</tr><tr>'.
				  '<td align="right">'.
				   'Acrécimo (+):'.
				  '</td>'.
				  '<td align="left">'.
                   '<input id="i_FisCup_Acrecim" name="Acrecim" type="text" value="0,00" maxlength="12" style="font-size:13px; height:21px; width:98%;" onblur="'.$sJavInpR_OnBlur.'">'.
				  '</td>'.
				 '</tr>'.
				 '<tr>'.
				  '<td width="" align="right">'.
                  '&nbsp;&nbsp;'.		 
				  '</td>'.
                  '<td width="150px" align="left">'.				  
				    '&nbsp;&nbsp;'.
					'<span style="color:#FF0000;">'.
				  
	       		    '(Txa.Serv.+Total Opcional)'.
				  '</span>'.
	       		 '</td>'.
                 '</tr>'.
				 '<tr>'.
				  '<td align="right">'.
				   'Desconto (-):'.
				  '</td>'.
				  '<td align="left">'.
                   '<input id="i_FisCup_Descont" name="Descont" type="text" value="0,00" maxlength="12" style="font-size:13px; height:21px; width:98%;" onblur="'.$sJavInpR_OnBlur.'">'.
				  '</td>'.
				 '</tr><tr>'.
				  '<td align="right">'.
				   'Total á receber:'.
				  '</td>'.
				  '<td align="left">'.
                   '<span style="font-size:14px; font-weight:bold; color:#CC0000;">R$ <span id="s_FisCup_CuTotal">0,00</span></span>'.
				  '</td>'.
				 '</tr>'.
				'</table>'.
			    // Pagamentos
				'<div style="height:15px;"></div>'.
			    '<div align="center" style="width:100%; height:20px; font-size:14px; font-weight:bold; background:#0066FF; color:#FFFFFF;">'.
				 'Pagamento'.
				'</div>'.
				'<div id="Q_FisECF_LstModPag" style="width:100%; height:140px;">'.$sHTMLPags.'</div>'.
				'<div style="height:4px;"></div>'.
                '<div id="Q_FisCup_BInf2" style="width:100%;" align="center"></div>'.
                //
               '</td>'.
              '</tr>'.
             '</table>'.
             '</form>'.
			 //
             //'<table width="100%" style="background-color:#E9E9E9;">'.
			 '<table width="100%" style="background:#0066FF;">'.
              '<tr>'.
			   '<td width="50%" valign="middle" height="40px">'.
                '<div id="Q_FisCup_BInf1" style="width:100%;" align="center"></div>'.
			   '</td>'.
			   '<td valign="middle">'.
                '<div id="Q_FisCup_BInf3" style="width:100%;" align="center"></div>'.
			   '</td>'.
			  '</tr>'.
			 '</table>'.
			 '<div style="height:2px;"></div>'.
			 //
             '<table width="100%" style="background-color:'.$sCorBarraInf.';"></tr>'.
              '<td width="4px" height="40px" align="left">&nbsp;</td>'.
              '<td align="left">'.
                HTML_Botao( 3, 'objFisCup_BT_GerCupF',
								    ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ?
				                     "JanEspera(true, 'Gerando e imprimindo cupom fiscal... Aguarde...');".
			                         "setTimeout( function() { ".
                                        "document.forms.fmPFisCup2.acao.value='GER_FISECF';".
                                        "document.forms.fmPFisCup2.submit(); ".
                                     "}, ".$nTmpFrmEnv.");"
									: '').
								    ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_SAT ?
				                     "JanEspera(true, 'Validando cupom fiscal... Aguarde...');".
			                         "setTimeout( function() { ".
                                        "document.forms.fmPFisCup2.acao.value='GER_FISSAT';".
                                        "document.forms.fmPFisCup2.submit(); ".
                                     "}, ".$nTmpFrmEnv.");"
									: '')
                             , 'Gerar Cupom (F8)' ,'images/btimg_ativar.png', 150).
			    '&nbsp;&nbsp;&nbsp;'.
				HTML_Botao( 3, 'objFisCup_BT_AdcItem', $sJavaTravarJ.
                                     "NomeQdrCar = document.forms.fmPFisCup2C.target;".
                                     "NomeQdrCarA = NomeQdrCar;".
                                     "NomeQdrCar = NomeQdrCar.substr(0,NomeQdrCar.length-1)+'6';".
			                         "document.forms.fmPFisCup2C.acao.value=''; ".
			                         "document.forms.fmPFisCup2C.submod.value='INS_PRODUTO'; ".
                                     "document.forms.fmPFisCup2C.target = NomeQdrCar;".
                                     "document.forms.fmPFisCup2C.submit();".
									 "document.forms.fmPFisCup2C.submod.value='".$sSubModulo."'; ".
                                     "document.forms.fmPFisCup2C.target = NomeQdrCarA; ".
									 ""
                            , 'Adicionar(INS)','images/btimg_novo.png',120).
              '</td>'.
              '<td width="120px" align="left">'.
               HTML_Botao( 3, 'objFisCupM_BT_Fch', $sJavaFechaEr
                            , 'Sair (ESC)' ,'images/btimg_fechar.png').
              '</td>'.
             '</tr></table>'.
             //
             $oJanelaPrinc->MontaJanHTML(False);
          //
          // Java anterior
          $sRet_Javs .=
		    "function Teclas_F( Objeto, Evento ) {".
			  "vNumTecla = parent.Tecla_Apertada(Evento);".
			  "if ( vNumTecla==119) { ".          // ** [F8] **
			      "if (parent.document.getElementById('objFisCup_BT_GerCupF').style.display!='none') {".     // Gerar Cupom Fiscal
			          "parent.".$sJava_Desfoca_Input.
			          "setTimeout( parent.document.getElementById('objFisCup_BT_GerCupF').onclick , 500);".
			      "}".
		      "} else if ( vNumTecla==116) { ".   // ** [F5] **     Não atualizar
			      //
		      "} else if ( vNumTecla==13) { ".    // ** [ENTER] **
				 "sTempId = parent.Proximo_TabObj(parent.document.getElementById('".$oJanelaPrinc->sIdObj."'),parent.sIdHasFocus);".
				 "if ( sTempId.length>0 ) {".
				     "parent.document.getElementById(sTempId).focus();".
				 "} else {".
    	             'parent.document.getElementById("iCadEFun_Apelido").focus();'.
				 "}".
			     //
			  "} else if ( vNumTecla==45) { ".    //  ** [INS] **
				  "if ( parent.document.getElementById('objFisCup_BT_AdcItem').style.display!='none') {".           // (Lançamento Rapido de Produto)
			         "parent.".$sJava_Desfoca_Input.
			         "setTimeout( parent.document.getElementById('objFisCup_BT_AdcItem').onclick , 50);".
				  "}".  
				  //
			  "} else if ( vNumTecla==27 ) { ".   // [ESC]
			      "parent.".$sJava_Desfoca_Input.
			      "setTimeout( parent.document.getElementById('objFisCupM_BT_Fch').onclick , 10);".
			  "} else {".
				  "return true;".
			  "} ".
	          "return false;".
            "}".
            "function C_Cnpj_Cpf() {".
               "parent.document.forms.fmPFisCup3.acao.value='C_CNPJCPF';".
               "parent.document.forms.fmPFisCup3.CPFCNPJ.value = parent.document.getElementById('i_FisCup_CPFCNPJ').value;".
               "parent.document.forms.fmPFisCup3.submit(); ".
               "return true;".
            " } ".
            "";
		  //
          // Java posterior
          $sRet_JavsPos .=
            'parent.document.getElementById("objFisCup_BT_GerCupF").style.display="none";'.
            'parent.document.getElementById("i_FisCup_CPFCNPJ").focus();'.
            "setTimeout( function() {".
              $sJavaAtlProd.
            "}, 300);".
            "";
       } Else {
          $sRet_Javs .=
		     "parent.document.getElementById('".$sNomeIdJan1."_Travar').style.visibility='hidden';".
			 "";
	      $sAcao = 'FECHAR';
	   }
    }

//  ** TELA PARA INSERIR PRODUTO **
} ElseIf ( $sSubModulo=="INS_PRODUTO" ) {
    $nTipoFonte   = 1;
    $nQdrNomeAcs  = 6;
    $sNomeIdJ_Ant = $sNomeIdJan1;
    $sNomeIdCampo = "i_FisCup_CPFCNPJ";
    $sJavaExePos  = "";
    REQUIRE "./modulos/cxa_ins_produto.inc";

//  ** TELA DE PESQUISA DO PRODUTO PARA INSERIR **
} ElseIf ( $sSubModulo=="INS_PRODUTO_CSL" ) {
    $bDir_Consult = True;
    $sNomeIdJ_Ant = $sNomeIdJan6;
    $sNomeIdCampo = "iCadELrP_CodBar";
    $nQdrNomeAcs  = 8;
    $sJavaExePos  =
       "parent.document.getElementById('".$sNomeIdCampo."').setSelectionRange(0,0);".
       '';
    REQUIRE "./modulos/consulta_produto.inc";
//
//
// ** EXPORTAÇÃO DE XML DOS CUPONS FISCAIS ELETRONICOS (CFEs)
//
} ElseIf ( $sSubModulo=="EXP_XMLCFE" ) {
    //
    // Criar objeto Janela
    $oJanelaPrinc = New R_Janela();
    $oJanelaPrinc->sIdObj  = $sNomeIdJan3;
    $oJanelaPrinc->nTop    = 160;
    $oJanelaPrinc->nLeft   = 5;
    $oJanelaPrinc->nWidth  = 430;   // Largura
    $oJanelaPrinc->nHeight = 0;     // Altura
	$oJanelaPrinc->nLeft  += ($nTela_W/2)-($oJanelaPrinc->nWidth/2);
    $oJanelaPrinc->sTitulo = 'Exportar XML de CFE';
	//
	$sJavaTravarJ = "document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='visible'; parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',true);";
	$oJanelaPrinc->sJavKeyDown = "return Car_".$sNomeAcesso."6.Teclas_F(this,event);";
	//
	$oJanelaPrinc->aIdsObjList = ARRAY( 'in_FisXML_DataIni', 'in_FisXML_DataFim', 'in_FisXML_Tipo' );
	//
	$oJanelaPrinc->sJavOnClickF =
         $sJavaTravarJ.
		 "document.forms.fmFisXML.acao.value='FECHAR'; ".
         "document.forms.fmFisXML.submit();";
	//
	SET_TIME_LIMIT(120);    // Tempo de execução do PHP
    //
    // JANELA TELA PRINCIPAL
    If ( EMPTY($sAcao) ) {
	   //
       // Tela HTML
       $sRet_TelaJ_HTML =
    	  $oJanelaPrinc->MontaJanHTML(True).
		  '<div style="position:absolute; top:-300px;">'.
		   //
           '<form name="fmFisXML" accept-charset="utf-8" method="post" action="./car_js.php" target="car_'.$sNomeAcesso.'7">'.
            '<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.'">'.
    	    '<input name="Data_Ini" type="hidden" value="">'.
    	    '<input name="Data_Fim" type="hidden" value="">'.
    	    '<input name="Tipo_Exp" type="hidden" value="">'.
           '</form>'.
		  '</div>'.
          '<table border="0" cellspacing="0" cellpadding="0">'.
		   '<tr>'.
		    '<td width="80px" height="32px" align="right">'.
			 'Período:'.
			'</td>'.
			'<td width="28px" align="center">'.
			 '<img src="images/bimg_calendario.png" border="0" id="bt_FisXML_DataIni" style="cursor:pointer;">'.
			'</td>'.
			'<td width="77px">'.
		     '<input id="in_FisXML_DataIni" type="text" maxlength="10" style="width:99%;">'.
			'</td>'.
		    '<td width="30px" align="center">'.
			 '-'.
			'</td>'.
			'<td width="28px" align="center">'.
			 '<img src="images/bimg_calendario.png" border="0" id="bt_FisXML_DataFim" style="cursor:pointer;">'.
			'</td>'.
			'<td width="77px">'.
		     '<input id="in_FisXML_DataFim" type="text" maxlength="10" style="width:99%;">'.
			'</td>'.
		    '<td>'.
			'</td>'.
		   '</tr>'.
		   '<tr>'.
		    '<td height="32px" align="right">'.
			 'Tipo:'.
			'</td>'.
		    '<td colspan="6" height="32px" align="left">'.
  			 '<select id="in_FisXML_Tipo" style="width:320px; height:20px; font-size:14px; border-width:1px; border-style:solid; border-color:#0099FF; margin-top:-1px;">'.
			  '<option value="0">Em diretórios com períodos</option>'.
			  '<option value="1">Sem diretórios e nomes com a ID (Contigencia)</option>'.
			 '</select>'.
			'</td>'.
		   '</tr>'.
		  '</table>'.
		  '<div style="height:6px;"></div>'.
		  //
          '<table width="100%" style="background-color:'.$sCorBarraInf.';">'.
		   '</tr>'.
            '<td width="240px" align="right">'.
            HTML_Botao( 3, 'FisXML_BT_Ger', 'Car_'.$sNomeAcesso.'6.GerarXML();'
                         , 'Gerar e Exportar (F10)' ,'images/btimg_ativar.png').
			'</td>'.
            '<td>'.
			'</td>'.
            '<td width="120px" align="left">'.
            HTML_Botao( 3, 'FisXML_BT_Fch', $oJanelaPrinc->sJavOnClickF
                         , 'Sair (ESC)' ,'images/btimg_fechar.png').
			'</td>'.
		   '</tr>'.
		  '</table>'.
		  //
    	  $oJanelaPrinc->MontaJanHTML(False);
	   //
       // Java posterior
       $sRet_JavsPos .=
	      'parent.document.getElementById("in_FisXML_DataIni").focus();'.
		  "parent.document.getElementById('in_FisXML_DataIni').value= '".ConvertDataUSBR($sData_Trabalho)."';".
	      "var Fm = parent.document.forms.fmFisXML;".
		  //
          'parent.Calendar.setup({ '.
            'inputField : "in_FisXML_DataIni", '.
            'trigger    : "bt_FisXML_DataIni", '.
            'onSelect   : function() { this.hide(); }, '.
            'showTime   : 0, '.
            'dateFormat : "%d/%m/%Y" '.
          '});'.
          'parent.Calendar.setup({ '.
            'inputField : "in_FisXML_DataFim", '.
            'trigger    : "bt_FisXML_DataFim", '.
            'onSelect   : function() { this.hide(); }, '.
            'showTime   : 0, '.
            'dateFormat : "%d/%m/%Y" '.
          '});'.
		  //
		  "function Teclas_F( Objeto, Evento ) {".
             "vNumTecla = parent.Tecla_Apertada(Evento);".
		     "if ( vNumTecla==116) { ".           //  ** [F5] **     Não atualizar
                 //
		     "} else if ( vNumTecla==27) { ".     //  ** [ESC] **         (SAIR)
                 "setTimeout( parent.document.getElementById('FisXML_BT_Fch').onclick , 10);".
		     "} else if ( vNumTecla==121) { ".     //  ** [F10] **         (Gerar e exportar)
                 "setTimeout( parent.document.getElementById('FisXML_BT_Ger').onclick , 10);".
			 "} else {".
			     "return true;".
			 "}".
			 "return false;".
          '}'.
		  //
		  "function GerarXML() {".
         	"Fm.Data_Ini.value=parent.document.getElementById('in_FisXML_DataIni').value;".
         	"Fm.Data_Fim.value=parent.document.getElementById('in_FisXML_DataFim').value;".
         	"Fm.Tipo_Exp.value=parent.document.getElementById('in_FisXML_Tipo').value;".
         	"Fm.acao.value='GERXML';".
			"Fm.submit();".
		    "parent.JanEspera(true, 'Aguarde exportando XMLs...');".
          "}".
		  //
		  "";
	   //
	//
	// Gerar e exportar XML
    } ElseIf ( $sAcao=="GERXML" ) {
	   $sData_Ini = ConvertDataBRUS(@$_POST['Data_Ini']);
	   $sData_Fim = ConvertDataBRUS(@$_POST['Data_Fim']);
	   $nTipo_Exp = Somente_Numeros(@$_POST['Tipo_Exp']);
	   $nData_Ini = ConvertDataSTR($sData_Ini);
	   $nData_Fim = ConvertDataSTR($sData_Fim);
       $sRet_Javs .= "parent.JanEspera(false);";
	   $bExecutar = True;
	   //
	   If ( $bExecutar &&  $nData_Ini<ConvertDataSTR('1990-01-01') ) {
          $sRet_Javs .= Info_Evento('A data inicial inválida',1,"ERRO - XML CFEs");
		  $bExecutar = False;
	   }
	   If ( $bExecutar &&  $nData_Fim<ConvertDataSTR('1990-01-01') ) {
          $sRet_Javs .= Info_Evento('A data final inválida',1,"ERRO - XML CFEs");
		  $bExecutar = False;
	   }
	   If ( $bExecutar && $nData_Ini>$nData_Fim ) {
          $sRet_Javs .= Info_Evento('A data inicial não pode ser maior do que a data final',1,"ERRO - XML CFEs");
		  $bExecutar = False;
	   }
	   // Executar
	   If ($bExecutar) {
          $sSQLQuery =
             "SELECT ".
			    "geral.FSC_COD_COO, geral.FSC_ECF_SER, geral.FSC_DT_REAL, ".
				"COALESCE(cfe_e.CFE_TXT_XML,'') AS CFE_TXT_XML, COALESCE(cfe_c.CFE_TXT_XML,'') AS CFE_CAN_XML ".
             "FROM fiscal_geral AS geral ".
             "LEFT JOIN fiscal_cfe AS cfe_e ON geral.FSC_COD_CFE=cfe_e.CFE_CODIGOI ".
             "LEFT JOIN fiscal_cfe AS cfe_c ON geral.FSC_CAN_CFE=cfe_c.CFE_CODIGOI ".
             "WHERE geral.FSC_DT_REAL BETWEEN '".$sData_Ini." 00:00:00' AND '".$sData_Fim." 23:59:59' ".
			    "AND geral.FSC_COD_CFE>0 ".
			 "ORDER BY geral.FSC_DT_REAL ASC ".
			 ";";
          $aRegistros = MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
		  $bExecutar = MYSQL_NUM_ROWS($aRegistros)>0;
		  If ( ! $bExecutar ) {
             $sRet_Javs .= Info_Evento('Nenhum registro encontrado.',1,"ERRO - XML CFEs");
		  }
 	   }
	   If ($bExecutar) {
          $sTemporarios = GETCWD().'/temporarios';
          If ( ! IS_DIR( $sTemporarios ) ) {
             MKDIR( $sTemporarios );
          }
          $sDir_Exp = $sTemporarios.'/expxml';
          If ( ! IS_DIR( $sDir_Exp ) ) {
             MKDIR( $sDir_Exp );
          }
		  //
		  // Tipo da exportação: Normal com todos os diretórios de período e separado por autorizadas e canceladas
		  If ( $nTipo_Exp==0 ) {
		     $aListaArquivos = ARRAY();
		     $nContador = 1;   //colocado somente sat 
		     While ( $aRegistro = MYSQL_FETCH_ARRAY($aRegistros, MYSQL_ASSOC) ) {
		        // quando for sat
			    If (( STRLEN($aRegistro['CFE_TXT_XML'])>10 ) || ( STRLEN($aRegistro['CFE_CAN_XML'])>10 ) ){
			   	   $sNomeArquivoT = SUBSTR($aRegistro['FSC_DT_REAL'],0,10).'_'.
				                    Str_Zero($nContador,8);
			   	   $nContador++;				 
			    } Else {
			       $sNomeArquivoT = SUBSTR($aRegistro['FSC_DT_REAL'],0,10).'_'.
				                    Str_Zero($aRegistro['FSC_COD_COO'],8)."_".
			   				        $aRegistro['FSC_ECF_SER'];
			    }			  
			    // Gravar o XML da CFE emitida
			    If ( STRLEN($aRegistro['CFE_TXT_XML'])>10 ) {
			       $sNomeArquivoG = $sDir_Exp.'/'.$sNomeArquivoT."_A.xml";
                   $hArquivo = FOPEN( $sNomeArquivoG, "a" );
                   FWRITE($hArquivo, $aRegistro['CFE_TXT_XML']);
                   FCLOSE( $hArquivo );
			   	   $aListaArquivos[SUBSTR($sNomeArquivoT,0,7)."/Autorizadas/".$sNomeArquivoT.".xml"] = $sNomeArquivoG;
			    }
			    // Gravar o XML da CFE cancelada
			    If ( STRLEN($aRegistro['CFE_CAN_XML'])>10 ) {
			       $sNomeArquivoG = $sDir_Exp.'/'.$sNomeArquivoT."_C.xml";
                   $hArquivo = FOPEN( $sNomeArquivoG, "a" );
                   FWRITE($hArquivo, $aRegistro['CFE_CAN_XML']);
                   FCLOSE( $hArquivo );
			   	   $aListaArquivos[SUBSTR($sNomeArquivoT,0,7)."/Canceladas/".$sNomeArquivoT.".xml"] = $sNomeArquivoG;
			    }
			    //
		     }
		     // Preparar nome do arquivo ZIP
		     $sNomeArquivoZ = "Exportacao_XMLs_Cfe_".DATE("d-m-Y",$nData_Ini)."_".DATE("d-m-Y",$nData_Fim).".zip";
		     $sCamnArquivoZ = $sTemporarios."/".$sNomeArquivoZ;
             If ( FILE_EXISTS($sCamnArquivoZ) ) { UNLINK($sCamnArquivoZ); }
	         // Criar arquivo ZIP e executar a compactação
	         $oArq_Zip = new ZipArchive();
             If ( $oArq_Zip->open($sCamnArquivoZ, ZIPARCHIVE::CREATE) ) {
	            //$oArq_Zip->setPassword('Simsoft');    // ANDRE: está função coloca senha no arquivo ZIP mas só funciona apartir do PHP 5.6
			    ForEach ( $aListaArquivos As $sDestino => $sOrigem ) {
                   $oArq_Zip->addFile( $sOrigem , $sDestino );
		        }
             } Else {
		        $sRet_Javs .= Info_Evento('ALERTA: Não foi possível criar o arquivo compactado',1);
             }
             $oArq_Zip->close();
		     // Comando em javascript para fazer o download do arquivo ZIP
		     $sRet_Javs .= 'location.href="./temporarios/'.$sNomeArquivoZ.'";';
		  //
		  // Tipo da exportação: Em arquivos ZIP sem diretórios com quantidade de arquivo controlada (para Contigência)
		  } ElseIf ( $nTipo_Exp==1 ) {
		     $aListaArquivos = ARRAY();
		     While ( $aRegistro = MYSQL_FETCH_ARRAY($aRegistros, MYSQL_ASSOC) ) {
			    // Gravar o XML da CFE emitida
			    If ( STRLEN($aRegistro['CFE_TXT_XML'])>10 ) {
		           $sCFe_Id       = ExtrTextoEm(STRTOLOWER($aRegistro['CFE_TXT_XML']),'id="','"');
				   If ( EMPTY($sCFe_Id) ) { CONTINUE; }
				   $sNomeArquivoT = $sCFe_Id;
			       $sNomeArquivoG = $sDir_Exp.'/'.$sNomeArquivoT.".xml";
                   $hArquivo = FOPEN( $sNomeArquivoG, "a" );
                   FWRITE($hArquivo, $aRegistro['CFE_TXT_XML']);
                   FCLOSE( $hArquivo );
			   	   $aListaArquivos[$sNomeArquivoT.".xml"] = $sNomeArquivoG;
			    }
			    // Gravar o XML da CFE cancelada
			    If ( STRLEN($aRegistro['CFE_CAN_XML'])>10 ) {
		           $sCFe_Id       = ExtrTextoEm(STRTOLOWER($aRegistro['CFE_CAN_XML']),'chcanc="','"');
				   If ( EMPTY($sCFe_Id) ) { CONTINUE; }
				   $sNomeArquivoT = $sCFe_Id;
			       $sNomeArquivoG = $sDir_Exp.'/'.$sNomeArquivoT.".xml";
                   $hArquivo = FOPEN( $sNomeArquivoG, "a" );
                   FWRITE($hArquivo, $aRegistro['CFE_CAN_XML']);
                   FCLOSE( $hArquivo );
			   	   $aListaArquivos[$sNomeArquivoT.".xml"] = $sNomeArquivoG;
			    }
			    //
		     }
			 // Exportar ZIPs
			 $bContinuarW = True;
			 $nContar_Tot = 0;
			 $nContar_Prt = 0;
			 $nQtdMax_Zip = 50;
			 While ( $bContinuarW ) {
			    $nContar_Prt++;
		        // Preparar nome do arquivo ZIP
		        $sNomeArquivoZ =
				    "XMLs_Cfe_".
				    DATE("d-m-Y",$nData_Ini)."_".
					DATE("d-m-Y",$nData_Fim).
					( COUNT($aListaArquivos)>$nQtdMax_Zip ? "_Parte_".$nContar_Prt : '' ).
					".zip";
		        $sCamnArquivoZ = $sTemporarios."/".$sNomeArquivoZ;
                If ( FILE_EXISTS($sCamnArquivoZ) ) { UNLINK($sCamnArquivoZ); }
	            // Criar arquivo ZIP e executar a compactação
	            $oArq_Zip = new ZipArchive();
                If ( $oArq_Zip->open($sCamnArquivoZ, ZIPARCHIVE::CREATE) ) {
	               //$oArq_Zip->setPassword('Simsoft');    // ANDRE: está função coloca senha no arquivo ZIP mas só funciona apartir do PHP 5.6
				   $nContar_For = 0;
				   $nContar_Arq = 0;
			       ForEach ( $aListaArquivos As $sDestino => $sOrigem ) {
					  $nContar_For++;
				      If ( $nContar_For>$nContar_Tot ) {
                         $oArq_Zip->addFile( $sOrigem , $sDestino );
					     $nContar_Tot = $nContar_For;
						 $nContar_Arq++;
					  }
					  If ( $nContar_Arq==$nQtdMax_Zip ) {
					     BREAK;
					  }
		           }
                } Else {
		           $sRet_Javs .= Info_Evento('ALERTA: Não foi possível criar o arquivo compactado',1);
                }
                $oArq_Zip->close();
		        // Comando em javascript para fazer o download do arquivo ZIP
		        $sRet_Javs .= 'window.open("./temporarios/'.$sNomeArquivoZ.'");';
				// Verificar se é o fim
				If ( $nContar_Tot==COUNT($aListaArquivos) ) {
				   $bContinuarW = False;
				}
			 }
			 //
		  }
		  // Apagar diretório temporário
		  Deltree( $sDir_Exp );
		  //
	   }
	   //
	//
	// FECHAR
    } ElseIf ( $sAcao=="FECHAR" ) {
       $sRet_Javs .=
	       "parent.document.getElementById('".$sNomeIdJan2."_Travar').style.visibility='hidden';".
		   "parent.Disabled_In_Elems('".$sNomeIdJan2."',false);".
	       "parent.RmElem('".$oJanelaPrinc->sIdObj."');";
	   //
    }
//
//
//
//  ** JANELA PRINCIPAL DAS OPERACOES FISCAIS **
} Else {
    //
    // Criar objeto Janela
    $oJanelaPrinc = New R_Janela();
    $oJanelaPrinc->sIdObj  = $sNomeIdJan2;
    $oJanelaPrinc->nTop    = 50;
    $oJanelaPrinc->nLeft   = 5;
    $oJanelaPrinc->nWidth  = 390;   // Largura
    $oJanelaPrinc->nHeight = 0;     // Altura
	$oJanelaPrinc->nLeft  += ($nTela_W/2)-($oJanelaPrinc->nWidth/2);
    $oJanelaPrinc->sTitulo = 'Tarefas do Emissor Fiscal';
	//
	$sJavaTravarJ = "document.getElementById('".$oJanelaPrinc->sIdObj."_Travar').style.visibility='visible'; parent.Disabled_In_Elems('".$oJanelaPrinc->sIdObj."',true);";
	$oJanelaPrinc->sJavOnClick = "document.getElementById('in_FisEcfV_Tecla').focus();";
	$oJanelaPrinc->sJavKeyDown = "return Car_".$sNomeAcesso."1.Teclas_F(this,event);";
	//
	$oJanelaPrinc->sJavOnClickF =
         $sJavaTravarJ.
		 "document.forms.fmFisECF.acao.value='FECHAR'; ".
         "document.forms.fmFisECF.submod.value=''; ".
         "document.forms.fmFisECF.submit();";
	//
	SET_TIME_LIMIT(120);    // Tempo de execução do PHP
	$ImpFiscal->nTempoRcv = 60;
	$ImpFiscal->bVerificarECF = False;
    //
    // TIRAR LEITURA X
    If ( $sAcao=="LEITURA_X" ) {
	   //
       $sRet_Javs .= 'parent.JanEspera(false);';
	   //
	   $ImpFiscal->Conectar();
	   $bContinuar = $ImpFiscal->ECF_Ativar();
	   If ($bContinuar) { $bContinuar = $ImpFiscal->ECF_LeituraX(); }
	   //
	   If ($bContinuar) {
	      Info_Evento('Leitura X concluída com sucesso.',0);
	   } Else {
	      $sRet_Javs .=
		       Info_Evento('ERRO: Não foi possível executar comando.<br><br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,$oJanelaPrinc->sTitulo).
			   '';
       }
	   //
    //
    // TIRAR REDUCAO Z
    } ElseIf ( $sAcao=="REDUCAO_Z" ) {
	   //
       $sRet_Javs .= 'parent.JanEspera(false);';
	   //
	   $ImpFiscal->Conectar();
	   $bContinuar = $ImpFiscal->ECF_Ativar();
	   $nEstado = $ImpFiscal->ECF_Estado();
		$bErro_Z = $nEstado==8;
		
		If ($bErro_Z ) { // Se estiver precisando tirar z
		   If ($bContinuar) { 
		     $bContinuar = $ImpFiscal->ECF_ReducaoZ();
		   }
	       If ($bContinuar) {
	          Info_Evento('Redução Z concluída com sucesso.',0);
	       } Else {
	          $sRet_Javs .= Info_Evento('ERRO: Não foi possível executar comando.<br><br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,$oJanelaPrinc->sTitulo);
           }
		} Else {
			If ($bContinuar) {
		      $sRet_Javs .=
					 "parent.Qdr_Prompt_H(true,".
					    "'ATENÇÃO: Verifique se já não foi tirado Redução Z.<br>".
						 "<br> Após a emissão a impressora Fiscal <br>".
						 "<br> não poderá trabalhar mais no mesmo dia ! <br>".
						 "<br> Tem certeza que deseja emitir Redução Z ?'".
						 ",".
		             JAVA_CharCode(
			            "if (_NUM_BOT_==1) { ".
	                      "JanEspera(true, 'Imprimindo Redução Z... Aguarde...');".
                         "setTimeout( function() { ".
                          "document.forms.fmFisECF.acao.value='REDUCAO_Z_CON'; ".
                          "document.forms.fmFisECF.submit();".
                         "}, ".$nTmpFrmEnv.");".
			            "}"
		             ).
						 ",['Sim','Não']".
					 ");".
					 "";                                                                                                                                  
			} Else {
            $sRet_Javs .=
		         Info_Evento('ERRO: Não foi possível executar comando.<br><br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,$oJanelaPrinc->sTitulo).
			      '';
		   }
		}  
	   //
    //
	 } ElseIf ( $sAcao=="REDUCAO_Z_CON" ) {  //CONFIRMA Z
	   //
		
      $sRet_Javs .= 'parent.JanEspera(false);';
	   $ImpFiscal->Conectar();
	   $bContinuar = $ImpFiscal->ECF_Ativar();
	   If ($bContinuar) { 
		  $bContinuar = $ImpFiscal->ECF_ReducaoZ();
		  Info_Evento('Foi avisado que já tinha tirado Redução Z e confirmado pelo operador.',0,$oJanelaPrinc->sTitulo);
		} Else {
	      $sRet_Javs .=
		    Info_Evento('ERRO: Não foi possível executar comando.<br><br>'.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,$oJanelaPrinc->sTitulo).
	      '';
      }
	//
    // CANCELAR ULTIMO CUPOM
    } ElseIf ( $sAcao=="CAN_CUPOM" ) {
	   //
       $sRet_Javs .= 'parent.JanEspera(false);';
	   //
	   // Conectar e ativar
	   $ImpFiscal->Conectar();
	   $bContinuar = False;
	   $sMsg_Erro  = '';
	   // Para o ECF
	   If ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ) {
	      $bContinuar = $ImpFiscal->ECF_Ativar();
	      //
	      // Capturar numero COO do ultimo Cupom
	      If ($bContinuar) {
	         $nFSC_Cod_COO = $ImpFiscal->ECF_NumCupom();
		     If (STRLEN($nFSC_Cod_COO)==0) {
		        $bContinuar = False;
		     }
	      }
	      // Executa comando de cancelamento do cupom
	      If ($bContinuar) {
	         $bContinuar = $ImpFiscal->ECF_CancelaCupom();
	      }
          // Atualizar cupom fiscal no Banco de dados
	      If ($bContinuar) {
	         $sFSC_Cancela = $R_CadFuncionario->FUN_CODIGO.';'.DATE("Y-m-d H:i:s");
             $sSQLQuery =
                    "UPDATE fiscal_geral SET ".
		     		    "FSC_CANCELA='".$sFSC_Cancela."' ".
              	     "WHERE FSC_COD_COO=".$nFSC_Cod_COO."; ";
             MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
	      }
		  //
	      If ($bContinuar) {
             Info_Evento('Último cupom cancelado com sucesso. (COO:'.Str_Zero($nFSC_Cod_COO,6).')',0);
		  }
	   // para o SAT
	   } ElseIf ($ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_SAT) {
	      //
          $sSQLQuery =
		     "SELECT fsc.FSC_CODIGOI, fsc.FSC_CANCELA, ".
			        "cfe.CFE_TXT_XML, cfe.CFE_ARQ_XML ".
			 "FROM fiscal_geral    AS fsc ".
			 "LEFT JOIN fiscal_cfe AS cfe ON cfe.CFE_CODIGOI=fsc.FSC_COD_CFE ".
			 "WHERE fsc.FSC_COD_FUN=".$R_CadFuncionario->FUN_CODIGO." AND fsc.FSC_COD_CFE>0 ".
			 "ORDER BY fsc.FSC_CODIGOI DESC LIMIT 1;";
	      $aFiscal_Reg = MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR());
	      If ($aFiscal_Reg = MYSQL_FETCH_ARRAY($aFiscal_Reg)) {
		     $bContinuar = EMPTY($aFiscal_Reg['FSC_CANCELA']);
			 If (!$bContinuar) {
   		        $sMsg_Erro  = 'Ultimo cupom já está cancelado.';
			 }
		  } Else {
		     $bContinuar = False;
		     $sMsg_Erro  = 'Nenhum cupom localizado para cancelamento.';
		  }
	      If ( $bContinuar ) {
		     $sCfe_TextoXML = $aFiscal_Reg['CFE_TXT_XML'];
		     $sChave_NotaF  = ExtrTextoEm($sCfe_TextoXML ,'<infCFe Id="','" ');
			 // Enviar o pedido de cancelamento ao ACBR
			 $bContinuar = $ImpFiscal->SAT_CancelarCFe($aFiscal_Reg['CFE_ARQ_XML'],'');
			 //
		  }
		  //
	      If ( $bContinuar ) {
			 //
	         $aSAT_Resposta = EXPLODE("|",$ImpFiscal->sACBR_Resposta);
			 $sResposta_Txt = @$aSAT_Resposta[10].@$aSAT_Resposta[11];
			 $sCfe_ArquvXML = SUBSTR($sResposta_Txt,    STRPOS($sResposta_Txt, CHR(13).CHR(10)."Arquivo=")+10 ) ;
			 $sCfe_ArquvXML = SUBSTR($sCfe_ArquvXML, 0, STRPOS($sCfe_ArquvXML, ".xml")+4) ;
			 $sCfe_TextoXML = SUBSTR($sResposta_Txt,    STRPOS($sResposta_Txt, CHR(13).CHR(10)."XML=")+6 ) ;
			 // Enviar o pedido de impressão de cancelamento ao ACBR
			 $ImpFiscal->SAT_ImprimirExtratoCancelamento($sCfe_ArquvXML);
			 // Incluir novo XML na tabela FISCAL_CFE no banco de dados
             $sSQLQuery =
			    "INSERT INTO fiscal_cfe(".
				   "CFE_TXT_XML,CFE_ARQ_XML".
				") VALUES (".
				   SQL_Bin($sCfe_TextoXML).",".
				   SQL_Bin($sCfe_ArquvXML)." ".
				");";
		     MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
			 $nFSC_Can_CFE = MYSQL_INSERT_ID();
			 //
	         $sFSC_Cancela = $R_CadFuncionario->FUN_CODIGO.';'.DATE("Y-m-d H:i:s");
             $sSQLQuery =
                    "UPDATE fiscal_geral SET ".
		     		    "FSC_CANCELA='".$sFSC_Cancela."',".
						"FSC_CAN_CFE=".$nFSC_Can_CFE." ".
              	    "WHERE FSC_CODIGOI=".$aFiscal_Reg['FSC_CODIGOI']."; ";
             MYSQL_QUERY($sSQLQuery) or die(MYSQL_ERROR().'<br>'.$sSQLQuery);
		     //
		  }
	      //
	      If ($bContinuar) {
             Info_Evento('Último cupom cancelado com sucesso.<br>'.$sChave_NotaF,0);
		  }
		  //
	   }
	   If (!$bContinuar) {
	      $sRet_Javs .=
		       Info_Evento('ERRO: Não foi possível executar comando.<br>'.$sMsg_Erro.HTMLENTITIES($ImpFiscal->sACBR_Erro),1,$oJanelaPrinc->sTitulo).
			   '';
       }
	   //
    //
	// COPIAR ARQUIVOS RFD
    } ElseIf ( $sAcao=="ARQ_RFD" ) {
	   // Executar Organização RFD do ACBR
	   $sErro_ArqRFD = Organiza_Arq_RFD();
       $sRet_Javs .=
	        'parent.JanEspera(false);'.
			( STRLEN($sErro_ArqRFD)==0 ?
			   Info_Evento("Arquivos NFP copiados com sucesso.",0)
			:
			   Info_Evento($sErro_ArqRFD,1)
			);
	//
	// FECHAR
    } ElseIf ( $sAcao=="FECHAR" ) {
       $sRet_Javs .=
	       'parent.document.getElementById("dv_MenuL_Barra").style.visibility="visible";'.
	       "parent.RmElem('".$oJanelaPrinc->sIdObj."');";
    //
    // JANELA TELA PRINCIPAL
    } Else {
	   //
       // Tela HTML
       $sRet_TelaJ_HTML =
    	  $oJanelaPrinc->MontaJanHTML(True).
		  '<div style="position:absolute; top:-300px;">'.
		   // Teclas
		   '<input id="in_FisEcfV_Tecla" style="position:absolute; top:-100; left:-100; width:1px; height:1px;">'.
		   //
           '<form name="fmFisECF" 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.'">'.
          '</form>'.
		  '</div>'.
		  //
		  '<table width="100%">'.
		   ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ?
		   '<tr>'.
		    '<td height="36px" align="center" valign="middle">'.
             HTML_Botao( 3, 'objFscEcf_BT_LeX', 
                                "JanEspera(true, 'Imprimindo Leitura X... Aguarde...'); ".
		                        "document.forms.fmFisECF.acao.value='LEITURA_X'; ".
                                "document.forms.fmFisECF.submit();"
                          , 'Leitura X (F6)' ,'images/btimg_fiscal_ecf.png',210).
			'</td>'.
		   '</tr><tr>'.
		    '<td height="36px" align="center" valign="middle">'.
             HTML_Botao( 3, 'objFscEcf_BT_ReZ', 
                                "JanEspera(true, 'Imprimindo Redução Z... Aguarde...'); ".
			                    "document.forms.fmFisECF.acao.value='REDUCAO_Z'; ".
                                "document.forms.fmFisECF.submit();"
                          , 'Redução Z (F7)' ,'images/btimg_fiscal_ecf.png',210).
			'</td>'.
		   '</tr>' : '').
		   '<tr>'.
		    '<td height="36px" align="center" valign="middle">'.
             HTML_Botao( 3, 'objFscEcf_BT_CnC', 
                                "JanEspera(true, 'Cancelando o Último Cupom Fiscal... Aguarde...'); ".
		                        "document.forms.fmFisECF.acao.value='CAN_CUPOM'; ".
                                "document.forms.fmFisECF.submit();"
                          , 'Cancelar ultimo cupom (F8)' ,'images/btimg_fiscal_ecf.png',210).
			'</td>'.
		   '</tr>'.
		   ( $ImpFiscal->nTipo_EmissoFiscal == Acbr_EmissorFiscal_ECF ?
		   '<tr>'.
		    '<td height="36px" align="center" valign="middle">'.
             HTML_Botao( 3, 'objFscEcf_BT_RFD', 
                                "JanEspera(true, 'Copiando arquivos... Aguarde...'); ".
		                        "document.forms.fmFisECF.acao.value='ARQ_RFD'; ".
                                "document.forms.fmFisECF.submit();"
                          , 'Copiar arquivos NFP' ,'images/btimg_docs.png',210).
			'</td>'.
		   '</tr>' : '').
		   '<tr>'.
		    '<td height="36px" align="center" valign="middle">'.
             HTML_Botao( 3, 'objFscCfe_BT_XML', 
		                        "sAntSubMod = document.forms.fmFisECF.submod.value;".
		                        "sAntTarget = document.forms.fmFisECF.target;".
		                        "document.forms.fmFisECF.submod.value='EXP_XMLCFE';".
		                        "document.forms.fmFisECF.target='car_".$sNomeAcesso."6';".
		                        "document.forms.fmFisECF.acao.value='';".
                                "document.forms.fmFisECF.submit();".
		                        "document.forms.fmFisECF.target = sAntTarget;".
		                        "document.forms.fmFisECF.submod.value = sAntSubMod;".
								$sJavaTravarJ
                          , 'Exportar XML das CFEs (F9)' ,'images/btimg_comandas.png',210).
			'</td>'.
		   '</tr>'.
		  '</table>'.
		  //
		  // Botões
          '<table width="100%" style="background-color:'.$sCorBarraInf.';"></tr>'.
           '<td>'.
			'&nbsp;'.
           '</td>'.
           '<td width="114px" align="left">'.
            HTML_Botao( 3, 'objFscEcf_BT_Fch', $oJanelaPrinc->sJavOnClickF
                         , 'Sair (ESC)' ,'images/btimg_fechar.png').
           '</td>'.
           '<td width="4px" height="40px" align="left">&nbsp;</td>'.
           '</td>'.
          '</tr></table>'.
		  //
    	  $oJanelaPrinc->MontaJanHTML(False);
       //
       $sRet_Javs .=
	      'parent.document.getElementById("dv_MenuL_Barra").style.visibility="hidden";'.
		  '';
       // Java posterior
       $sRet_JavsPos .=
	      "parent.document.getElementById('in_FisEcfV_Tecla').focus(); ".
		  "function Teclas_F( Objeto, Evento ) {".
             "vNumTecla = parent.Tecla_Apertada(Evento);".
		     "if ( vNumTecla==116) { ".           //  ** [F5] **     Não atualizar
                 //
             "} else if ( vNumTecla==117) { ".    //  ** [F6] **          (Leitura X)
                 "setTimeout( parent.document.getElementById('objFscEcf_BT_LeX').onclick , 100);".
             "} else if ( vNumTecla==118) { ".    //  ** [F7] **          (Redução Z)
                 "setTimeout( parent.document.getElementById('objFscEcf_BT_ReZ').onclick , 100);".
             "} else if ( vNumTecla==119) { ".    //  ** [F8] **          (Cancelar ultimo cupom)
                 "setTimeout( parent.document.getElementById('objFscEcf_BT_CnC').onclick , 100);".
             "} else if ( vNumTecla==120) { ".    //  ** [F9] **          (Exportar XML das CFEs)
                 "setTimeout( parent.document.getElementById('objFscCfe_BT_XML').onclick , 100);".
		     "} else if ( vNumTecla==27) { ".     //  ** [ESC] **         (SAIR)
                 "setTimeout( parent.document.getElementById('objFscEcf_BT_Fch').onclick , 100);".
			 "} else {".
			     "return true;".
			 "}".
			 "return false;".
          '}'.
		  //
		  "";
	   //
	}
}
//
//
Function Organiza_Arq_RFD() {
    $sCaminhoOri = SQLVarConfig('FISCAL_ARQ_RFD_ORI');
    $sCaminhoDes = SQLVarConfig('FISCAL_ARQ_RFD_DES');
	$bExecutaF = ( STRLEN($sCaminhoOri)>0 && STRLEN($sCaminhoDes)>0 && IS_DIR($sCaminhoOri) && IS_DIR($sCaminhoDes) );
	$sMensgErro = '';
	If ( $bExecutaF ) {
	   $aListaArqs = DIR($sCaminhoOri);
	   While ( $sArquivo = $aListaArqs->READ() ){
	       If ( STRLEN($sArquivo)>3) {
			  $sExtensao = EXPLODE(".",$sArquivo);
			  $sExtensao = $sExtensao[1];
			  //
			  If ( STRPOS('_DR'.  // DARUMA
			              '_BE'.  // BEMATECH
			              '_SW'.  // SWEDA
			              '_EP'.  // EPSON
			              '_EL'.  // ELGIN
			              '_AC'   // DATAREGIS
			     ,SUBSTR($sArquivo,0,2))==0 OR STRLEN($sExtensao)<>3 ) {
				 // Não é arquivo de RFD
				 Continue; // Pula para o próximo ciclo
			  }
			  //
			  If ( STRLEN($sExtensao)==3 ) {
			     $aExtensao = ARRAY();
                 For ($nContador=0; $nContador<=2; $nContador++) {
				     $sExtensaoC = SUBSTR($sExtensao,$nContador,1);
					 $nExtensaoC = 0;
					 If ( STRLEN(Somente_Numeros($sExtensaoC))>0 ) {
					    $nExtensaoC = $sExtensaoC+0;
					 } Else {
					    $nExtensaoC = ORD($sExtensaoC)-55;
					 }
					 $aExtensao[] = $nExtensaoC;
				 }
			  }
			  $sRFD_Dia = Str_Zero($aExtensao[0],2);
			  $sRFD_Mes = Str_Zero($aExtensao[1],2);
			  $sRFD_Ano = $aExtensao[2]+2000;
			  $sVerfDir =
			     'If ( ! IS_DIR($sCaminhoD) ) {'.
			        'If ( ! MKDIR($sCaminhoD) ) {'.
					    '$sMensgErro .= "Não foi possível criar a pasta: ".$sCaminhoD."<br>";'.
						'BREAK;'.
					'}'.
			     '}';
			  //
			  $sCaminhoO = $sCaminhoOri.$sArquivo;
			  $sCaminhoD = $sCaminhoDes.$sRFD_Ano;
			  EVAL($sVerfDir);
			  $sCaminhoD .= '/'.$sRFD_Mes;
			  EVAL($sVerfDir);
			  $sCaminhoD .= '/'.$sArquivo;
			  //
			  $bExecutaF = False;
			  If ( FILE_EXISTS($sCaminhoD) ) {
			     $bExecutaF = ( FILEMTIME($sCaminhoO) <> FILEMTIME($sCaminhoD) );
			  } Else {
			     $bExecutaF = True;
			  }
		      //
			  If ( $bExecutaF ) {
			     If ( COPY($sCaminhoO, $sCaminhoD) ) {
				    TOUCH($sCaminhoD, FILEMTIME($sCaminhoO), FILEMTIME($sCaminhoO));
				 } Else {
					$sMensgErro .= "Copiar o arquivo:<br>----- ".$sCaminhoO." para ".$sCaminhoD."<br>";
				 }
			  }
			  //
	       }
	   }
	}
	Return $sMensgErro;
}
//


//
// ** LIXO **
/* ** PODE SERVIR PARA ALGUMA COISA ***
Function Gerar_CAT52( $nMes, $nAno, $bGravaArq=True ) {
    $s_DataIni = DATE("Y-m-d", MKTIME(0, 0, 0, $nMes  , 1, $nAno) );
    $s_DataFim = DATE("Y-m-d", MKTIME(0, 0, 0, $nMes+1, 0, $nAno) );
	//
    $sSQLQuery = 
	    "SELECT ".
		     "* ".
	    "FROM fiscal_geral ".
		"WHERE ".
		     "FSC_DT_REAL>='".$s_DataIni." 00:00:00' AND FSC_DT_REAL<='".$s_DataFim." 23:59:59'".
		";";
    $Rows = MYSQL_QUERY($sSQLQuery) or die($sSQLQuery.'<br>'.MYSQL_ERROR());
	$nRetornoVal = 0;
    While ( $Row = MYSQL_FETCH_OBJECT($Rows) ) {
	   ECHO $Row->FSC_TOT_LIQ.' '.$Row->FSC_COD_COO.'<br>';
    }
	//
}
*/
Function Deltree($dir) { 
  $files = array_diff(scandir($dir), array('.','..')); 
  foreach ($files as $file) { 
    (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
  } 
  return rmdir($dir); 
}
?>