<?php

if ($_GET[acao]=='impressao_nfe') {
	// PASSA O QUE VIER NO GET PARA O POST
	$_POST[acao]=$_GET[acao];
	$_POST[numero_nota]=$_GET[numero_nota];

	// SE FOR IMPRIMIR O PDF TEM QUE USAR UMA CONEXÃO BASICA
	include "ver_sessao.php";
	include "conecta_basico.php";
} else {	
	include "ver_sessao.php";
	include "conecta.php";
}
// include "pdv_funcoes.php";


error_reporting(0);
// date_default_timezone_set('America/Sao_Paulo');

/*** CACTUX *****************************************************************************\

NFCe 

\****************************************************************************************/

set_time_limit(0);

// LOG AGORA VAI SER UM ARQUIVO INTERNO DO SISTEMA DO CLIENTE.
define(LOG,$_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH]."LOG_SPED.TXT");
define(LOG_TESTE,$_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH]."LOG_TESTE_SPED.TXT");
define(LOCAL_REDE,$_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH]."xml_nfe/");
define(LOCAL,$_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH]."xml_nfe/");


//define(SERVIDOR_CACTUS,"http://".meu_ip().":8010/servidor_nfce/");
define(SERVIDOR_CACTUS,$CONFIGURA[SERVIDOR_CACTUS]);

define(NFE_CLIENTE,"$CONFIGURA[CLIENTE_NFE]");


// ----------------------------------------------------------------------------------------
//
// IF QUE FAZ O CONTROLE DA PARTE AUTOMATICA DA EMISSAO DO NFCE. FEITA A APRTIR DO PDV
//
// ----------------------------------------------------------------------------------------
if( $_GET[id_ordem_auto] ) {

	
	if( $_GET[acao_auto] == 'enviar' ) {
	
		$_POST[id] = $_GET[id_ordem_auto];
		$_POST[porcentagem_nota] = '100';
		$_POST[envio_automatico] = 1;
		
		enviar_nota();

	}
		
	if( $_GET[acao_auto] == 'retornar' ) {
		$_POST[id] = $_GET[id_ordem_auto];
		$_POST[envio_automatico] = 1;

		retorno();
	}

	if( $_GET[acao_auto] == 'imprimir' ) {

		$_POST[id] = $_GET[id_ordem_auto];

		$nNota = carregar('nota','','nota_nb_ordem',$_POST[id]);
		$_POST[numero_nota] = $nNota[nota_tx_chaveAcesso];

		$_POST[envio_automatico] = 1;
		imprime_danfe();
	}

	if( $_GET[acao_auto] == 'imprimir_contigencia' ) {

		$_POST[id] = $_GET[id_ordem_auto];

		$nNota = carregar('nota','','nota_nb_ordem',$_POST[id]);
		$_POST[numero_nota] = $nNota[nota_tx_chaveAcesso];

		$_POST[envio_automatico] = 1;
		imprime_danfe_contigencia();
	}

	if( $_GET[acao_auto] == 'cancelar' ) {

		$_POST[id] = $_GET[id_ordem_auto];

		$nNota = carregar('nota','','nota_nb_ordem',$_POST[id]);
		$_POST[numero_nota] = $nNota[nota_tx_chaveAcesso];

		$_POST[envio_automatico] = 1;
		cancela_nota();
	}
	
	exit;	
}


function modificar_venda(){
	index();
	exit();
}



function baixar_xml() {
	global $CACTUX_CONF;
	$a = carregar('nota','','nota_nb_ordem',"$_POST[id]");
	if($a[nota_tx_statusNota]=='NFe Autorizada'){
		if($a[nota_tx_emissao]!='' && $a[nota_tx_emissao]!='0000-00-00 00:00:00'){
			$pasta_xml = substr($a[nota_tx_emissao],0,4).substr($a[nota_tx_emissao],5,2).'/autorizada/';
		}
	}elseif($a[nota_tx_statusNota]=='NFe Inutilizada'){
		if($a[nota_tx_emissao]!='' && $a[nota_tx_emissao]!='0000-00-00 00:00:00'){
			$pasta_xml = substr($a[nota_tx_emissao],0,4).substr($a[nota_tx_emissao],5,2).'/inutilizado/';
			$sufixo = '-inu';
		}
	}else{
		if($a[nota_tx_emissao]!='' && $a[nota_tx_emissao]!='0000-00-00 00:00:00'){
			$pasta_xml = substr($a[nota_tx_emissao],0,4).substr($a[nota_tx_emissao],5,2).'/contingencia/';
		}
	}

	// header('Content-disposition: attachment; filename="'.$a[nota_tx_chaveAcesso].'-nfe.xml'.'"');
	// header('Content-type: "text/xml"; charset="utf8"');
	// readfile($_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$a[nota_tx_chaveAcesso].'-nfe.xml');

	// echo $_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$a[nota_tx_chaveAcesso].'-nfe.xml';
	chamar_pag($CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$a[nota_tx_chaveAcesso].$sufixo.'-nfe.xml','','','');
	// readfile($_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$a[nota_tx_chaveAcesso].'-nfe.xml');
	exit;
	
	
}


function getCurlValue($filename, $contentType, $postname) {

	// PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax
	// See: https://wiki.php.net/rfc/curl-file-upload
	if (function_exists('curl_file_create')) {
		return curl_file_create($filename, $contentType, $postname);
	}

//echo "asd";
//exit;

 
	// Use the old style if using an older version of PHP
	$value = "@{$filename};filename=" . $postname;
	if ($contentType) {
		$value .= ';type=' . $contentType;
	}
 
	return $value;
}


function nfe_recebe_log() {
		
		// ENDERECO DO SERVIDOR DE NFe CACTUS
		//$target_url = 'http://192.168.0.110/servidor_nfe/retorno.php';
		$target_url = SERVIDOR_CACTUS.'retorno.php';
		
		$data = array('cliente' => NFE_CLIENTE);
		$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);
 
		$ch = curl_init();
		curl_setopt_array($ch, $options);
		$ret_curl = curl_exec($ch);
		curl_close($ch);

//$ret_curl = 'OK |NFE.IMPRIMIRDANFEPDF("c:\www\servidor_nfe\hortvida\24170109255518000140550010000000021100655243-nfe.xml") OK: Arquivo criado em: C:\ACBrMonitorPLUS\PDF\24170109255518000140550010000000021100655243-nfe.pdf | Fim';
		
//echo "!$ret_curl!<hr><br><br>";
		if( $ret_curl == ''  ) {
			set_status("ERRO 16: Impossível se comunicar com servidor CACTUS");
			return;
		}


		if( substr($ret_curl,0,2) != 'OK'  ) {
			if( get_status() == '' )
				set_status($ret_curl);
			return;
		}

		if( substr($ret_curl,-5) != '| Fim'  ) {
			set_status("ERRO 11: Mensagem incompleta!");
			return;
		}

		
		// SALVA O LOG VINDO DO SERVIDOR CACTUS NO CLIENTE HORTVIDA
		if (!$fp = fopen(LOG, 'w')) {
			set_status("ERRO 17: Não foi possível abrir o arquivo (".LOG.")");
			return;
		}

		// SALVA O LOG NO ARQUIVO
		fputs($fp,$ret_curl);
		fclose($fp);

		return;
}

function nfe_envia_xml($xml_aguardando,$xml_autorizado) {
		global $CONFIGURA;

		require_once "../spednfe/vendor/autoload.php";

		
		$config = [
		   "atualizacao" => "2018-02-06 06:01:21",
		   "tpAmb" => $CONFIGURA[AMBIENTE_NFE], // Se deixar o tpAmb como 2 você emitirá a nota em ambiente de homologação(teste) e as notas fiscais aqui não tem valor fiscal
		   "razaosocial" => $CONFIGURA[NOME_IMPRESSAO],
		   "siglaUF" => "RN",
		   "cnpj" => trata_xml($CONFIGURA[CNPJ]),
		   "schemes" => "PL_009_V4",
		   "versao" => "4.00",
		   "tokenIBPT" => "AAAAAAA",
		   "CSC" => $CONFIGURA[CSC],
		   "CSCid" => $CONFIGURA[CSCID]
		];


		// ENDERECO DO SERVIDOR DE NFe CACTUS
		// $target_url = SERVIDOR_CACTUS.'enviar.php';
		

		$arq_vez_caminho_completo = $xml_aguardando;
		// $arq_vez = basename($arq_vez_caminho_completo);
		// $md5_antes = md5_file($arq_vez_caminho_completo);
		$xml = file_get_contents($arq_vez_caminho_completo);

		//Assinar XML
		$configJson = json_encode($config);
		$certificadoDigital = file_get_contents($CONFIGURA[CERTIFICADO]);

		$cert = NFePHP\Common\Certificate::readPfx($certificadoDigital, $CONFIGURA[SENHA]);
		try {
			$tools = new NFePHP\NFe\Tools($configJson,$cert);
		} catch (\Exception $e) {
			// SE AS INFORMAÇÕES DA EMPRESA NÃO ESTIVEREM SIDO INFORMADAS
			return($e->getMessage());
		}
		// $tools->model('65');


		$soap = new NFePHP\Common\Soap\SoapCurl($cert);
		$soap->timeout($CONFIGURA[TIMEOUT]);

		try {
			$xmlAssinado = $tools->signNFe($xml); // O conteúdo do XML assinado fica armazenado na variável $xmlAssinado
		} catch (\Exception $e) {
			//aqui você trata possíveis exceptions da assinatura
			$contJson = $tools->contingency->activate('RN', 'SERVIDOR SEFAZ FORA DO AR', $tipo = 'OFFLINE');
			$tools->contingency->load($contJson);

			file_put_contents($arq_vez_caminho_completo,$xml);
			return($e->getMessage());
		}

		//Enviar Lote
		try {
			$idLote = str_pad(100, 15, '0', STR_PAD_LEFT); // Identificador do lote
			$resp = $tools->sefazEnviaLote([$xmlAssinado], $idLote);

			$st = new NFePHP\NFe\Common\Standardize();
			$std = $st->toStd($resp);
			if ($std->cStat != 103) {
				//erro registrar e voltar
				return("[$std->cStat] $std->xMotivo");
			}
			$recibo = $std->infRec->nRec; // Vamos usar a variável $recibo para consultar o status da nota
		} catch (\Exception $e) {
			//aqui você trata possiveis exceptions do envio
			// exit($e->getMessage());
			
			$contJson = $tools->contingency->activate('RN', 'SERVIDOR SEFAZ FORA DO AR', $tipo = 'OFFLINE');
			$tools->contingency->load($contJson);

			file_put_contents($arq_vez_caminho_completo,$xmlAssinado);

			return $e->getMessage();
		}

		//Consultar Recibo
		try {
			$protocolo = $tools->sefazConsultaRecibo($recibo);
		} catch (\Exception $e) {
			//aqui você trata possíveis exceptions da consulta
			// exit($e->getMessage());
			return $e->getMessage();
		}

		//finalizar o processo
		try {
			$protocol = new NFePHP\NFe\Factories\Protocol();
			$xmlProtocolado = $protocol->add($xmlAssinado,$protocolo);
			file_put_contents($arq_vez_caminho_completo,$xmlProtocolado);
		} catch (\Exception $e) {
			//aqui você trata possíveis exceptions ao adicionar protocolo
			return $e->getMessage();
		}
		

		$stdCl = new NFePHP\NFe\Common\Standardize($protocolo);
		$arr = $stdCl->toArray();
		
		
		if(@array_key_exists('xMotivo', $arr))
			$notaStatus = $arr[protNFe][infProt][cStat];
		
		
		
		if($notaStatus=='100'){
			file_put_contents($xml_autorizado,$xmlProtocolado);
		}
			

		return $arr;

		exit;





		//NOTE: The top level key in the array is important, as some apis will insist that it is 'file'.
		$data = array('file' => base64_encode($arq),'nome' => $arq_vez, 'md5' => $md5_antes,'cliente' => NFE_CLIENTE);

		$options = array( CURLOPT_URL => $target_url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $data, CURLOPT_TIMEOUT => 5);
		$ch = curl_init();
		curl_setopt_array($ch, $options);
		$ret_curl = curl_exec($ch);
		curl_close($ch);



		$erro = 1;
		
		// SE O SERVIDOR RETORNOU DIZENDO QUE GRAVOU, VERIFICA SE O MD5 EH IQUAL
		if( substr($ret_curl,0,2) == "OK" ) {
			$md5_depois = trim(substr($ret_curl,3));

			if( $md5_antes != $md5_depois ) {
				$erro = 1;
				$ret_curl = "ERRO 12: arquivo corrompido no servidor!";
			} else {
				$erro = 0;
				$ret_curl = "NFe Enviada";
			}
		}

		if( substr($ret_curl,0,4) == "ERRO" ) {
			$erro=0;
		}		

		// VERIFICA SE HOUVE ERRO NO ENVIO
		if( $erro == 1 ) {
			$ret_curl = "ERRO 10: Erro ao enviar o xml";
		}
		

	return $ret_curl;	
}

function limpa_log_retorno() {

	// NAO A FUNCAO DE LIMPAR O ARQUIVO DE RETORNO AGORA É NO SERVIDOR CACTUS NFe E NAO MAS NO CLIENTE
	
}

function exclui_pedido(){
	
	//remover('ordem',$_POST[id]);
	//volta_estoquePedido();
	

}

function exclui_venda(){

	$sql_movimento = selecionar('movimento','movi_tx_status',"!inativo"," AND movi_nb_ordem = '$_POST[id]'");
	if(num_linhas($sql_movimento)>0){
		$a_mov = carrega_array($sql_movimento);

		atualizar('movimento','movi_tx_status','inativo',$a_mov[0]);
		atualizar('ordem',array('orde_tx_status','orde_tx_statusNota'),array('Cancelado','Venda Cancelada'),$_POST[id]);

		$sql_baixa = selecionar('orpr,ordem,produto','orpr_tx_status','ativo'," AND orde_nb_id = '$_POST[id]'");
		while($a_baixa=carrega_array($sql_baixa)){
			$a_prod = carregar('prod_tx_qtde|produto',$a_baixa[prod_nb_id]);
			atualizar('produto',array('prod_tx_qtde'),array($a_prod[prod_tx_qtde]+$a_baixa[orpr_tx_qtde]),$a_baixa[prod_nb_id]);
		}	

	}

	index();
	exit;
}

function volta_estoquePedido(){
	
	$sql = selecionar('orpr,ordem','orde_nb_id,orpr_tx_status',"$_POST[id],ativo");
	
	while( $a = carrega_array($sql) ){
		
		$prod = carregar('produto',$a[orpr_nb_produto]);
		
		if( $a[orpr_tx_forma] == 'Unidade' ) {
			
			$qtde = ($prod[NOME_QTDE]+$a[orpr_tx_qtde]);
			$qtdecx = $prod[NOME_QTDE]+($a[orpr_tx_qtde]*$prod[prod_tx_embalagem]); 
			
		}else{
			
			$qtde = $prod[NOME_QTDE]+($a[orpr_tx_qtde]*$prod[prod_tx_embalagem]);
			$qtdecx = $prod[prod_tx_embalagem]+$a[orpr_tx_qtde];
			
		}
		
		$campos =array(NOME_QTDE);
		$valores=array($qtde);
		atualizar('produto',$campos,$valores,$prod[prod_nb_id]);
		
	}
	
	layout_pedido_cliente();
	exit;
	
}

function dv($key_nfe){


	$base = 9;
	$result = 0;
	$sum = 0;
	$factor = 2;

	for ($i = strlen($key_nfe); $i > 0; $i--) {
		$numbers[$i] = substr($key_nfe,$i-1,1);
		$partial[$i] = $numbers[$i] * $factor;
		
		$sum += $partial[$i];
		if ($factor == $base) {
			$factor = 1;
		}
		$factor++;
	}
	
	if ($result == 0){
		$sum *= 10;
		$digit = $sum % 11;
	if ($digit == 10){
		$digit = 0;
	}
	
	return $digit;
	
	} elseif ($result == 1){
		$rest = $sum % 11;
		return $rest;
	}
	
}

function gera_numeroNota(){
	
	$ordem = $_POST[id];
	$a = carregar('ordem',$ordem); 
	$loja = carregar('empresa',$a[orde_nb_empresa]);
	$nota = carregar('nota','','nota_nb_ordem',$ordem);
	$cidade = carregar('cidade',$loja[empr_nb_cidade]);
	
	//	SE A NOTA JÁ EXISTIR, ENTAO SÓ FAZ RETORNAR AS INFORMACOES
	// SENAO CRIA UMA NOVA
	if( $nota[nota_tx_chaveAcesso] > 0 && $nota[nota_tx_chaveAcesso] != '' ) {
		return $nota[nota_tx_chaveAcesso];
	}	
	
	$uf = $cidade[cida_tx_codUf];//02
	$aamm = date('y').date('m');//04
	$cnpj = str_replace(array('.','/','-'),array('','',''),$loja[empr_tx_cnpj]);//14
	$modelo = $nota[nota_tx_modelo];//02
	$serie = zeros($nota[nota_tx_serie],3);//03
	$numeroNf = zeros($nota[nota_tx_numero],9);//09
	$formaEmissao = $nota[nota_tx_formaEmissao];//01
	$codNum = "1".zeros($nota[nota_tx_numero],7);
	
	$num = $uf.$aamm.$cnpj.$modelo.$serie.$numeroNf.$formaEmissao.$codNum;
	$dv = dv($num);//01
	$numero = $num.$dv;
	
	$campos=array(nota_tx_chaveAcesso,nota_tx_codigoNumerico,nota_tx_dv);
	$valores=array($numero,$codNum,$dv);
	atualizar('nota',$campos,$valores,$nota[nota_nb_id]);
	
	return $numero;
	
	exit;	
}




// ESSA FUNCAO ANTIGA RECEBIA SERVIA PARA TIRAR, POR EXMEPLO 80% DO VALOR DA NOTA
function acha_desconto_antigo($orpr){
	
	$a_orpr = carregar('orde_tx_valor,orpr_tx_valor,orpr_tx_desconto|orpr,ordem,produto',$orpr);
	
//	$a_orpr[orpr_tx_valor] = $a_orpr[orpr_tx_valor]*($_POST[porcentagem_nota]/100);
	$a_orpr[orde_tx_valor] = $a_orpr[orde_tx_valor]*($_POST[porcentagem_nota]/100);

	$totalOrdem = $a_orpr[orde_tx_valor];
	$valorProduto = $a_orpr[orpr_tx_valor];
	
	$desconto = $a_orpr[orde_tx_valor] - $a_orpr[orde_tx_valor];

	
	$pProd = (100*$valorProduto) / $totalOrdem;
	$vDesc = ($pProd/100)*$desconto;

	return valor(mostra_valor($vDesc));
	
}

// A FUNCAO NOVA SERVE PARA DILUIR O DESCONTO DADO NOS PRODUTOS
function acha_desconto($orpr,$primeiro_produto){
	
	$a_orpr = carregar('orde_tx_valor,orpr_tx_valor,orpr_tx_desconto|orpr,ordem,produto',$orpr);
	

	$totalOrdem = $a_orpr[orde_tx_valor];
	$valorProduto = $a_orpr[orpr_tx_valor];
	
	$desconto = $a_orpr[orde_tx_valor] - $a_orpr[orde_tx_valor];

	
	$pProd = (100*$valorProduto) / $totalOrdem;
	$vDesc = ($pProd/100)*$desconto;

	return valor(mostra_valor($vDesc));
	
}



function gera_xml(){
	global $CONFIGURA;
	//echo "Gerado xml".date("H:i:s");
	
	$ordem = $_POST[id];
	$a = carregar('ordem',$ordem); 

	//DADOS EMITENTE
	$loja = carregar('empresa',$a[orde_nb_empresa]);
	$bairro = carregar('bairro',$loja[empr_nb_bairro]);
	$cidade = carregar('cidade',$loja[empr_nb_cidade]);
	
	//DADOS DESTINATARIO
	$cliente = carregar('entidade',$a[orde_nb_entidade]);
	$bairro_cliente = carregar('bairro',$cliente[enti_nb_bairro]);
	$cidade_cliente = carregar('cidade',$cliente[enti_nb_cidade]);


	verifica_nota();
	$numeroNota = gera_numeroNota();
	
	//DADOS NOTA FISCAL
	$a_nota = carregar('nota,ordem','','nota_nb_ordem',$ordem);

	if ($a_nota[nota_nb_transportadora]>0) {
		$a_transp = carregar('entidade',$a_nota[nota_nb_transportadora]);
		if( $a_transp[enti_nb_cidade] > 0 ) {
			$a_transp_cida = carregar('cidade',$a_transp[enti_nb_cidade]);
		} else {
			$a_transp_cida[cida_tx_nome] = 'Mossoro';
			$a_transp_cida[cida_tx_uf] = 'RN';
		}
	}
	
	$nota[CodNumerico] = $a_nota[nota_tx_codigoNumerico];
	$nota[naturezaOperacao] = $a_nota[nota_tx_naturezaOperacao];
	$nota[modelo] = $a_nota[nota_tx_modelo];
	$nota[serie] = $a_nota[nota_tx_serie];
	$nota[numero] = $a_nota[nota_tx_numero];	
	$nota[referenciada] = preg_replace("/[^0-9]/", "", $a[orde_tx_referenciada]);
	$a_nota[nota_tx_emissao] = date('Y-m-d H:i:s');
	$nota[dataEmissao] = substr($a_nota[nota_tx_emissao],0,10).'T'.substr($a_nota[nota_tx_emissao],11).'-03:00';
	// $nota[data] = substr($a_nota[nota_tx_emissao],0,19);
	// $nota[hora] = substr($a_nota[nota_tx_emissao],-8);
	$nota[tipoNota] = $a_nota[nota_tx_tipo];
	$nota[tipoImpressao] = $a_nota[nota_tx_tipoImpressao];//1-Retrato/ 2-Paisagem
	$nota[tipoEmissao] = $a_nota[nota_tx_formaEmissao];
	//$nota[vDesconto] = $a[orde_tx_valor]-$a[orde_tx_valorTotal];
	$nota[indFinal] =  substr($a_nota[nota_tx_consumidorFinal],0,1);	
	$nota[dv] = $a_nota[nota_tx_dv];
	$nota[idDest] = substr($a_nota[nota_tx_destinoOperacao],0,1);
	$nota[tipoAmbiente] = $CONFIGURA[AMBIENTE_NFE]; //1-PRODUÇÃO/ 2-HOMOLOGAÇÃO
	$nota[finalidade] = substr($a_nota[nota_tx_finalidadeEmissao],0,1);	
	$nota[indPres] = substr($a_nota[nota_tx_tipoAtendimento],0,1);

	$nota[infCpl] = $a_nota[nota_tx_informacoesContribuinte];


	//0 - EMISSÃO DE NF-E COM APLICATIVO DO CONTRIBUINTE
	$nota[procEmissao] = 0;	
	//VERSÃO DO APLICATIVO EMISSOR DE NFe
	$nota[verProcEmissao] = '2.0.9';
	
	
	
	if( trim($loja[empr_tx_bairro]) == '' )
		$bairro[bair_tx_nome] = 'Centro';
	else
		$bairro[bair_tx_nome] = $loja[empr_tx_bairro];
	
	//CÓDIGO DO MUNICÍPIO DE OCORRÊNCIA DO FATO GERADOR DO ISSQN	
	$nota[cMunFG] = $cidade[cida_tx_ibge];
	$nota[codUf] = $cidade[cida_tx_codUf];
	
	$emitente[cnpj] = str_replace(array('.','/','-'),array('','',''),$loja[empr_tx_cnpj]);
	$emitente[razao] = $loja[empr_tx_razao];
	$emitente[fantasia] = $loja[empr_tx_nome];
	$emitente[logradour] = $loja[empr_tx_endereco];
	$emitente[numero] = $loja[empr_tx_numero];
	$emitente[nomeBairro] = $bairro[bair_tx_nome];
	$emitente[complemento] = $loja[empr_tx_complemento];
	$emitente[codCidade] = $cidade[cida_tx_ibge];
	$emitente[nomeCidade] = $cidade[cida_tx_nome];
	$emitente[uf] = $cidade[cida_tx_uf];
	$emitente[cep] = str_replace(array('.','/','-'),array('','',''),$loja[empr_tx_cep]);
	$emitente[codPais] = '1058';
	$emitente[nomePais] = 'Brasil';
	$emitente[inscEstadual] = preg_replace("/[^0-9]/", "", $loja[empr_tx_estadual]);
	$emitente[inscMunicipal] = preg_replace("/[^0-9]/", "", $loja[empr_tx_municipal]);
	$emitente[cnae] = $loja[empr_tx_cnae];
	$emitente[fone] = $loja[empr_tx_fone];
	
	switch( $loja[empr_tx_crt] ){
		
		// case 'Simples Nacional':	$emitente[crt] = '1';	break;
		// case 'Simples Nacional - excesso de sublimite de receita bruta':	$emitente[crt] = '2';	break;
		// case 'Regime Normal':		$emitente[crt] = '3';	break;
		case '1: Simples Nacional':	$emitente[crt] = '1';	break;
		case '2: Simples Nacional - excesso de sublimite de receita bruta':	$emitente[crt] = '2';	break;
		case '3: Regime Normal':		$emitente[crt] = '3';	break;
		default:	$emitente[crt] = '1';	break;
		
	}
	
	
	if( trim($bairro_cliente[bair_tx_nome]) == '' )
		$bairro_cliente[bair_tx_nome] = 'Centro';
	if( trim($cidade_cliente[cida_tx_ibge]) == '' ) {
		$cidade_cliente[cida_tx_ibge] = $cidade_cliente[cida_tx_ibge];
		$destinatario[nomeCidade] = $cidade_cliente[cida_tx_nome];
		$destinatario[uf] = $cidade_cliente[cida_tx_uf];
	}
	if( trim($cliente[enti_tx_endereco]) == '' )
		$cliente[enti_tx_endereco] = 'Rua não identificada';
	if( trim($cliente[enti_tx_numero]) == '' )
		$cliente[enti_tx_numero] = 'sem número';

	$destinatario[complemento] = $cliente[enti_tx_complemento];
		
	$destinatario[cnpj] = str_replace(array('.','/','-'),array('','',''),$cliente[enti_tx_cnpj]);
	$destinatario[pessoa] = $cliente[enti_tx_pessoa];
	// VERIFICA SE TEM RAZAO SOCIAL OU APENAS NOME FANTASIA
	if( trim($cliente[enti_tx_razao]) != '' )
		$destinatario[razao] = $cliente[enti_tx_razao];//AQUI TEM QUE EXIBIR A RAZÃO SOCIAL DO CLIENTE MAS ESTA VAZIO NO BANCO DE DADOS
	else
		$destinatario[razao] = $cliente[enti_tx_nome];//AQUI TEM QUE EXIBIR A RAZÃO SOCIAL DO CLIENTE MAS ESTA VAZIO NO BANCO DE DADOS
		
	$destinatario[logradouro] = $cliente[enti_tx_endereco];
	$destinatario[numero] = $cliente[enti_tx_numero];
	$destinatario[nomeBairro] = $cliente[enti_tx_bairro];
	$destinatario[codCidade] = $cidade_cliente[cida_tx_ibge];
	$destinatario[nomeCidade] =  $cidade_cliente[cida_tx_nome];
	$destinatario[uf] = $cidade_cliente[cida_tx_uf];
	$destinatario[cep] = str_replace(array('.','/','-'),array('','',''),$cliente[enti_tx_cep]);
	$destinatario[codPais] = '1058';
	$destinatario[nomePais] = 'Brasil';
	if($cliente[enti_tx_isentoICMS] == 'sim')
		$destinatario[inscEstadual] = 'ISENTO';
	else
		$destinatario[inscEstadual] = $cliente[enti_tx_estadual];
	$destinatario[email] = $cliente[enti_tx_email];
	
	if( $nota[tipoAmbiente]==2 ){		
		$destinatario[razao] = 'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL';
		// $destinatario[cnpj] = '99999999000191';
		// $destinatario[logradouro] = 'Rua';
		// $destinatario[numero] = '012';
		// $destinatario[nomeBairro] = 'Bairro';
		// $destinatario[codCidade] = '2408003';
		// $destinatario[nomeCidade] =  'Mossoro';
		// $destinatario[uf] = 'RN';
		// $destinatario[cep] = '59607600';
		// $destinatario[codPais] = '1058';
		// $destinatario[nomePais] = 'Brasil';		
	}
	
	$destinatario[indIEDest] = substr($a_nota[nota_tx_tipoContribuinte],0,1);


	// TRANSPORTE
	$transporte[modFrete] = substr($a_nota[nota_tx_modalidadeFrete],0,1);

	if( $a_nota[nota_nb_transportadora]>0 ) {

		//$transporte[cnpj] = $a_transp[enti_tx_cnpj];
		$transporte[cnpj] = str_replace(array('.','/','-'),array('','',''),$a_transp[enti_tx_cnpj]);
		$transporte[nome] = $a_transp[enti_tx_razao];
		$transporte[ie] = $a_transp[enti_tx_estadual];
		$transporte[endereco] = $a_transp[enti_tx_endereco]." ".$a_transp[enti_tx_numero];
		$transporte[municipio] = $a_transp_cida[cida_tx_nome];
		$transporte[uf] = $a_transp_cida[cida_tx_uf];
		$transporte[placa] = $a_nota[nota_tx_placaVeiculo];
		$transporte[uf_placa] = $a_nota[nota_tx_ufVeiculo];
		// $transporte[qtde_volume] = intval($VOLUME_TOTAL_TRANSP);// ESSE BLOCO DE CÓDIGO DEVE FICAR AQUI POR CAUSA DESSA VERIAVEL
		$transporte[qtde_volume] = $a_nota[nota_tx_quantidade];
		$transporte[esp_volume] = $a_nota[nota_tx_especie];
		$transporte[n_volume] = $a_nota[nota_tx_numeracao];
		$transporte[marca] = $a_nota[nota_tx_marca];
		$transporte[pesoL] = $a_nota[nota_tx_pesoLiquido];
		$transporte[pesoB] = $a_nota[nota_tx_pesoBruto];
	}

	// SE FOR UMA VENDA PARA FORA DO ESTADO PARA PESSOA FISICA
	// PRECISA DETALHAR O ICMS
	if( $nota[idDest] == 2 && $nota[indFinal] == 1 ) {

			$ICMS_COMPLETO = 1;

			// Alíquota interestadual das UF envolvidas
			//- 4% alíquota interestadual para produtos importados;
			//- 7% para os Estados de origem do Sul e Sudeste (exceto ES), destinado para os Estados do Norte, Nordeste, CentroOeste e Espírito Santo;
			//- 12% para os demais casos.
			$pICMSInter = 12;
			
			// A ALIQUOTA INTERNA DO RN
			$pICMSUFDest = 18;
			
			// Percentual provisório de partilha do ICMS Interestadual
			// 80% em 2018 e  100% a partir de 2019.			
			if( date("Y") == '2018' )
				$pICMSInterPart = 80;
			else
				$pICMSInterPart = 100;
	}



	// PASTA ONDE O XML SERÁ ARMAZENADO
	if($a_nota[nota_tx_emissao]!='' && $a_nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
		$pasta_xml0 = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2);
		$pasta_xml = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/contingencia/';
		@mkdir(LOCAL.$pasta_xml0);
		@mkdir(LOCAL.$pasta_xml);
	}else{
		@mkdir(LOCAL.date('Ym'));
		@mkdir(LOCAL.date('Ym').'/contingencia');
		$pasta_xml = date('Ym').'/contingencia/';
	}

	$fp = fopen(LOCAL.$pasta_xml.$numeroNota.'-nfe.xml','w');
	//echo "chamou!";
	// fputs($fp,'<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">');
	fputs($fp,'<NFe xmlns="http://www.portalfiscal.inf.br/nfe">');
	
	fputs($fp,'<infNFe Id="NFe'.$numeroNota.'" versao="4.00">');
		
		fputs($fp,"<ide>");
			fputs($fp,"<cUF>".trata_xml($nota[codUf])."</cUF>");
			fputs($fp,"<cNF>".trata_xml($nota[CodNumerico])."</cNF>");
			fputs($fp,"<natOp>".trata_xml($nota[naturezaOperacao])."</natOp>");
			fputs($fp,"<mod>".trata_xml($nota[modelo])."</mod>");
			fputs($fp,"<serie>".trata_xml($nota[serie])."</serie>");
			fputs($fp,"<nNF>".trata_xml($nota[numero])."</nNF>");
			fputs($fp,"<dhEmi>".trata_xml($nota[dataEmissao])."</dhEmi>");
			fputs($fp,"<dhSaiEnt>".trata_xml($nota[dataEmissao])."</dhSaiEnt>");
			// fputs($fp,"<dSaiEnt>".trata_xml($nota[data])."</dSaiEnt>");
			// fputs($fp,"<hSaiEnt>".trata_xml($nota[hora])."</hSaiEnt>");
			fputs($fp,"<tpNF>".trata_xml($nota[tipoNota])."</tpNF>");
			fputs($fp,"<idDest>".trata_xml($nota[idDest])."</idDest>"); // novo
			fputs($fp,"<cMunFG>".trata_xml($nota[cMunFG])."</cMunFG>");
			fputs($fp,"<tpImp>".trata_xml($nota[tipoImpressao])."</tpImp>");
			fputs($fp,"<tpEmis>".trata_xml($nota[tipoEmissao])."</tpEmis>");
			fputs($fp,"<cDV>".trata_xml($nota[dv])."</cDV>");
			fputs($fp,"<tpAmb>".trata_xml($nota[tipoAmbiente])."</tpAmb>");
			fputs($fp,"<finNFe>".trata_xml($nota[finalidade])."</finNFe>");
			fputs($fp,"<indFinal>".trata_xml($nota[indFinal])."</indFinal>");
			fputs($fp,"<indPres>".trata_xml($nota[indPres])."</indPres>");
			fputs($fp,"<procEmi>".trata_xml($nota[procEmissao])."</procEmi>");
			fputs($fp,"<verProc>".trata_xml($nota[verProcEmissao])."</verProc>");

			if ( $nota[finalidade]==4 ) {
				fputs($fp,"<NFref>");
					for ($i=1; $i<=5; $i++) {
						if ( $a_nota['orde_tx_chaveReferenciada'.$i]!='' ) {
							fputs($fp,"<refNFe>".trata_xml($a_nota['orde_tx_chaveReferenciada'.$i])."</refNFe>");
						}
					}
				fputs($fp,"</NFref>");
			}
			
		fputs($fp,"</ide>");
		
		fputs($fp,"<emit>");
			fputs($fp,"<CNPJ>".trata_xml($emitente[cnpj])."</CNPJ>");
			fputs($fp,"<xNome>".trata_xml($emitente[razao])."</xNome>");
			fputs($fp,"<xFant>".trata_xml($emitente[fantasia])."</xFant>");
			fputs($fp,"<enderEmit>");
				fputs($fp,"<xLgr>".trata_xml($emitente[logradour])."</xLgr>");
				fputs($fp,"<nro>".trata_xml($emitente[numero])."</nro>");
				fputs($fp,"<xCpl>".trata_xml($emitente[complemento])."</xCpl>");
				fputs($fp,"<xBairro>".trata_xml($emitente[nomeBairro])."</xBairro>");
				fputs($fp,"<cMun>".trata_xml($emitente[codCidade])."</cMun>");
				fputs($fp,"<xMun>".trata_xml($emitente[nomeCidade])."</xMun>");
				fputs($fp,"<UF>".trata_xml($emitente[uf])."</UF>");
				fputs($fp,"<CEP>".trata_xml($emitente[cep])."</CEP>");
				fputs($fp,"<cPais>".trata_xml($emitente[codPais])."</cPais>");
				fputs($fp,"<xPais>".trata_xml($emitente[nomePais])."</xPais>");
				// fputs($fp,"<fone>".trata_xml($emitente[fone])."</fone>");
			fputs($fp,"</enderEmit>");
			fputs($fp,"<IE>".trata_xml($emitente[inscEstadual])."</IE>");
			if( $emitente[inscMunicipal]!='' && $emitente[cnae]!='' ) {
				// AS TAGS IM E CNAE DEVEM SER INFORMADAS CONJUNTAMENTE, ISTO É: SE INFORMAR A TAG CNAE, A TAG IM TAMBÉM DEVE SER INFORMADA E VICE-VERSA.
				// AS TAGS IM E CNAE NÃO SÃO DE INFORMAÇÃO OBRIGATÓRIA, ASSIM OMITA AS TAGS SE O EMISSOR NÃO FOR EMITIR NOTA FISCAL CONJUGADA.
				fputs($fp,"<IM>".trata_xml($emitente[inscMunicipal])."</IM>");
				fputs($fp,"<CNAE>".trata_xml($emitente[cnae])."</CNAE>");
			}
			fputs($fp,"<CRT>".trata_xml($emitente[crt])."</CRT>");
		fputs($fp,"</emit>");
		

		fputs($fp,"<dest>");
			// VERIFICA SE É UM CPF OU CNPJ
			if ($destinatario[pessoa]=='Pessoa Física')
				fputs($fp,"<CPF>".trata_xml($destinatario[cnpj])."</CPF>");
			else
				fputs($fp,"<CNPJ>".trata_xml($destinatario[cnpj])."</CNPJ>");
			fputs($fp,"<xNome>".trata_xml($destinatario[razao])."</xNome>");
			fputs($fp,"<enderDest>");
				fputs($fp,"<xLgr>".trata_xml($destinatario[logradouro])."</xLgr>");
				fputs($fp,"<nro>".trata_xml($destinatario[numero])."</nro>");
				if ($destinatario[complemento]!='') {
					fputs($fp,"<xCpl>".trata_xml($destinatario[complemento])."</xCpl>");
				}
				fputs($fp,"<xBairro>".trata_xml($destinatario[nomeBairro])."</xBairro>");
				fputs($fp,"<cMun>".trata_xml($destinatario[codCidade])."</cMun>");
				fputs($fp,"<xMun>".trata_xml($destinatario[nomeCidade])."</xMun>");
				fputs($fp,"<UF>".trata_xml($destinatario[uf])."</UF>");
				fputs($fp,"<CEP>".trata_xml($destinatario[cep])."</CEP>");
				fputs($fp,"<cPais>".trata_xml($destinatario[codPais])."</cPais>");
				fputs($fp,"<xPais>".trata_xml($destinatario[nomePais])."</xPais>");
			fputs($fp,"</enderDest>");

			fputs($fp,"<indIEDest>".trata_xml($destinatario[indIEDest])."</indIEDest>");
			if( $destinatario[indIEDest] == 1 ) {//1: Contribuinte de ICMS
				fputs($fp,"<IE>".trata_xml($destinatario[inscEstadual])."</IE>");
			}
			
			fputs($fp,"<email>".trata_xml($destinatario[email])."</email>");
		fputs($fp,"</dest>");
		
		$sql = selecionar('orpr,ordem,produto','orde_tx_status,orpr_tx_status',"!inativo,ativo","  AND (prod_tx_servico != 'Sim' OR prod_tx_servico IS NULL) AND orpr_tx_qtde > '0' AND prod_nb_id >= 100  AND orde_nb_id = '$ordem' ");
		
		$i = 0;
		while( $a = carrega_array($sql) ){//INICIO PRODUTOS

			if( $a[prod_nb_unidade] > 0 )
				$a_un = carregar('unidade',$a[prod_nb_unidade]);
			else
				unset($a_un);

			$sql_tributacao = selecionar('tributacao,imposto','impo_tx_status,trib_tx_status','ativo,ativo'," AND trib_tx_uf='$destinatario[uf]' AND impo_tx_codigo='$a[prod_tx_ncm]' AND impo_tx_tipo = 'ncm'");
			$a_trib = carrega_array($sql_tributacao);


			$a_imposto = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_imposto]);
			$a_origem  = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cstOrigem]);
			$a_csosn   = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cstCsosn]);
			$a_modbc   = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_modbc]);
			$a_pis     = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cstPis]);
			$a_cofins  = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cstCofins]);
			$a_ipi     = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cstIpi]);
			$a_ipi2    = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_cenqIpi]);
			$a_ipiEnq  = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_ipiEnquadramento]);
			$a_ipicst  = carregar('impo_nb_id,impo_tx_codigo,impo_tx_nome|imposto',$a_trib[trib_nb_ipiCst]);

			++$ITEM_PRODUTO;
			
			if( $a[prod_nb_cst] )
				$a_cst = carregar('cst',$a[prod_nb_cst]);
			else
				$a_cst = '90';			
			
			if( trim($a_un[unid_tx_nome]) == '' )
				$a_un[unid_tx_nome] = 'Un';

			$a[prod_tx_cfop] = $a_trib[trib_tx_cfopInterno];			
			// $a[prod_tx_cest] = $a_trib[trib_tx_cest];

			//DADOS PRODUTO
			$produto[cod] = 			$a[prod_nb_id];
			$produto[ean] = 			$a[prod_tx_codbarras];
			$produto[nome] = 			$a[prod_tx_nome];
			$produto[ncm] = 			$a[prod_tx_ncm];
			$produto[qtdComercial] = 	$a[orpr_tx_qtde];

			// -------------------------------------------------
			// MODIFICA O VALOR DO PRODUTO DE ACORDO COM A PORCENTAGEM ESCOLHIDA
			// -------------------------------------------------
			$a[orpr_tx_valor] = $a[orpr_tx_valor]*($_POST[porcentagem_nota]/100);


			// PARTE DO IPI
			$produto[pIPI] = $a_trib[trib_tx_aliquotaIpi];


			$produto[valorUnComercial] =$a[orpr_tx_valor];
			
			// print_r($a_nota);exit;
			switch ($a_nota[orde_tx_tipo]) {
				case 'Devolução Venda':
					$produto[cfop] = $a_trib[trib_tx_cfopDevolucaoVenda];
					break;
				case 'Devolução Compra':
					$produto[cfop] = $a_trib[trib_tx_cfopDevolucaoCompra];
					break;
				default:
					$produto[cfop] =$a_trib[trib_tx_cfopInterno];
					break;
			}

			// if($a_nota[nota_tx_tipo] == 'Devolução Venda')
			// 	$produto[cfop] = $a_trib[trib_tx_cfopDevolucaoVenda];
			// elseif($a_nota[nota_tx_tipo] == 'Devolução Compra')
			// 	$produto[cfop] = $a_trib[trib_tx_cfopDevolucaoCompra];
			// else
			// 	$produto[cfop] =$a_trib[trib_tx_cfopInterno];

			// $produto[cest] = 			$a_trib[trib_tx_cest];
			$produto[cest] = 			$a[prod_tx_cest];
			//$produto[cfop] = 			'5929'; 	// PRA NAO PAGAR O IMPOSTO 2X QUE JAH FOI PAGO NO ECF
			$produto[unidade] = 		$a_un[unid_tx_nome];
			$produto[valor] = 			$a[orpr_tx_valor]*$a[orpr_tx_qtde];
			$produto[unTributaria] = 	$a_un[unid_tx_nome];
			if( $produto[unTributaria] == '' )
				$produto[unTributaria]='0';
				
			$produto[qtdTributaria]=	$a[orpr_tx_qtde];
			$produto[valorUnTributaria]=$a[orpr_tx_valor];
//			if( substr($produto[cfop],0,2) == '54' )
//				$produto[indTot] = 0;
//			else
				$produto[indTot] = 1;
			
			switch( $a[prod_tx_origem] ){				
				case 'Nacional': 									$produto[origem] = 0; break;
				case 'Estrangeira - Importação Direta':				$produto[origem] = 1; break;
				case 'Estrangeira - Adquirida no Mercado Interno':	$produto[origem] = 2; break;
				default:		 									$produto[origem] = 0; break;				
			}
			
			$produto[cst] = $a_cst[cst_tx_codigo];
			
			// switch($a[prod_tx_situacaoTributariaPIS]){
				
			// 	case 'Operação Tributável (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo))': $produto[CSTPIS] = 01; $break;
			// 	case 'Operação Tributável (base de cálculo = valor da operação (alíquota diferenciada))': $produto[CSTPIS] = 02; $break;
				
			// }
			
			$produto[pAliquotaPIS] = 	$a[prod_tx_pis1];
			$produto[vBCPIS] = 			$a[orpr_tx_valor]*$a[orpr_tx_qtde];
			$produto[rAliquotaPIS] = 	valor(mostra_valor($produto[vBCPIS]*($a[prod_tx_pis1]/100)));
			$produto[pAliquotaCOFINS] = $a[prod_tx_cofins1];
			$produto[vBCCOFINS] = 		$a[orpr_tx_valor]*$a[orpr_tx_qtde];
			$produto[rAliquotaCOFINS] = valor(mostra_valor($produto[vBCCOFINS]*($a[prod_tx_cofins1]/100)));
			$produto[vBC] = 			($a[orpr_tx_valor]*$a[orpr_tx_qtde])-$a[orpr_tx_desconto];
			$produto[pICMS] = 			$a_trib[trib_tx_aliquotaIcms]; //prod_tx_aliquotaICMS
			$produto[vICMS] = 			valor(mostra_valor($produto[vBC]*($produto[pICMS]/100)));
			$produto[extipi] = 			$a[prod_tx_extipi];
			//$produto[vDesc] = 			acha_desconto($a[orpr_nb_id],$ITEM_PRODUTO);

			$produto[IPIenq] = 			$a_ipiEnq[impo_tx_codigo];			
			$produto[IPIcst] = 			$a_ipicst[impo_tx_codigo];		

			$produto[PIScst] = 			$a_pis[impo_tx_codigo];
			
			// SE TIVER DESCONTO GERAL A SER DADO
			if( $a[orde_tx_desconto] > 0 ) {
				
				// SE NAO FOI DADO O DESCONTO AINDA
				if( $DESCONTO_NO_FINAL_REALIZADO != 1 ) {
				
					// SE O VALOR DO PRODUTO FOR MAIOR QUE O VALOR DO DESCONTO, ENTAO DA O DESCONTO
					if( $produto[valor] > $a[orde_tx_desconto] ) {
					
						$a[orpr_tx_desconto] += $a[orde_tx_desconto];
						$DESCONTO_NO_FINAL_REALIZADO = 1;
					}				
				}			
			}
			
			$produto[vDesc] = 			$a[orpr_tx_desconto];
			$produto[vOutro] = 			$produto[valor]*(0.1);
			
			$DESCONTO_TOTAL += $a[orpr_tx_desconto];

//			$produto[vCredICMSSN]	= 	$produto[valor]*($VALOR_IMPOSTO_SIMPLES/100);
			//echo '<br>'.$produto[pICMS].'<br>';
			//echo $produto[vICMS].'<br>';
			
			fputs($fp,'<det nItem="'.$ITEM_PRODUTO.'">');
				fputs($fp,"<prod>");
					fputs($fp,"<cProd>".trata_xml($produto[cod])."</cProd>");					
					if(trata_xml($produto[ean]) != '' && trata_xml($produto[ean] != '0'))
						fputs($fp,"<cEAN>".trata_xml($produto[ean])."</cEAN>");
					else
						fputs($fp,"<cEAN>SEM GTIN</cEAN>");
					fputs($fp,"<xProd>".trata_xml($produto[nome])."</xProd>");
					fputs($fp,"<NCM>".trata_xml($produto[ncm])."</NCM>");					
					if(trata_xml($produto[extipi]) != '' && trata_xml($produto[extipi] != '0'))
						fputs($fp,"<EXTIPI>".trata_xml($produto[extipi])."</EXTIPI>");
					if(trata_xml($produto[cest]) != '' && trata_xml($produto[cest] != '0'))
						fputs($fp,"<CEST>".trata_xml($produto[cest])."</CEST>");
					fputs($fp,"<CFOP>".trata_xml($produto[cfop])."</CFOP>");
					fputs($fp,"<uCom>".trata_xml($produto[unidade])."</uCom>");
					fputs($fp,"<qCom>".trata_xml_numero($produto[qtdComercial])."</qCom>");
					fputs($fp,"<vUnCom>".trata_xml_numero($produto[valorUnComercial])."</vUnCom>");
					fputs($fp,"<vProd>".trata_xml_numero($produto[valor])."</vProd>");					
					if(trata_xml($produto[ean]) != '' && trata_xml($produto[ean] != '0'))
						fputs($fp,"<cEANTrib>".trata_xml($produto[ean])."</cEANTrib>");
					else
						fputs($fp,"<cEANTrib>SEM GTIN</cEANTrib>");
					fputs($fp,"<uTrib>".trata_xml($produto[unTributaria])."</uTrib>");
					fputs($fp,"<qTrib>".trata_xml_numero($produto[qtdTributaria])."</qTrib>");
					fputs($fp,"<vUnTrib>".trata_xml_numero($produto[valorUnTributaria])."</vUnTrib>");
					if( $produto[vDesc]>0 )
						fputs($fp,"<vDesc>".trata_xml_numero($produto[vDesc])."</vDesc>");//PARA FUNCIONAR ESSA TAG DEVE FICAR ABAIXO DE <vUnTrib>
					fputs($fp,"<indTot>".trata_xml($produto[indTot])."</indTot>");
					// fputs($fp,"<vOutro>0.00</vOutro>");
				fputs($fp,"</prod>");
				fputs($fp,"<imposto>");
				
				if($a[prod_tx_totalTributo]>0){
					$valor_tributo = round((($produto[valor]*$a[prod_tx_totalTributo])/100),2);
					fputs($fp,"<vTotTrib>".trata_xml_numero($valor_tributo)."</vTotTrib>");
					$total_trib+=$valor_tributo;
				}
				

				// ----------------------------------------------------------------------------------------------
				// 1 EH O SIMPLES NACIONAL O RESTO EH TRIBUTACAO NORMAL
				// ----------------------------------------------------------------------------------------------
				if( $emitente[crt] == 1 ) {

					fputs($fp,"<ICMS>");

						fputs($fp,"<ICMSSN".$a_csosn[impo_tx_codigo].">");
							fputs($fp,"<orig>".$a_origem[impo_tx_codigo]."</orig>");
							fputs($fp,"<CSOSN>".$a_csosn[impo_tx_codigo]."</CSOSN>");
							if($a_csosn[impo_tx_codigo] == '101'){
								fputs($fp,"<pCredSN>0</pCredSN>");
								fputs($fp,"<vCredICMSSN>0</vCredICMSSN>");
							}

							if ( $nota[finalidade]==4 ) {
								fputs($fp,"<modBC>".trata_xml(substr($a_trib[trib_tx_modbcIcms],0,1))."</modBC>");
								fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
								fputs($fp,"<pICMS>".trata_xml_numero($produto[pICMS])."</pICMS>");
								fputs($fp,"<vICMS>".trata_xml_numero($produto[vICMS])."</vICMS>");
							}

//							fputs($fp,"<pCredSN>$VALOR_IMPOSTO_SIMPLES</pCredSN>");
//							fputs($fp,"<vCredICMSSN>".trata_xml($produto[vCredICMSSN])."</vCredICMSSN>");
						fputs($fp,"</ICMSSN".$a_csosn[impo_tx_codigo].">");					
					fputs($fp,"</ICMS>");
	
					// SE O CSON FOR 400 ENTAO SOMA NESSA VARIAVEL QUE VAI DEDUZIR DO VALOR FINNAL DA BASE DE CALCULO MAIS ABAIXO
					if( $a_csosn[impo_tx_codigo] == 400 )
						$produto[cson400] += $produto[vBC];

					
					fputs($fp,"<PIS>");
						if($a_pis[impo_tx_codigo] == '04' || $a_pis[impo_tx_codigo] == '06' || $a_pis[impo_tx_codigo] == '07' || $a_pis[impo_tx_codigo] == '08' || $a_pis[impo_tx_codigo] == '09'){
							fputs($fp,"<PISNT>");
								fputs($fp,"<CST>".$a_pis[impo_tx_codigo]."</CST>");
							fputs($fp,"</PISNT>");
						}else{
							fputs($fp,"<PISOutr>");
								fputs($fp,"<CST>".$a_pis[impo_tx_codigo]."</CST>");
								// if( $a_trib[trib_tx_aliquotaPis]>0 ) {
									fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
									fputs($fp,"<pPIS>".trata_xml_numero($a_trib[trib_tx_aliquotaPis])."</pPIS>");
									$valor_pis=round(trata_xml_numero($produto[vBC])*($a_trib[trib_tx_aliquotaPis]/100),2);
									fputs($fp,"<vPIS>".trata_xml_numero($valor_pis)."</vPIS>");
									$total_pis+=$valor_pis;
								// }
							fputs($fp,"</PISOutr>");
						}							
					fputs($fp,"</PIS>");
					
					// $valorBcCOFINS = 0;

					fputs($fp,"<COFINS>");
						if($a_cofins[impo_tx_codigo] == '04' || $a_cofins[impo_tx_codigo] == '06' || $a_cofins[impo_tx_codigo] == '07' || $a_cofins[impo_tx_codigo] == '08' || $a_cofins[impo_tx_codigo] == '09'){
							fputs($fp,"<COFINSNT>");
								fputs($fp,"<CST>".$a_cofins[impo_tx_codigo]."</CST>");
							fputs($fp,"</COFINSNT>");
						}else{
							fputs($fp,"<COFINSOutr>");
								fputs($fp,"<CST>".$a_cofins[impo_tx_codigo]."</CST>");
								// if( $a_trib[trib_tx_aliquotaCofins] > 0 ) {
									fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
									fputs($fp,"<pCOFINS>".trata_xml_numero($a_trib[trib_tx_aliquotaCofins])."</pCOFINS>");
									$valor_cofins = round(trata_xml_numero($produto[vBC])*($a_trib[trib_tx_aliquotaCofins]/100),2);
									fputs($fp,"<vCOFINS>".trata_xml_numero($valor_cofins)."</vCOFINS>");
									$total_cofins+=$valor_cofins;
								// }
							fputs($fp,"</COFINSOutr>");
						}
					fputs($fp,"</COFINS>");

				} else {
				// SE NÃO FOR SIMPLES NACIONAL

				
					fputs($fp,"<ICMS>");
						fputs($fp,"<ICMS".$a_csosn[impo_tx_codigo].">");
							fputs($fp,"<orig>".trata_xml($a_origem[impo_tx_codigo])."</orig>");
							fputs($fp,"<CST>".trata_xml($a_csosn[impo_tx_codigo])."</CST>");
							// SE O CST FOR 60 NAO ADICIONA AS TAGS ABAIXO
							if( $a_csosn[impo_tx_codigo] != '60' ) {

								fputs($fp,"<modBC>".substr($a_trib[trib_tx_modbcIcms],0,1)."</modBC>");//VERIFICAR MODO BASE DE CALCULO
								fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
								fputs($fp,"<pICMS>".trata_xml_numero($produto[pICMS])."</pICMS>");
								fputs($fp,"<vICMS>".trata_xml_numero($produto[vICMS])."</vICMS>");

							} else if ( $nota[finalidade]==4 ) {
								fputs($fp,"<modBC>".trata_xml(substr($a_trib[trib_tx_modbcIcms],0,1))."</modBC>");
								fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
								fputs($fp,"<pICMS>".trata_xml_numero($produto[pICMS])."</pICMS>");
								fputs($fp,"<vICMS>".trata_xml_numero($produto[vICMS])."</vICMS>");
							}

						fputs($fp,"</ICMS".$a_csosn[impo_tx_codigo].">");
					fputs($fp,"</ICMS>");
			
					if ( $produto[IPIenq]!='' ) {
						// CRIA O IPI APENAS SE INFORMAR O ENQUADRAMENTO
						fputs($fp,"<IPI>");
							fputs($fp,"<cEnq>".trata_xml($produto[IPIenq])."</cEnq>");
							fputs($fp,"<IPITrib>");
								fputs($fp,"<CST>".trata_xml($produto[IPIcst])."</CST>");
								fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
								fputs($fp,"<pIPI>".trata_xml_numero($produto[pIPI])."</pIPI>");
								$valor_ipi = $produto[vBC]*$produto[pIPI];
								fputs($fp,"<vIPI>".trata_xml_numero($valor_ipi)."</vIPI>");
								$total_ipi += $valor_ipi;
							fputs($fp,"</IPITrib>");
						fputs($fp,"</IPI>");
					}


					fputs($fp,"<PIS>");
						if($a_pis[impo_tx_codigo] == '04' || $a_pis[impo_tx_codigo] == '06' || $a_pis[impo_tx_codigo] == '07' || $a_pis[impo_tx_codigo] == '08' || $a_pis[impo_tx_codigo] == '09'){
							fputs($fp,"<PISNT>");
							fputs($fp,"<CST>".$a_pis[impo_tx_codigo]."</CST>");
							fputs($fp,"</PISNT>");
						}else{
							fputs($fp,"<PISOutr>");
							fputs($fp,"<CST>".$a_pis[impo_tx_codigo]."</CST>");
							fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");
							fputs($fp,"<pPIS>".trata_xml_numero($a_trib[trib_tx_aliquotaPis])."</pPIS>");
							$valor_pis=round(trata_xml_numero($produto[vBC])*($a_trib[trib_tx_aliquotaPis]/100),2);
							fputs($fp,"<vPIS>".trata_xml_numero($valor_pis)."</vPIS>");
							$total_pis+=$valor_pis;
							fputs($fp,"</PISOutr>");
						}							
					fputs($fp,"</PIS>");


					fputs($fp,"<COFINS>");
						if($a_cofins[impo_tx_codigo] == '04' || $a_cofins[impo_tx_codigo] == '06' || $a_cofins[impo_tx_codigo] == '07' || $a_cofins[impo_tx_codigo] == '08' || $a_cofins[impo_tx_codigo] == '09'){
							fputs($fp,"<COFINSNT>");
							fputs($fp,"<CST>".$a_cofins[impo_tx_codigo]."</CST>");
							fputs($fp,"</COFINSNT>");
						}else{
							fputs($fp,"<COFINSOutr>");
							fputs($fp,"<CST>".$a_cofins[impo_tx_codigo]."</CST>");
							fputs($fp,"<vBC>".trata_xml_numero($produto[vBC])."</vBC>");// NO DASERRA ESTE VALOR ESTA COMO ZERO
							fputs($fp,"<pCOFINS>".trata_xml_numero($a_trib[trib_tx_aliquotaCofins])."</pCOFINS>");
							$valor_cofins = round(trata_xml_numero($produto[vBC])*($a_trib[trib_tx_aliquotaCofins]/100),2);
							fputs($fp,"<vCOFINS>".trata_xml_numero($valor_cofins)."</vCOFINS>");
							$total_cofins+=$valor_cofins;
							fputs($fp,"</COFINSOutr>");
						}							
					fputs($fp,"</COFINS>");
				}


			if( $ICMS_COMPLETO	== 1 ) {

// total = 4298.43
// icms destino = 18%
// pICMSInter (Alíquota do ICMS Interestadual) = 7%
// 18-7 = 11%
// 11% do total = 472,8273
// 80% de 472,8273 = 378,26184
// 20% de 472,8273 = 94.56

// ------------------------------------
// EM 2019 MUDOU. EH 100 DO DESTINO E 0 NA ORIGEM
// ------------------------------------
					$dif_icmf = 11;
					//echo "$dif_icmf = $pICMSUFDest - $pICMSInterPart;<hr>";
					$ICMSUFDest = $produto[vBC] * ($dif_icmf/100);
//					echo "$ICMSUFDest = $produto[vBC] * ($dif_icmf/100);<hr>";
					$vICMSUFDest = $ICMSUFDest;
//					echo "$vICMSUFDest = $ICMSUFDest * ($pICMSUFDest/100)<hr>";
					$vICMSUFRemet = 0;
//					echo "$vICMSUFRemet = $ICMSUFDest - $vICMSUFDest;<hr>";

/*					
					$dif_icmf = $pICMSUFDest - $pICMSInter;
					echo "$dif_icmf = $pICMSUFDest - $pICMSInterPart;<hr>";
					$ICMSUFDest = $produto[vBC] * ($dif_icmf/100);
					echo "$ICMSUFDest = $produto[vBC] * ($dif_icmf/100);<hr>";
					$vICMSUFDest = $ICMSUFDest * ($pICMSUFDest/100);
					echo "$vICMSUFDest = $ICMSUFDest * ($pICMSUFDest/100)<hr>";
					$vICMSUFRemet = $ICMSUFDest - $vICMSUFDest;
					echo "$vICMSUFRemet = $ICMSUFDest - $vICMSUFDest;<hr>";
*/										
					$total_vICMSUFDest += valor(mostra_valor($vICMSUFDest));
					$total_vICMSUFRemet += valor(mostra_valor($vICMSUFRemet));
					
					$pICMSInter = valor(mostra_valor($pICMSInter));
					$pICMSUFDest = valor(mostra_valor($pICMSUFDest));
					$produto[vBC] = valor(mostra_valor($produto[vBC]));
					fputs($fp,"<ICMSUFDest>");
						fputs($fp,"<vBCUFDest>".trata_xml($produto[vBC])."</vBCUFDest>");
						fputs($fp,"<pFCPUFDest>".trata_xml("0.00")."</pFCPUFDest>");

			fputs($fp,"<pICMSUFDest>".trata_xml($pICMSUFDest)."</pICMSUFDest>");
			fputs($fp,"<pICMSInter>".trata_xml($pICMSInter)."</pICMSInter>");



						fputs($fp,"<pICMSInterPart>".trata_xml($pICMSInterPart)."</pICMSInterPart>");

			fputs($fp,"<vFCPUFDest>".trata_xml("0.00")."</vFCPUFDest>");
					fputs($fp,"<vICMSUFDest>".trata_xml_numero($vICMSUFDest)."</vICMSUFDest>");
						fputs($fp,"<vICMSUFRemet>".trata_xml_numero($vICMSUFRemet)."</vICMSUFRemet>");
					fputs($fp,"</ICMSUFDest>");
			
			}	
				
				fputs($fp,"</imposto>");
			fputs($fp,"</det>");
			
			// $produto[rAliquotaCONFIS] = $a[prod_tx_rAliquotaCONFIS];
			$produto[totalvBCICMS] += 	$produto[vBC];
			if( substr($produto[cfop],0,2) == '54' )
				$produto[total_substitui] += $produto[vBC];
			
			
			// 1 EH O SIMPLES NACIONAL O RESTO EH TRIBUTACAO NORMAL
			//if( $emitente[crt] == 1 ) 
			//	$produto[vBCST] += 			$produto[vCredICMSSN];
			//else
				$produto[vBCST] = '0.00';
			
			$produto[vST] += 			$a[prod_tx_pAliquotaICMSST];
			$produto[vProd] += 			valor(mostra_valor($a[orpr_tx_valor]*$a[orpr_tx_qtde]));
			$produto[vFrete] += 		$a[frete];//NÃO DEFINIDO
			$produto[vSeg] += 			$a[seguro];//NÃO DEFINIDO
			
			$produto[vIPI] += 		$a[VPIS];//NÃO DEFINIDO

			$produto[vPIS] += 		$produto[rAliquotaPIS];
			$produto[vCOFINS] += 	$produto[rAliquotaCOFINS];
			//produto[vOutro] += 	$a[outro];//NÃO DEFINIDO
			$produto[vTotalICMS] += $produto[vICMS];
			$nota[vDesconto] += $produto[vDesc];
			// $nota[vAcrescimo] += $produto[vOutro];
			
		}//FIM PRODUTOS
		
		$sql_taxa = selecionar('orpr,ordem','orde_tx_status,orpr_tx_status',"!inativo,taxa"," AND orde_nb_id = '$ordem' ORDER BY orpr_tx_valor ASC");
		if(num_linhas($sql_taxa)>0){
			$a_taxa=carrega_array($sql_taxa);
			++$ITEM_PRODUTO;
			$valorTaxa = round($produto[vProd] * ($a_taxa[orpr_tx_valor]/100),2);
			$produto[vProd] += $valorTaxa;

			fputs($fp,'<det nItem="'.$ITEM_PRODUTO.'">
				<prod>
					<cProd>001</cProd>
					<cEAN></cEAN>
					<xProd>TAXA</xProd>
					<NCM>00000000</NCM>
					<CFOP>5102</CFOP>
					<uCom>UN</uCom>
					<qCom>1.00</qCom>
					<vUnCom>'.$valorTaxa.'</vUnCom>
					<vProd>'.$valorTaxa.'</vProd>
					<cEANTrib/><uTrib>UN</uTrib>
					<qTrib>1.00</qTrib>
					<vUnTrib>'.$valorTaxa.'</vUnTrib>
					<indTot>1</indTot>
					<vDesc></vDesc>
					<vOutro>0.00</vOutro>
				</prod>
				<imposto>
				<ICMS><ICMSSN102>
				<orig>0</orig>
				<CSOSN>102</CSOSN>
				<pCredSN>0</pCredSN>
				<vCredICMSSN>0</vCredICMSSN>
				</ICMSSN102></ICMS>
				<PIS>
				<PISOutr>
					<CST>99</CST>
					<qBCProd>0.0000</qBCProd>
					<vAliqProd>0.0000</vAliqProd>
					<vPIS>0.00</vPIS>
				</PISOutr>
				</PIS>
				<COFINS><COFINSOutr><CST>99</CST><qBCProd>0.0000</qBCProd><vAliqProd>0.0000</vAliqProd><vCOFINS>0.00</vCOFINS></COFINSOutr></COFINS></imposto></det>');
		}
		
		$nota[totalNota] = $produto[vProd] - $nota[vDesconto];
		
		// -------------------------------------------------------------------------------------------------------------------
		// SE FOR CFOP DE SUBSTITUICAO, NAO INCIDE SOBRE BASE DE CALCULO DO ICMS
		// -------------------------------------------------------------------------------------------------------------------
		$produto[totalvBCICMS] = $produto[totalvBCICMS]-$produto[total_substitui];

		$produto[vSeguro] = '0.00';
		
		fputs($fp,"<total>");
			fputs($fp,"<ICMSTot>");
			
				if( $emitente[crt] == 1 ) 
					fputs($fp,"<vBC>0.00</vBC>");
				else
					fputs($fp,"<vBC>".trata_xml_numero($produto[totalvBCICMS])."</vBC>");
				
				
				if( $emitente[crt] == 1 ) 
					fputs($fp,"<vICMS>0.00</vICMS>");
				else
					fputs($fp,"<vICMS>".trata_xml_numero($produto[vTotalICMS])."</vICMS>");
				
				//NOVO CAMPO
				fputs($fp,"<vICMSDeson>0.00</vICMSDeson>");
				if( $ICMS_COMPLETO	== 1 ) {
					fputs($fp,"<vICMSUFDest>".trata_xml_numero($total_vICMSUFDest)."</vICMSUFDest>");
					fputs($fp,"<vICMSUFRemet>".trata_xml_numero($total_vICMSUFRemet)."</vICMSUFRemet>");
				}
				fputs($fp,"<vFCP>0.00</vFCP>");
				if ($nota[idDest]==2 && $nota[indFinal]==1) {
					//fputs($fp,"<vFCPUFDest>0.00</vFCPUFDest>");
				}
				fputs($fp,"<vBCST>".trata_xml_numero($produto[vBCST])."</vBCST>");
				fputs($fp,"<vST>".trata_xml_numero($produto[vST])."</vST>");

				fputs($fp,"<vFCPST>0.00</vFCPST>");
				fputs($fp,"<vFCPSTRet>0.00</vFCPSTRet>");
				

				fputs($fp,"<vProd>".trata_xml_numero($produto[vProd])."</vProd>");
				fputs($fp,"<vFrete>".trata_xml_numero($produto[vFrete])."</vFrete>");//NÃO DEFINIDO
				fputs($fp,"<vSeg>".trata_xml_numero($produto[vSeguro])."</vSeg>");//NÃO DEFINIDO
				fputs($fp,"<vDesc>".trata_xml_numero($nota[vDesconto])."</vDesc>");//NÃO DEFINIDO
				//fputs($fp,"<vDesc>00</vDesc>");//NÃO DEFINIDO
				fputs($fp,"<vII>0.00</vII>");
				fputs($fp,"<vIPI>".trata_xml_numero($total_ipi)."</vIPI>");
				fputs($fp,"<vIPIDevol>0.00</vIPIDevol>");
				fputs($fp,"<vPIS>".trata_xml_numero($total_pis)."</vPIS>");
				fputs($fp,"<vCOFINS>".trata_xml_numero($total_cofins)."</vCOFINS>");
				fputs($fp,"<vOutro>0.00</vOutro>");
				// fputs($fp,"<vOutro>".trata_xml($nota[vAcrescimo])."</vOutro>");
				fputs($fp,"<vNF>".trata_xml_numero($nota[totalNota])."</vNF>");
				fputs($fp,"<vTotTrib>".trata_xml_numero($total_trib)."</vTotTrib>");
			fputs($fp,"</ICMSTot>");
		fputs($fp,"</total>");
		



		fputs($fp,"<transp>");
			fputs($fp,"<modFrete>".trata_xml($transporte[modFrete])."</modFrete>");

			if( $a_nota[nota_nb_transportadora]>0 ) {

				fputs($fp,"<transporta>");
					fputs($fp,"<CNPJ>".trata_xml($transporte[cnpj])."</CNPJ>");
					fputs($fp,"<xNome>".trata_xml($transporte[nome])."</xNome>");
					fputs($fp,"<IE>".trata_xml($transporte[ie])."</IE>");
					fputs($fp,"<xEnder>".trata_xml($transporte[endereco])."</xEnder>");
					fputs($fp,"<xMun>".trata_xml($transporte[municipio])."</xMun>");
					fputs($fp,"<UF>".trata_xml($transporte[uf])."</UF>");
				fputs($fp,"</transporta>");

				if ( trim($transporte[placa])!='' || trim($transporte[uf_placa])!='' ) {
					fputs($fp,"<veicTransp>");
						fputs($fp,"<placa>".trata_xml($transporte[placa])."</placa>");
						fputs($fp,"<UF>".trata_xml($transporte[uf_placa])."</UF>");
					fputs($fp,"</veicTransp>");
				}

				fputs($fp,"<vol>");
						fputs($fp,"<qVol>".trata_xml_numero($transporte[qtde_volume],0)."</qVol>");// PASSOU A ACEITAR APENAS VALORES INTEIROS
						fputs($fp,"<esp>".trata_xml($transporte[esp_volume])."</esp>");
						fputs($fp,"<marca>".trata_xml($transporte[marca])."</marca>");
						fputs($fp,"<nVol>".trata_xml($transporte[n_volume])."</nVol>");
					if( $transporte[pesoL] > 0 ) {
						fputs($fp,"<pesoL>".trata_xml_numero($transporte[pesoL],3)."</pesoL>");
						fputs($fp,"<pesoB>".trata_xml_numero($transporte[pesoB],3)."</pesoB>");
					}
				fputs($fp,"</vol>");

			}//FIM TRANSPORTE
		fputs($fp,"</transp>");




		fputs($fp,"<pag>");
			
			// BUSCA AS FORMAS QUE SAO EM DINHEIRO (OU CARTAO, QUE VAI COMO DINHEIRO)
			$total_pago=0;
			$sql_pag = selecionar('form_nb_id,form_tx_sefaz,SUM(orpr_tx_qtde*orpr_tx_valor) as valor|orpr,ordem.forma','orpr_tx_status,orde_tx_status,orpr_nb_produto',"pagamento,!inativo,.form_nb_id"," AND orde_nb_id = '$ordem' GROUP BY form_nb_id ORDER BY orpr_nb_id DESC");
			if(num_linhas($sql_pag)>0){
				while( $a_pag = carrega_array($sql_pag) ) {

					fputs($fp,"<detPag>");
						$forma_sefaz = substr($a_pag[form_tx_sefaz],0,2);
						fputs($fp,"<tPag>".trata_xml($forma_sefaz)."</tPag>");
						fputs($fp,"<vPag>".trata_xml_numero($a_pag[valor]*-1)."</vPag>");


						if($forma_sefaz=='03' || $forma_sefaz=='04'){
							fputs($fp,"<card>");
								fputs($fp,"<tpIntegra>2</tpIntegra>");
							fputs($fp,"</card>");
						}

						$total_pago += ($a_pag[valor]*-1);
						
					fputs($fp,"</detPag>");
				}

				$troco = $total_pago - $nota[totalNota];
				if($troco > 0)
					fputs($fp,"<vTroco>".trata_xml_numero($troco)."</vTroco>");
			}else{
				fputs($fp,"<detPag>");
					fputs($fp,"<tPag>99</tPag>");// OUTRAS FORMAS DE PAGAMENTO
					fputs($fp,"<vPag>".trata_xml_numero($nota[totalNota])."</vPag>");
				fputs($fp,"</detPag>");
			}		
		fputs($fp,"</pag>");


		if( $nota[infCpl] != '' ) {
			fputs($fp,"<infAdic>");
			fputs($fp,"<infCpl>".trata_xml($nota[infCpl])."</infCpl>"); 
			fputs($fp,"</infAdic>");
		}
	
	
	
	fputs($fp,"</infNFe>");
	fputs($fp,"</NFe>");
	// fputs($fp,"</nfeProc>");
	
	fclose($fp);
	


	return @file_get_contents(LOCAL.$pasta_xml.$numeroNota.'-nfe.xml');
}




function trata_xml($string){
	$string = trim($string);
	$string = strtr($string ,"áéíóúâêôãõàèìòùç","ÁÉÍÓÚÂÊÔÃÕÀÈÌÒÙÇ");// O STRTOUPPERNÃO COMVERTE PARA MAIÚSCULO
	$string = strtoupper($string);
	$string = str_replace(array(Ç,Á,É,Í,Ó,Ú,Â,Ê,Î,Ô,Û,Ã,Õ,á,é,í,ó,ú,â,ê,î,ô,û,ã,õ),ARRAY(C,A,E,I,O,U,A,E,I,O,U,A,O,A,E,I,O,U,A,E,I,O,U,A,O),$string);
	
	$string = str_replace(array("<",">","&","\"","'","°","º","–","(",")"),ARRAY("&lt;","&rt;","&amp;","&quot;","&#39;","&#176;","&#186;","-","",""),$string);

	$string = utf8_encode($string);

	if($string == '')
		$string = 0;
	return $string;
	
}

function trata_xml_numero($num,$casas_decimais=2){
	if($num=='')
		$num = 0.00;
	return number_format($num,$casas_decimais,'.','');
}


function ver_log(){
	
	$retorno = carregar('retornonota',$_POST[id]);
	echo nl2br($retorno[reto_tx_retorno]);
	
}

function layout_log(){
	
	
	cabecalho('RELATÓRIO DE LOGS');
	cactux::abre_form();
	
	//CÓD  CLIENTE  EMPRESA  DATA  VALOR  Nº DE ITENS  SITUAÇÃO NOTA  
	
	$a = carregar('ordem,empresa,entidade',$_POST[id]);
	
	//TEXTOS
	$codVenda = cactux::texto('Cod. Venda',$a[orde_nb_id],2);
	$cliente = cactux::texto('Cliente',$a[enti_tx_nome],2);
	$empresa = cactux::texto('Empresa',$a[empr_tx_nome],2);
	
	//BOTOES
	$voltar = cactux::botao('Voltar',2,'voltar');
	$xml = cactux::botao('Baixar XML',2,'baixa_xml');
	
	cactux::abre_fieldset('FILTRO DE BUSCA');
	cactux::linha_fieldset($codVenda,$cliente,$empresa);
	cactux::fecha_fieldset();
	cactux::linha_fieldset($voltar,$xml);
	cactux::fecha_form();
	
	cactux::acao_botao('voltar','index');
	cactux::acao_botao('baixa_xml','baixar_xml','id',"$_POST[id]","",""," target=_blank");
	
	if( $_POST[nota] == '' )	
		return;
	
	$nota = carregar('nota','','nota_nb_ordem',$_POST[id]);
	
	$sql = selecionar('retornonota','reto_tx_status,reto_nb_nota',"ativo,$_POST[nota]"," $extra ORDER BY reto_nb_id DESC ");
	
	$cabecalho[] = array('COD','NOTA','CHAVE DE ACESSO','SITUAÇÃO','DATA','');
	$cabecalho[] = 'c,c,e,e';
	$cabecalho[] = '5%,5%,30%,,8%,2%';
	
	while( $a = carrega_array($sql) ){
		
		$icone = ".icone_modificar($a[0],'ver_log','','','','target=_blank','Ver LOG','cactus/imagens/imprimir.png')";
		
		$array = explode("\r\n",$a[reto_tx_retorno]);
		$array[0] = end(explode(" - ",$array[0]));
		$array[1] = end(explode(" - ",$array[1]));
		
		$valores[] = array($a[reto_nb_id],$a[reto_nb_nota],$a[reto_tx_chaveAcesso],nl2br($a[reto_tx_retorno]),data($a[reto_tx_data],3),$icone);
		
	}
	
	grid::gerar($cabecalho,$valores);
	
	rodape();
	
}

function salva_log($numero=0){
	
	//CARREGA O ARQUIVO DE LOG
	$linha = file(LOG);
	$t_linha = count($linha);
	
	if( $numero == 0 ) {
		//ACHA O NUMERO DA CHAVE DE ACESSO E O ID DA NOTA
		$a_xml = explode("\"",$linha[0]);
		$arq_xml = $a_xml[1];
		$numeroNota = str_replace('-nfe.xml','',$arq_xml);
		$numeroNota = substr($numeroNota,-44);
		
		$a_nota = carregar('nota','','nota_tx_chaveAcesso',$numeroNota);
	} else {

		$a_nota = carregar('nota','','nota_tx_numero',$numero);
		$numeroNota = $a_nota[nota_tx_chaveAcesso];
	
	}
	$idNota = $a_nota[0];
	
	//$idNota = substr($numeroNota,25,9);
	
	//GRAVA OS VALORES DO LOG NO BANCO DE DADOS
	for( $i=0; $i!=$t_linha; $i++ ){
		
		$retorno .= $linha[$i].'<br>';
		
	}
//	echo $numeroNota;
//	exit;
	$campos = array(reto_nb_nota,reto_tx_chaveAcesso,reto_tx_retorno,reto_tx_data,reto_tx_status);
	$valores= array($idNota,$numeroNota,str_replace(',',';',$retorno),date('Y-m-d H:i:s'),ativo);
	inserir('retornonota',$campos,$valores);
	
}

function salva_log_antigo(){
	
	//CARREGA O ARQUIVO DE LOG
	$linha = file(LOG);
	$t_linha = count($linha);
	
	//ACHA O NUMERO DA CHAVE DE ACESSO E O ID DA NOTA
	$a_xml = explode("\"",$linha[0]);
	$arq_xml = $a_xml[1];
	$numeroNota = str_replace('-nfe.xml','',$arq_xml);
	$numeroNota = substr($numeroNota,-44);
	
	$a_nota = carregar('nota','','nota_tx_chaveAcesso',$numeroNota);
	$idNota = $a_nota[0];
	
	//$idNota = substr($numeroNota,25,9);
	
	//GRAVA OS VALORES DO LOG NO BANCO DE DADOS
	for( $i=0; $i!=$t_linha; $i++ ){
		
		$retorno .= $linha[$i].'<br>';
		
	}
//	echo $numeroNota;
//	exit;
	$campos = array(reto_nb_nota,reto_tx_chaveAcesso,reto_tx_retorno,reto_tx_data,reto_tx_status);
	$valores= array($idNota,$numeroNota,str_replace(',',';',$retorno),date('Y-m-d H:i:s'),ativo);
	inserir('retornonota',$campos,$valores);
	
}

function retorno($funcao_volta=0){
	@unlink(LOG);
	// ------------------------------------------------------------------------------------------
	//
	// NOVA FUNCAO QUE SE COMUNICA COM O SERVIDOR CACTUS E NAO DIRETAMENTE COM A SEFAZ
	//
	// ------------------------------------------------------------------------------------------
	nfe_recebe_log();

	
	if(	$fp = @fopen(LOG,"r") ) {

		
		salva_log();
		
		$RETORNOU = 1;
		fclose($fp);
		$retorno_log = file(LOG);
		
		// NA ULTIMA VERSAO DO ACBR ELE JOGA A DATA E HORA NA FRENTE DOS COMANDOS DE LOG, ENTAO VOU LIMPAR		
		//$a_ret0 = explode(" - ",$retorno_log[0]);
		//$retorno_log[0] = $a_ret0[1];
		//$a_ret1 = explode(" - ",$retorno_log[1]);
		//$retorno_log[1] = $a_ret1[1];
//		exit;

		// RENATO EM 2018-03-01
		// POR ALGUM MOTIVO A LINHA MUDOU. PASSOU A VIR 2X A DATA E HORA E POR ISSO ESTAVA SEM PEGAR O RETORNO CORRETAMENTE
		// AGORA MUDADOS O ALGORITMO E MESMO QUE MUDE ELE SEMPRE VAI PEGAR O COMANDO CORRETO
		$retorno_log[0] = end(explode(" - ",$retorno_log[0]));
		$retorno_log[1] = end(explode(" - ",$retorno_log[1]));
		
		
// print_r($retorno_log);
		// ----------------------------------------------------------------
		// TESTE SE EH RETORNO DE ENVIO DE EMAIL
		// ----------------------------------------------------------------
		if( substr($retorno_log[0],0,15) == 'NFE.EnviarEmail' || substr($retorno_log[0],0,19) == 'OK |NFE.EnviarEmail' ) {

			
			if( substr($retorno_log[1],0,3) == 'OK:' ) {
				$MSG_STATUS = "Email Enviado com sucesso!";
			} else  {
				$MSG_STATUS = "Falha ao enviar email!";
			}
			
			$ENTROU_RETORNO = 1;
			set_status($MSG_STATUS);
		} 
		
		// ----------------------------------------------------------------
		// TESTE SE EH RETORNO DE CANCELAMENTO
		// ----------------------------------------------------------------
//echo substr($retorno_log[0],0,15)."<hr>";
		if( substr($retorno_log[0],0,15) == 'NFE.CANCELARNFE' ) {
			
//echo substr($retorno_log[1],0,3)."<hr>";			
			if( substr($retorno_log[1],0,3) == 'OK:' ) {
				$MSG_STATUS = "NFe Cancelada";
			} else  {
				$MSG_STATUS = "$retorno_log[1]";
			}

			$ENTROU_RETORNO = 1;
			
			
			$chave = substr($retorno_log[0],17,44);
			$arquivo = substr($retorno_log[17],8);
//echo $chave."<hr>".$arquivo;			
//exit;
			$nota = carregar('nota','','nota_tx_chaveAcesso',$chave,'','','','',1);
//print_r($nota);
//echo "passou!<hr>";			
			if( $nota ) {
				if( $MSG_STATUS == "NFe Cancelada" ) {
					atualizar('ordem',orde_tx_statusNota,$MSG_STATUS,$nota[nota_nb_ordem]);
					atualizar('nota',array(nota_tx_statusNota,nota_tx_arquivo),array($MSG_STATUS,$arquivo),$nota[nota_nb_id]);
//					echo "atualizar('nota',array(nota_tx_statusNota,nota_tx_arquivo),array($MSG_STATUS,$arquivo),$nota[nota_nb_id]);";
				}
			}
			set_status("$MSG_STATUS");			
			
			
			
		} 


		// ----------------------------------------------------------------
		// TESTE SE EH RETORNO DE INUTILIZACAO
		// ----------------------------------------------------------------
		if( substr($retorno_log[0],0,17) == 'NFE.INUTILIZARNFE' ) {

			if( substr($retorno_log[1],0,3) == 'OK:' ) {
				$MSG_STATUS = "NFe Inutilizada";
			} else  {
				$MSG_STATUS = "$retorno_log[1]";
			}

			$ENTROU_RETORNO = 1;
			
			
			$numero_nota = substr(end(explode('","',$retorno_log[0])),0,-4);
			$arquivo = substr($retorno_log[11],8);
//echo $numero_nota."<hr>".$arquivo."<hr>";
			salva_log($numero_nota);			
			
			$nota = carregar('nota','','nota_tx_numero',$numero_nota,'','','','',1);

			if( $nota ) {
				if( $MSG_STATUS == "NFe Inutilizada" ) {
					atualizar('ordem',orde_tx_statusNota,$MSG_STATUS,$nota[nota_nb_ordem]);
					atualizar('nota',array(nota_tx_statusNota,nota_tx_arquivo),array($MSG_STATUS,$arquivo),$nota[nota_nb_id]);
//					echo "atualizar('nota',array(nota_tx_statusNota,nota_tx_arquivo),array($MSG_STATUS,$arquivo),$nota[nota_nb_id]);";
				}
			}
			set_status("$MSG_STATUS");			
			
			
			
		} 

//echo "<hr>FIM!";
//exit;
		
		// ----------------------------------------------------------------
		// TESTE SE EH RETORNO DE ENVIO NORMAL
		// ----------------------------------------------------------------
		
		if( $ENTROU_RETORNO != 1 ) {
			
			//echo $retorno_log[0];
			// print_r($retorno_log);
			
			
			$a_xml = explode("\"",$retorno_log[0]);
			$arq_xml = $a_xml[1];
			
			$numeroNota = str_replace('-nfe.xml','',$arq_xml);
			$numeroNota = substr($numeroNota,-44);
			
			// TESTA SE DEU ALGUM ERRO NO ARQUIVO (CASO SEJA UM ERRO DE VALIDACAO)
			if( substr($retorno_log[1],0,4) == 'ERRO' ) {
				
				$MSG_STATUS = "".$retorno_log[1]."";
				
			} else {
				
				$t_log = count($retorno_log);
				for($j=$t_log; $j>0; $j--) {
					
					if( substr($retorno_log[$j],0,7) == 'XMotivo' ) {
						
						if( substr($retorno_log[$j],8,24) == 'Autorizado o uso da NF-e' ) {
							$MSG_STATUS = "NFe Autorizada";
							$NOTA_ACEITA=1;
						} else {
							$MSG_STATUS = "".substr($retorno_log[$j],8)."";
						}
						
						break;
					}
					
				} // PERCORRE O ARQUIVO DE BAIXO PARA CIMA E PROCURA UM CAMPO XMOTIVO 
				  // DE BAIXO PARA CIMA PORQUE DENTRO DO ARQUIVO DE LOG TEM OS VARIOS PASOS, ENVIAR, ASSINAR E ETC, E O QUE IMPORTA EH O ULTIMO (RETORNO)
				  // SE FOR UM ERRO EXIBE NA TELA, CASO CONTRARIO PASSA
			}
			
			
			
			
			/**************************************************************************\
			****************************************************************************
			***													     ****
			***          INICIO DA PARTE DE PROTOCOLO DE AUTORIZACAO DO XML             ****
			***    												     ****
			****************************************************************************
			\**************************************************************************/
			
			
			//---------------------------------------------------------------------------------------------------------------
			// SE A NOTA FOI ACEITA, TENTA PROTOCOLAR O XML
			//---------------------------------------------------------------------------------------------------------------
			if( $NOTA_ACEITA == 1 ) {
//echo "<hr>NOTA ACEITA";				
				
				//---------------------------------------------------------------------------------------------------------------
				// VERIFICA SE O ARQUIVO FOI DE ENVIO OU DE ATUALIZACAO, PARA CARREGAR
				// AS VARIAVES CORRETAMENTE
				//---------------------------------------------------------------------------------------------------------------
				if( substr($retorno_log[0],0,13) == 'NFE.ENVIARNFE' ) {
					
					$DigVal = trim(substr($retorno_log[31],7));
					$NProt =  trim(substr($retorno_log[30],6));
					$DhRecbto =  trim(substr($retorno_log[29],9));
					$ChNFe = trim(substr($retorno_log[28],6));
					$CStat =  trim(substr($retorno_log[25],6));
					
					$TIPO_RETORNO = 1;
					
//					echo "ENTROU ENVIO<br>";
					
				}
				if( substr($retorno_log[0],0,16) == 'NFE.CONSULTARNFE' ) {
					
					$DigVal = trim(substr($retorno_log[12],7));
					$NProt =  trim(substr($retorno_log[11],6));
					$DhRecbto =  trim(substr($retorno_log[10],9));
					$ChNFe = trim(substr($retorno_log[9],6));
					$CStat =  trim(substr($retorno_log[6],6));
					
					$TIPO_RETORNO = 1;
					
//					echo "ENTROU ATUALIZA<br>";
				}
				
				//---------------------------------------------------------------------------------------------------------------
				// RESOLVE A DATA VINDA DO RETORNO PARA O PADRAO DO XML
				//---------------------------------------------------------------------------------------------------------------
				$data = explode(" ",$DhRecbto);
				$data2 = explode("/",$data[0]);
				$nova_data = $data2[2]."-".zeros($data2[1],2)."-".zeros($data2[0],2)."T".$data[1];
				
				//---------------------------------------------------------------------------------------------------------------
				// CRIA AS NOVAS LINHAS A SEREM INSERIDAS NO XML
				//---------------------------------------------------------------------------------------------------------------
				$inicio_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nfeProc versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">";
				$fim_xml .= "<protNFe versao=\"2.00\"><infProt><tpAmb>1</tpAmb><verAplic>SVAN_4.01</verAplic>";
				$fim_xml .= "<chNFe>$ChNFe</chNFe>";
				$fim_xml .= "<dhRecbto>$nova_data</dhRecbto>";
				$fim_xml .= "<nProt>$NProt</nProt>";
				$fim_xml .= "<digVal>$DigVal</digVal>";
				$fim_xml .= "<cStat>$CStat</cStat>";
				$fim_xml .= "<xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc>";
//echo "Abrindo arquivo".LOCAL.$numeroNota."-nfe.xml";			
				// CARREGA O XML ANTIGO
				$xml_antigo = file_get_contents(LOCAL.$numeroNota."-nfe.xml");
//echo "<hr>$xml_antigo<hr>";				
				//---------------------------------------------------------------------------------------------------------------
				// TESTA SE RETORNOU ALGUM NUMERO DE PROTOCOLO OU SE DEU ERRADO
				//---------------------------------------------------------------------------------------------------------------
				if( $NProt == '' ) {
					$ERRO_PROTOCOLO=1;
//					echo "NAO RETORNOU NUMERO DE PROTOCOLO!";
				}
				
				//---------------------------------------------------------------------------------------------------------------
				// TESTA SE O RETORNO EH DE ENVIO OU ATUALIZACAO
				//---------------------------------------------------------------------------------------------------------------
				if( $TIPO_RETORNO != 1) {
					$ERRO_PROTOCOLO=1;
//					echo "NAO EH DO TIPO CORRETO DE RETORNO!";
				}
				
				// ----------------------------------------------------------------------------------------------------
				// VERIFICA SE JAH NAO FOI PROCOTOLADO
				// ----------------------------------------------------------------------------------------------------
				if( strpos($xml_antigo,"<xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc>") !== true ) {
					if( strpos($xml_antigo,"<xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc>") > 0 )
						$ERRO_PROTOCOLO=1;
//					echo "O MONITOR JAH PROTOCOLOU AUTOMATICO! -> ".strpos($xml_antigo,"<xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc>");
				}
				
				
				// ----------------------------------------------------------------------------------------------------
				// AQUI SIM FAZ O PROTOCOLO DO XML
				// ----------------------------------------------------------------------------------------------------
				if( $ERRO_PROTOCOLO != 1 ) {
					$fp = fopen(LOCAL.$numeroNota."-nfe.xml","w");
					fputs($fp,$inicio_xml.$xml_antigo.$fim_xml);
					fclose($fp);
					
					//$MSG_STATUS = "<font color=blue>NFe AUTORIZADA</font><BR>";
					
//					echo "XML PROTOCOLADO COM SUCESSO!";
				}
//					echo "PASSOU!";

			}
			
			
			$nota = carregar('nota','','nota_tx_chaveAcesso',$numeroNota);
//print_r($nota);			
//echo $MSG_STATUS;
			if( $nota ) {
				
				// SE A MSG ESTIVER EM BRANCO ENTAO NAO ATUALIZA
				if( trim($MSG_STATUS) != '' ) {
				
					// SE A NOTA JÁ FOI AUTORIZADA, ENTÃO NÃO PERMITE ATUALIZAR NADA POR CIMA, NENHUM ERRO
					if( $nota[nota_tx_statusNota] != 'NFe Autorizada' ) {
				
						atualizar('ordem',orde_tx_statusNota,$MSG_STATUS,$nota[nota_nb_ordem]);
						atualizar('nota',nota_tx_statusNota,$MSG_STATUS,$nota[nota_nb_id]);
					}
					
				}
				
			}
			set_status("$MSG_STATUS");
			
			// -----------------------------------------------------------------------------
			// SE NAO FOI UMA CHAMADA AUTOMATICA VINDA DO PDV SEGUE O FLUXO NORMAL
			// -----------------------------------------------------------------------------
			if( $_POST[envio_automatico] != 1 ) {
			
					if( $funcao_volta != 1 ) {
						index();
						exit;
					} else
						return;
					
			} else {
			// print_r($_POST);
//$MSG_STATUS = 'ERRO:!';
// echo "!$MSG_STATUS!";

					// SE TIVER VINDO DO PDV ENTAO APENAS EXIBE NA TELA	
					//javascript("window.parent.document.getElementById('div_msg_autorizando').innerHTML = '$MSG_STATUS';");

					javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = '$MSG_STATUS';");
					

					if( $_GET[tipo_auto] == 'cancelar' ) {
						
						javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Sem retorno. Aguarde alguns instantes e tente novamente';");
						exit;
					}
					
					// SE NAO TIVER RETORNO, ESPERA 5 SEGUNDOS E TENTA NOVAMENTE
					if( $MSG_STATUS == '' ) {
						

						
						 javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'NFCe Enviada. Aguardando Autorização...<br><img src=../cactus/imagens/carregando.gif width=100px></div></center>';");
						 // javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar').submit()},2500)");
						 javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_imprimir').submit()},1000)");		
						
					} else {

					javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = '$MSG_STATUS';");
						
						// SE TIVER
						if( $MSG_STATUS == 'NFe Autorizada' ) {
						
//							javascript("window.parent.document.getElementById('div_msg_imprimindo').innerHTML = 'Imprimindo...';");
							javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'NFCe Autorizada! Aguardando Impressão...';");
//							$link = "../emissao_nfce.php?acao_auto=imprimir&id_ordem_auto=$_POST[id]";
//							javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
							javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_imprimir').submit()},1000)");	
	
						} else {

							if( trim($MSG_STATUS) == 'ERRO:' ) {
						
								javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Erro no retorno. Enviando NFCe novamente...';");
								javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_enviar').submit()},2000)");	

//								$link = "../emissao_nfce.php?acao_auto=enviar&id_ordem_auto=$_POST[id]";
//								javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
						
							} else {
	//							javascript("window.parent.document.getElementById('div_msg_imprimindo').innerHTML = 'Imprimindo em CONTIGÊNCIA...';");
								javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Imprimindo em CONTIGÊNCIA...';");
//								$link = "../emissao_nfce.php?acao_auto=imprimir&id_ordem_auto=$_POST[id]";
//								javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
								javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_imprimir').submit()},1000)");	

							}						
						}
						
					}

					exit;
			}
			
		}
		
	} else {
		
//		$MSG_STATUS = "<B><font color=red>SEM RETORNO</b></font>";
//		set_status("$MSG_STATUS");
		
	}

//$MSG_STATUS = 'ERRO:!';

			// -----------------------------------------------------------------------------
			// SE NAO FOI UMA CHAMADA AUTOMATICA VINDA DO PDV SEGUE O FLUXO NORMAL
			// -----------------------------------------------------------------------------
			if( $_POST[envio_automatico] != 1 ) {
			
					if( $funcao_volta != 1 ) {
						index();
						exit;
					} else
						return;
					
			} else {
			
//$MSG_STATUS = 'ERRO:!';


					// SE TIVER VINDO DO PDV ENTAO APENAS EXIBE NA TELA	
					//javascript("window.parent.document.getElementById('div_msg_autorizando').innerHTML = '$MSG_STATUS';");


					if( $_GET[tipo_auto] == 'cancelar' ) {

						
						if( $MSG_STATUS == '' ) {

							javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Sem retorno. Aguarde alguns instantes e tente novamente';");
							
						} else {

							javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = '".trim($MSG_STATUS)."';");
							
							if( trim($MSG_STATUS) == 'NFe Cancelada' ) {
								javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar').submit()},2000)");	
							}
						}
						exit;
					}

					
					// SE NAO TIVER RETORNO, ESPERA 5 SEGUNDOS E TENTA NOVAMENTE
					if( $MSG_STATUS == '' ) {
					
						//javascript("window.parent.document.getElementById('div_msg_autorizando').innerHTML = 'Autorizando......';");
						javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'NFCe Enviada. Aguardando Autorização...<br><img src=../cactus/imagens/carregando.gif width=100px></div></center>';");
						javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar').submit()},2500)");	
						
					} else {

					javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = '$MSG_STATUS';");
						
						// SE TIVER
						if( $MSG_STATUS == 'NFe Autorizada' ) {
						
//							javascript("window.parent.document.getElementById('div_msg_imprimindo').innerHTML = 'Imprimindo...';");
							javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'NFCe Autorizada! Aguardando Impressão...';");
//							$link = "../emissao_nfce.php?acao_auto=imprimir&id_ordem_auto=$_POST[id]";
//							javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
							javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_imprimir').submit()},1000)");	
	
						} else {
						
							if( trim($MSG_STATUS) == 'ERRO:' ) {
						
								javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Enviando novamente';");
								javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_enviar').submit()},2000)");	
						
							} else {
	//							javascript("window.parent.document.getElementById('div_msg_imprimindo').innerHTML = 'Imprimindo em CONTIGÊNCIA...';");
								javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Imprimindo em CONTIGÊNCIA...';");
//								$link = "../emissao_nfce.php?acao_auto=imprimir&id_ordem_auto=$_POST[id]";
//								javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
								javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar_imprimir').submit()},1000)");	

							}						
						
						}
						
					}

					exit;
			}	
}





function verifica_nota(){
	global $CONFIGURA;

	$a_ordem = carregar('orde_tx_status|ordem',$_POST[id]);

	$cnpj = preg_replace("/[^0-9]/", "", $a_ordem[empr_tx_cnpj]);
	
	// MODELO 55 É NFe
	// MODELO 65 É NFCe
	
	// TIPO IMPRESSAO 1 É RETRATO
	// TIPO IMPRESSAO 2 É PAISAGEM
	// TIPO IMPRESSAO 4 É QRCODE
	$tipo_nota = 55;
	$tipo_impressao = 1;

	// OBTEM O NÚMERO QUE EXISTE NO INÍCIO
	$entrada_saida = substr($_POST[tipo_documento],0,1);


	$sql = selecionar('nota','nota_tx_status,nota_nb_ordem',"ativo,$_POST[id]");
	if( num_linhas($sql) == 0 ){

		$sql2 = selecionar('nota','nota_tx_modelo,nota_tx_status,nota_tx_chaveAcesso',"$tipo_nota,ativo,@$cnpj","ORDER BY nota_tx_numero+1 DESC LIMIT 1");
		$a2 = carrega_array($sql2);
		$numNota = intval($a2[nota_tx_numero])+1;
		
		$campos = array(nota_nb_ordem,nota_tx_modelo,nota_tx_serie,nota_tx_numero,nota_tx_emissao,nota_tx_tipo,
		nota_tx_formaEmissao,nota_tx_finalidadeEmissao,nota_tx_tipoImpressao,nota_tx_naturezaOperacao,nota_tx_valor,
		nota_tx_tipoDocumento,nota_tx_tipoContribuinte,nota_tx_consumidorFinal,nota_tx_destinoOperacao,nota_tx_tipoAtendimento,
		nota_tx_modalidadeFrete,nota_nb_transportadora,nota_tx_placaVeiculo,nota_tx_ufVeiculo,
		nota_tx_quantidade,nota_tx_especie,nota_tx_marca,nota_tx_numeracao,nota_tx_pesoLiquido,nota_tx_pesoBruto,
		nota_tx_informacoesFisco,nota_tx_informacoesContribuinte,nota_tx_icms,nota_tx_icmsst,nota_tx_status);
		
		if($CONFIGURA[SERIE]=='')
			$CONFIGURA[SERIE]=1;
		$valores= array($_POST[id],$tipo_nota,$CONFIGURA[SERIE],$numNota,date('Y-m-d H:i:s'),$entrada_saida,
		'1',$_POST[finalidade_emissao],$tipo_impressao,$_POST[natureza_operacao],$valor,
		$_POST[tipo_documento],$_POST[tipo_contribuinte],$_POST[consumidor_final],$_POST[destino_operacao],$_POST[tipo_atendimento],
		$_POST[modalidade_frete],$_POST[transportadora],$_POST[placa_veiculo],$_POST[uf_veiculo],
		valor($_POST[quantidade]),$_POST[especie],$_POST[marca],$_POST[numeracao],valor($_POST[peso_liquido]),valor($_POST[peso_bruto]),
		$_POST[informacoes_interece_fisco],$_POST[informacoes_interece_contribuinte],$icms,$icmsst,'ativo');
		
		inserir('nota',$campos,$valores,1);
		
		// $chave = gera_numeroNota();
		
	} else {
		
		//------------------------------------------------------------------------------------------
		// SE JAH OUVER UM ARQUIVO XML, ENTAO MOVE ELE PAR AUMA PASTA DE BACKUP
		//------------------------------------------------------------------------------------------
		$a_nota = carrega_array($sql);

		$campos = array(nota_tx_tipo,nota_tx_finalidadeEmissao,nota_tx_naturezaOperacao,nota_tx_tipoDocumento,nota_tx_emissao,
						nota_tx_tipoImpressao,nota_tx_tipoContribuinte,nota_tx_consumidorFinal,nota_tx_destinoOperacao,nota_tx_tipoAtendimento,
						nota_tx_modalidadeFrete,nota_nb_transportadora,nota_tx_placaVeiculo,nota_tx_ufVeiculo,
						nota_tx_quantidade,nota_tx_especie,nota_tx_marca,nota_tx_numeracao,nota_tx_pesoLiquido,nota_tx_pesoBruto,
						nota_tx_informacoesFisco,nota_tx_informacoesContribuinte);

		$valores= array($entrada_saida,$_POST[finalidade_emissao],$_POST[natureza_operacao],$_POST[tipo_documento],date('Y-m-d H:i:s'),
						$tipo_impressao,$_POST[tipo_contribuinte],$_POST[consumidor_final],$_POST[destino_operacao],$_POST[tipo_atendimento],
						$_POST[modalidade_frete],$_POST[transportadora],$_POST[placa_veiculo],$_POST[uf_veiculo],
						valor($_POST[quantidade]),$_POST[especie],$_POST[marca],$_POST[numeracao],valor($_POST[peso_liquido]),valor($_POST[peso_bruto]),
						$_POST[informacoes_interece_fisco],$_POST[informacoes_interece_contribuinte]);

		atualizar('nota',$campos,$valores,$a_nota[nota_nb_id]);



		// PASTA ONDE O XML SERÁ ARMAZENADO
		if($a_nota[nota_tx_emissao]!='' && $a_nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
			$pasta_xml0 = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2);
			$pasta_xml = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/contingencia/';
			@mkdir(LOCAL.$pasta_xml0);
			@mkdir(LOCAL.$pasta_xml);
		}else{
			@mkdir(LOCAL.date('Ym'));
			@mkdir(LOCAL.date('Ym').'/contingencia');
			$pasta_xml = date('Ym').'/contingencia/';
		}

		// TENTA LOCALIZAR O ARQUIVO
		$arquivo_xml = LOCAL.$pasta_xml.$a_nota[nota_tx_chaveAcesso].'-nfe.xml';
		if (!file_exists($arquivo_xml))
			$arquivo_xml = LOCAL.$a_nota[nota_tx_chaveAcesso]."-nfe.xml";
		// SE LOCALIZAR O ARQUIVO, FAZ O BACKUP
		if (file_exists($arquivo_xml)) {
			// PRECISA CONFIRMAR POIS CRIO QUE ELE DEVE ESTAR SALVANDO EM OUTRA PASTA
			$destino = LOCAL."antigos".DIRECTORY_SEPARATOR.$a_nota[nota_tx_chaveAcesso]."-nfe.xml";
			@rename($arquivo_xml,$destino);
		}		
	}	
}





function imprime_ordem(){


	cabecalho_css();
	
	$a = carregar('ordem,user',$_POST[id]);
	$id_ordem = $a[0];



	$cabeca[] = array('ITEM','CÓDIGO','NCM','DESCRIÇÃO','QTDE','VALOR UNIT','VALOR TOTAL');
	$cabeca[] = 'c,c,c,e,c,d,d';
	$cabeca[] = '5%,10%,10%,,10%,15%,15%';
	$cabeca[] = '100%';


	if ( $id_ordem=='' || $_POST[id]=='' )
		$id_ordem = 0;

	
	if( $_POST[id] != '' ) {

		echo "<table border=0 width=100% class=rel>";
		echo "<tr><td align=left><b>COMANDA: $a[orde_tx_comanda]</b></td><td align=right><b>ABERTURA: ".data($a[orde_tx_dataCadastro],3)."</b></td></tr>";
		echo "</table>";
		
		
		$item = 0;
		$linhas = 0;

		// LISTAGEM DOS PRODUTOS
		$sql = selecionar('sum(orpr_tx_qtde) as qtde,produto.*,orpr.*,orde_tx_comanda,orpr_nb_atendente|orpr,produto,ordem','orpr_tx_status,orde_nb_id',"ativo,$_POST[id]"," GROUP BY prod_nb_id ORDER BY orpr_nb_id ASC");
		while( $a = carrega_array($sql) ) {
			
			// NAO EXIBE SE A QUANTIDADE FOR 0 ( NO CASO DE TER LANCADO UM PRODUTO E DEPOIS CANCELADO)
			if( $a[qtde] == 0 )	
				continue;

			if(strlen($a[prod_tx_ncm]) < 8)
				$cor_ncm = 'red';
			else
				$cor_ncm = 'black';

			$valores[] = array( ++$item, $a[prod_tx_codbarras],'<font color='.$cor_ncm.'>'.$a[prod_tx_ncm].'</font>', $a[prod_tx_nome], mostra_valor($a[qtde]), mostra_valor($a[orpr_tx_valor]), mostra_valor($a[qtde]*$a[orpr_tx_valor]) );
			$total += $a[qtde]*$a[orpr_tx_valor];		
			
			$linhas++;

			
		}

		$sql_aten = selecionar('orpr_nb_atendente|orpr,produto,ordem','orpr_tx_status,orde_nb_id',"ativo,$_POST[id]"," ORDER BY orpr_nb_id DESC LIMIT 1");
		$a_ate=carrega_array($sql_aten);
		$id_atendente = $a_ate[0];


		$valores[] = array('','','','','','<b>SUB TOTAL:',mostra_valor($total));
		$linhas++;


		// LISTAGEM DA TAXA DE SERVIÇO
		$sql = selecionar('orpr_nb_id,orpr_tx_valor,orde_tx_comanda,orpr_nb_ordem|orpr,ordem','orpr_tx_status,orde_nb_id',"taxa,$_POST[id]","  GROUP BY orpr_nb_id ORDER BY orpr_nb_id DESC");
		while( $a = carrega_array($sql) ) {

			// OBTEM O VALOR A SER PAGO PELA COMISSÃO
			$v_comissao = $total*$a[orpr_tx_valor]/100;
				

			$valores[] = array( ++$item,'', '', "SUGESTÃO DE GORJETA ", mostra_valor(1), mostra_valor($v_comissao), mostra_valor($v_comissao) );

			// ADICIONA O VALOR DA COMISSÃO NA TOTAL A SER PAGO
			$total += $v_comissao;
			$linhas++;

			
		}

		$valores[] = array('','','','','','<b>TOTAL:',mostra_valor($total,1));

		// LISTAGEM DOS PAGAMENTOS
		$sql = selecionar('prod_tx_codbarras,prod_tx_nome,orpr_tx_valor,SUM(orpr_tx_qtde) as qtde,SUM(orpr_tx_qtde*orpr_tx_valor*(-1)) as valor|orpr,produto,ordem','orpr_tx_status',"pagamento"," AND orde_nb_id IN ($id_ordem) GROUP BY prod_nb_id ORDER BY orpr_nb_id DESC");
		while( $a = carrega_array($sql) ) {
			
			//echo "$a[prod_tx_nome]<br>QTDE: $a[orpr_tx_qtde] VALOR: $a[orpr_tx_valor]<br>";
			$valores[] = array('',$a[prod_tx_codbarras],'','&nbsp;','&nbsp;','<font color=green>'.$a[prod_tx_nome],'<font color=green>'.mostra_valor($a[valor]));
			// $total += $a[valor];
			$linhas++;
		}

		// $valores[] = array("<a href='javascript:onClick=faz_transferencia()' style='text-decoration:none; color:black;'><img src='../cactus/imagens/atualizar.png' border=0 width=20px></a>",'','','','<b>TOTAL:',mostra_valor($total));
		
		$linhas++;


	}




	echo"<form name=tabela_check>";
		grid::gerar($cabeca,$valores);
	echo"</form>";
}


function imprime_danfe(){
global $CACTUX_CONF,$CONFIGURA;

		// ENDERECO DO SERVIDOR DE NFe CACTUS
		$target_url = SERVIDOR_CACTUS.'imprimir.php';
		$data = array('cliente' => NFE_CLIENTE,'numero_nota' => $_POST[numero_nota]);
//echo $target_url;
		$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);
 
		$ch = curl_init();
		curl_setopt_array($ch, $options);
		$ret_curl = curl_exec($ch);
		curl_close($ch);
		
//		echo "%$ret_curl%";
//exit;
		if( substr($ret_curl,0,2) != 'OK'  ) {
			echo "$ret_curl";
			exit;
		}

		if( substr($ret_curl,0,2) == 'OK'  ) {
				//set_status("DANFE Impresso com sucesso!");
				$danfe = substr($ret_curl,4,-5);
				//echo "<hr>".SERVIDOR_CACTUS.NFE_CLIENTE."/".$danfe."<hr>";
				javascript("window.parent.document.getElementById('botao_finalizar1').style.display = 'none';");
				javascript("window.parent.document.getElementById('botao_finalizar2').style.display = 'block';");
//				chamar_pag(SERVIDOR_CACTUS.NFE_CLIENTE."/".$danfe,'','','');
				
				// FAZ O DOWNLOAD DO PDF PARA A PASTA IMPRESSAO
				$ch = curl_init();
				$source = SERVIDOR_CACTUS.NFE_CLIENTE."/".$danfe;
				curl_setopt($ch, CURLOPT_URL, $source);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				$data = curl_exec ($ch);
				curl_close ($ch);
				
				// AQUI CHAMA A FUNCOA QUE TIRA O NOME DO ACBR
				
				$destination = $_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']."impressao/pdf.pdf";
				$file = fopen($destination, "w+");
				fputs($file, $data);
				fclose($file);
			
				

				
		
				if($CONFIGURA[MODO_IMPRESSAO]=='POPUP'){
					$link = "pdv/pdv_imprime_pdf.php?".cactux_cookie::url_sistema()."&path=$CACTUX_CONF[path]impressao/pdf.pdf";	
					// $link = "$CACTUX_CONF[path]impressao/pdf.pdf";	
					
					$javascript = "<script>window.open('$link')</script>";
					echo $javascript;
					
					index();
					exit;
				}else{
					
					$arquivo_pdf = $_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']."impressao/pdf.pdf";
					bat_imprime($arquivo_pdf);
					javascript("window.parent.document.form_finalizar.submit();");

				}

		}
	exit;


}

function imprime_danfe_contigencia(){
global $CACTUX_CONF;
montar_impressao_contigencia($_POST[id]);

define(PASTA_LOCAL,$_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']);
$arquivo_pdf = PASTA_LOCAL.'impressao/conteudo_imprimir.pdf';
// bat_imprime($arquivo_pdf);

javascript("window.parent.document.form_finalizar.submit();");

exit;
		

		// ENDERECO DO SERVIDOR DE NFe CACTUS
		$target_url = SERVIDOR_CACTUS.'imprimir.php';
		$data = array('cliente' => NFE_CLIENTE,'numero_nota' => $_POST[numero_nota]);

		$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);
 
		$ch = curl_init();
		curl_setopt_array($ch, $options);
		$ret_curl = curl_exec($ch);
		curl_close($ch);
		

		if( substr($ret_curl,0,2) != 'OK'  ) {
			echo "$ret_curl";
			exit;
		}

		if( substr($ret_curl,0,2) == 'OK'  ) {
				
				$danfe = substr($ret_curl,4,-5);
				
				javascript("window.parent.document.getElementById('botao_finalizar1').style.display = 'none';");
				javascript("window.parent.document.getElementById('botao_finalizar2').style.display = 'block';");
				
				// FAZ O DOWNLOAD DO PDF PARA A PASTA IMPRESSAO
				$ch = curl_init();
				$source = SERVIDOR_CACTUS.NFE_CLIENTE."/".$danfe;
				curl_setopt($ch, CURLOPT_URL, $source);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				$data = curl_exec ($ch);
				curl_close ($ch);
				
				// AQUI CHAMA A FUNCOA QUE TIRA O NOME DO ACBR
				
				$destination = $_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']."impressao/pdf.pdf";
				$file = fopen($destination, "w+");
				fputs($file, $data);
				fclose($file);
				
				$arquivo_pdf = $_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']."impressao/pdf.pdf";
				bat_imprime($arquivo_pdf);
				$link = "pdv/pdv_imprime_pdf.php?".cactux_cookie::url_sistema()."&path=$_SERVER[DOCUMENT_ROOT]$CACTUX_CONF[path]impressao/pdf.pdf";	



		}
	exit;

}





function layout_enviar_nota_xml() {
	
	cabecalho('Enviar Nota');

	?><script src="jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript" src="jquery.blockUI.js"></script><?

	cactux::abre_form();
	
	//CÓD  CLIENTE  EMPRESA  DATA  VALOR  Nº DE ITENS  SITUAÇÃO NOTA  
	
	$a = carregar('ordem,empresa,entidade',$_POST[id]);

	?><script src="<?=$CONFIGURA[MODULO]?>codemirror/codemirror.js"></script>
	<link rel="stylesheet" href="<?=$CONFIGURA[MODULO]?>codemirror/codemirror.css">
	<script src="<?=$CONFIGURA[MODULO]?>codemirror/xml.js"></script>
	<style type="text/css">
		.CodeMirror {
			/*font-family: Arial, monospace;*/
			font-size: 14px;
			height: auto;/*DEIXA DO TAMANHO DA TELA*/
		}
	</style><?
	
	

	$a[orde_tx_xml] = $_POST[xml_fiscal];


	// REALI9ZA A IDENTAÇÃO DO XML
	$dom = new DOMDocument;
	$dom->preserveWhiteSpace = FALSE;
	$dom->loadXML($a[orde_tx_xml]);
	$dom->formatOutput = TRUE;
	$a[orde_tx_xml] = $dom->saveXml();


	//TEXTOS
	$codVenda = cactux::texto('Cod. Venda:',$a[orde_nb_id],2);
	$cliente = cactux::texto('Cliente:',$a[enti_tx_nome],3);
	$empresa = cactux::texto('Empresa:',$a[empr_tx_nome],3);

	$campo_xml = cactux::textarea('XML da nota fiscal:','xml_fiscal',$a[orde_tx_xml],10,30," id=xml_fiscal ");

	//BOTOES
	$voltar = cactux::botao('Voltar',2,'voltar');
	$enviar = cactux::botao_submit('Enviar',2,'enviar_nota','editar,porcentagem_nota,id,medicao_produto',"sim,$_POST[porcentagem_nota],$_POST[id],".base64_encode($_POST[medicao_produto]));
	
	cactux::abre_fieldset('Enviar Nota');
	cactux::linha_fieldset($codVenda,$cliente,$empresa);
	cactux::linha_fieldset($voltar,$enviar);
	cactux::linha_fieldset($campo_xml);
	cactux::fecha_fieldset();

	// CRIA ESSES CAMPOS PARA MANTER O POST
	campo_hidden('finalidade_emissao',$_POST[finalidade_emissao]);
	campo_hidden('natureza_operacao',$_POST[natureza_operacao]);
	campo_hidden('tipo_documento',$_POST[tipo_documento]);
	campo_hidden('tipo_contribuinte',$_POST[tipo_contribuinte]);
	campo_hidden('consumidor_final',$_POST[consumidor_final]);
	campo_hidden('destino_operacao',$_POST[destino_operacao]);
	campo_hidden('tipo_atendimento',$_POST[tipo_atendimento]);
	campo_hidden('modalidade_frete',$_POST[modalidade_frete]);
	campo_hidden('transportadora',$_POST[transportadora]);
	campo_hidden('placa_veiculo',$_POST[placa_veiculo]);
	campo_hidden('uf_veiculo',$_POST[uf_veiculo]);
	campo_hidden('quantidade',$_POST[quantidade]);
	campo_hidden('especie',$_POST[especie]);
	campo_hidden('marca',$_POST[marca]);
	campo_hidden('numeracao',$_POST[numeracao]);
	campo_hidden('peso_liquido',$_POST[peso_liquido]);
	campo_hidden('peso_bruto',$_POST[peso_bruto]);
	campo_hidden('informacoes_interece_fisco',$_POST[informacoes_interece_fisco]);
	campo_hidden('informacoes_interece_contribuinte',$_POST[informacoes_interece_contribuinte]);

	cactux::fecha_form();
	
	cactux::acao_botao('voltar','layout_enviar_nota','porcentagem_nota,id',"$_POST[porcentagem_nota],$_POST[id]");
	
	javascript("
		window.document.cadastro.onsubmit = function(){
			$.blockUI({ message: \"<h1>Processando...</h1>\" });
		};
	");

	// PARA O FUNCIONANDO DO EDITOR
	javascript('
		var editor = CodeMirror.fromTextArea(document.getElementById("xml_fiscal"), {
        mode: "text/html",
        lineNumbers: true,
      });
	');

	rodape();
	exit;
}




function gravar_nota() {
	$_POST[xml_fiscal] = gera_xml();
	
	if ( $_POST[editar]=='sim' )
		layout_enviar_nota_xml();
	else
		enviar_nota();
	exit;
}




function layout_enviar_nota() {
	global $CONFIGURA;


	cabecalho('Enviar Nota');

	?><script src="jquery.min.js" type="text/javascript"></script>
	<script type="text/javascript" src="jquery.blockUI.js"></script><?

	// CARREGA AS INFORMAÇÕES CADASTRADAS	
	$a_ordem = carregar('ordem,empresa,entidade',$_POST[id]);
	$a_nota = @carregar('nota','','nota_nb_ordem',$_POST[id]);

	$a_cida_cliente = @carregar("cidade",$a_ordem[enti_nb_cidade]);
	$a_cida_emitente = @carregar("cidade",$a_ordem[empr_nb_cidade]);
	if ($a_nota[nota_nb_transportadora]>0)
		$a_transportadora = @carregar("entidade",$a_nota[nota_nb_transportadora]);




	if ( $a_nota[nota_nb_id]>0 && $a_nota[nota_tx_tipoContribuinte]!='' && $a_nota[nota_tx_destinoOperacao]!='' ) {
	// CARREGA O QUE JÁ FOI SELECIONADO ANTERIORMENTE

		$mod_tipo_documento = $a_nota[nota_tx_tipoDocumento];
		$mod_finalidade_emissao = $a_nota[nota_tx_finalidadeEmissao];
		$mod_tipo_contribuinte = $a_nota[nota_tx_tipoContribuinte];
		$mod_consumidor_final = $a_nota[nota_tx_consumidorFinal];
		$mod_destino_operacao = $a_nota[nota_tx_destinoOperacao];
		$mod_tipo_atendimento = $a_nota[nota_tx_tipoAtendimento];
		$mod_natureza_operacao = $a_nota[nota_tx_naturezaOperacao];

	} else {
	// SE NÃO TIVER REGISTRO NA TABELA NOTA, IDENTIFICA AS OPÇÕES PADRÕES



		if( $a_ordem[orde_tx_tipo] == 'Devolução Venda' ) {
			$mod_natureza_operacao = "Devolução de Mercadoria";
			$mod_tipo_documento = '0 - Entrada';
			$mod_finalidade_emissao = '4 - Devolução de Mercadoria';
			
		} else {
			if ( $a_ordem[orde_tx_tipo]=='Devolução Compra' )
				$mod_natureza_operacao = "Devolução de Mercadoria";
			else if( $a_ordem[orde_tx_tipo] == 'Movimentação' )
				$mod_natureza_operacao = "Retorno/remessa de Mercadoria";
			else
				$mod_natureza_operacao = "Venda de Mercadoria";

			$mod_tipo_documento = '1 - Saída';

			if ( $a_ordem[orde_tx_tipo] == 'Devolução Compra' )
				$mod_finalidade_emissao = '4 - Devolução de Mercadoria';
			else
				$mod_finalidade_emissao = '1 - Nf-e Normal';
		}

		// SE FOR INTERESTADUAL
		if( $a_cida_cliente[cida_tx_codUf]!=$a_cida_emitente[cida_tx_codUf] AND $a_cida_cliente[cida_tx_codUf]!='' AND $a_cida_emitente[cida_tx_codUf]!='' )
			$mod_natureza_operacao = "Venda de Mercadoria";


		// PEGA APENAS OS NUMEROS
		$mod_tipo_contribuinte = $a_ordem[enti_tx_tipoContribuinte];

		if ( $mod_tipo_contribuinte=='9 - Não Contribuinte' )
			$mod_consumidor_final = '1 - Sim';
		else
			$mod_consumidor_final = '0 - Não';


		// FAZ O TRATAMENTO DAS OPÇÕES A SEREM SELECIONADAS	
		if( $a_cida_cliente[cida_tx_codUf] == $a_cida_emitente[cida_tx_codUf] ) 
			$mod_destino_operacao = '1 - Operação Interna';
		else
			$mod_destino_operacao = '2 - Operação Interestadual';

		// DEIXA SENDO O PADRÃO
		$mod_tipo_atendimento = '0 - Não se Aplica';

		// O VALOR MÍNIMO DEVE SER 1
		if ($a_nota[nota_tx_quantidade]==0)
			$a_nota[nota_tx_quantidade]=1;


		if ( trim($a_nota[nota_tx_informacoesContribuinte])=='' && $mod_finalidade_emissao=='4 - Devolução de Mercadoria' ) {
			for ($i=1; $i<=5; $i++) {
				if ( $a_ordem['orde_tx_chaveReferenciada'.$i]!='' ) {
					$a_nota[nota_tx_informacoesContribuinte] .= "NOTA REFERENCIADA: ".$a_ordem['orde_tx_chaveReferenciada'.$i]." - NUMERO: ".$a_ordem['orde_tx_numeroReferenciada'.$i]." - DATA: ".data($a_ordem['orde_tx_dataReferenciada'.$i],1)." - ";
				}
			}
			$a_nota[nota_tx_informacoesContribuinte] .= "MOTIVO: ".$a_ordem[orde_tx_motivoDevolucao];
		}
	}


	if ( $a_nota[nota_tx_modalidadeFrete]=='' ) {
		$a_nota[nota_tx_modalidadeFrete] = '9 - Sem Ocorrecnia de Transporte';
	}



	cactux::abre_form();



	// DADOS NF-E
	$c1[] = cactux::combo('Tipo Documento:','tipo_documento',array('0 - Entrada','1 - Saída'),$mod_tipo_documento,2);
	$c1[] = cactux::combo('Finalidade de Emissão:','finalidade_emissao',array('1 - Nf-e Normal','2 - NF-e Complementar','3 - NF-e de Ajuste','4 - Devolução de Mercadoria'),$mod_finalidade_emissao,2);
	$c1[] = cactux::combo('Tipo do Contrinuinte:','tipo_contribuinte',array('1 - Contribuinte ICMS','2 - Contribuinte Isento','9 - Não Contribuinte'),$mod_tipo_contribuinte,2);
	$c1[] = cactux::combo('Consumidor Final:','consumidor_final',array('0 - Não','1 - Sim'),$mod_consumidor_final,2);
	$c1[] = cactux::combo('Destino da Operação:','destino_operacao',array('1 - Operação Interna','2 - Operação Interestadual'),$mod_destino_operacao,2);
	$c1[] = cactux::combo('Tipo Atendimento:','tipo_atendimento',array('0 - Não se Aplica','1 - Operação Presencial','2 - Operação Não Presencial, pela INTERNET','3 - Operação Não Presencial, pela TELEATENDIMENTO','5 - Operação Presencial, fora do ESTABELECIMENTO','9 - Operação Não Presencial, OUTROS'),$mod_tipo_atendimento,4);
	$c1[] = cactux::campo('Natureza da Operação:','natureza_operacao',$mod_natureza_operacao,6,' maxlength="50" ');

	// TRANSPORTE
	$c2[] = cactux::combo('Modalidade do Frete:','modalidade_frete',array('0 - Contratação do Frete Por Conta do Remetente[CIF]','1 - Contratação do Frete Por Conta do Destinatário[FOB]','2 - Contratação de Frete Por Conta de Terceiros','3 - Transporte Próprio Por Conta do Remetente','4 - Transporte Próprio Por Conta do Destinatário','9 - Sem Ocorrecnia de Transporte'),$a_nota[nota_tx_modalidadeFrete],4);
	$c2[] = cactux::combo_net('!Transportadora:','transportadora',$a_transportadora[enti_nb_id],$a_transportadora[enti_tx_nome],3,array('busca_div.php?c=entidade','busca_net.php?c=entidade'));
	$c2[] = cactux::campo('Placa Veículo:','placa_veiculo',$a_nota[nota_tx_placaVeiculo],2,' maxlength="10" ');
	$c2[] = cactux::campo('UF Veículo:','uf_veiculo',$a_nota[nota_tx_ufVeiculo],1,' maxlength="2" ');

	// VOLUMES TRANSPORTADOS
	$c3[] = cactux::campo('Quantidade:','quantidade',intval($a_nota[nota_tx_quantidade]),1,MASCARA_NUMERO);
	$c3[] = cactux::campo('Espécie:','especie',$a_nota[nota_tx_especie],1);
	$c3[] = cactux::campo('Marca:','marca',$a_nota[nota_tx_marca],2);
	$c3[] = cactux::campo('Numeração:','numeracao',$a_nota[nota_tx_numeracao],2);
	$c3[] = cactux::campo('Peso Líquido (Kg):','peso_liquido',mostra_valor($a_nota[nota_tx_pesoLiquido]),2,MASCARA_VALOR);
	$c3[] = cactux::campo('Peso Bruto (Kg):','peso_bruto',mostra_valor($a_nota[nota_tx_pesoBruto]),2,MASCARA_VALOR);

	// INFORMAÇÕES ADCIONAIS
	// $c4[] = cactux::textarea('Informações de Interesse do Fisco:','informacoes_interece_fisco',$a_nota[nota_tx_informacoesFisco],5,2);
	$c4[] = cactux::textarea('Informações de Interesse do Contribuinte:','informacoes_interece_contribuinte',$a_nota[nota_tx_informacoesContribuinte],10,3);


	//BOTOES
	$bt_voltar = cactux::botao('Voltar',2,'voltar');
	$bt_editar = cactux::botao('XML',2,'','onclick=editar_xml();');
	$bt_enviar = cactux::botao_submit('Enviar',2,'gravar_nota','porcentagem_nota,editar,id_nota,id',"$_POST[porcentagem_nota],nao,$a_nota[nota_nb_id],$_POST[id]");
	


	cactux::abre_fieldset('Dados NF-e');
	cactux::linha_fieldset($c1[0],$c1[1],$c1[2],$c1[3],$c1[4]);
	cactux::linha_fieldset($c1[5],$c1[6]);
	cactux::fecha_fieldset();

	cactux::abre_fieldset('Transporte');
	cactux::linha_fieldset($c2[0],$c2[1],$c2[2],$c2[3]);
	cactux::fecha_fieldset();

	cactux::abre_fieldset('Volumes Transportados');
	cactux::linha_fieldset($c3[0],$c3[1],$c3[2],$c3[3],$c3[4],$c3[5]);	
	cactux::fecha_fieldset();

	cactux::abre_fieldset('Informações Adicionais');
	cactux::linha_fieldset($c4[0]);	
	cactux::fecha_fieldset();
	cactux::linha_fieldset($bt_voltar,$bt_editar,$bt_enviar);

	cactux::fecha_form();
	cactux::acao_botao('voltar','index');

	javascript("
		window.document.cadastro.onsubmit = function(){
			$.blockUI({ message: \"<h1>Processando...</h1>\" });
		};
	");

	javascript("

		function editar_xml(){
			window.document.cadastro.editar.value = 'sim';
			window.document.cadastro.submit();
		}
	");

	rodape();
	exit;
}


// print_r($_POST);

function enviar_nota(){
	global $CONFIGURA;

	// FEITO POR RENATO 12/04/2019 (PARA A DEVOLUÇÃO DA QUALIVITA)
	if ( $_POST[editar]=='sim' )	
		$_POST[xml_fiscal] = str_replace(array('´'),array(""),$_POST[xml_fiscal]);


	$campos=array(orde_tx_xml);
	$valores=array($_POST[xml_fiscal]);
	atualizar('ordem',$campos,$valores,$_POST[id]);

	
	// print_r($_POST);
	// print_r($_GET);
	// print_r($_SERVER);

	// --------------------------------------------------------------------------------
	// VERIFICA SE A NOTA JÁ NÃO FOI AUTORIZADA PARA NAO ALTERAR MAIS NADA NELA
	// --------------------------------------------------------------------------------
	$sql = selecionar('nota','nota_nb_ordem',"$_POST[id]");
	if( num_linhas($sql) > 0 ) {
		$a_nota = carrega_array($sql);
		if( $a_nota[nota_tx_statusNota] == "NFe Autorizada" ) {			
			set_status("ERRO: NFe já autorizada!");
			index();
			exit;
		}
	}

	verifica_nota();
	$numeroNota = gera_numeroNota();


	if ($a_nota[nota_nb_id]==0) {
		// SE AINDA NÃO ESTIVER CARREGADO A NOTA, CARREGA DEPOIS DE CHAMAR O VERIFICA NOTA
		$sql = selecionar('nota','nota_nb_ordem',"$_POST[id]");
		$a_nota = carrega_array($sql);
	}
	
	if($a_nota[nota_tx_emissao]!='' && $a_nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
		$pasta_xml0 = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2);
		$pasta_xml = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/contingencia/';
		$pasta_xml2 = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/autorizada/';
		@mkdir(LOCAL.$pasta_xml0);
		@mkdir(LOCAL.$pasta_xml);
		@mkdir(LOCAL.$pasta_xml2);
	}else{
		@mkdir(LOCAL.date('Ym'));
		@mkdir(LOCAL.date('Ym').'/contingencia');
		@mkdir(LOCAL.date('Ym').'/autorizada');
		$pasta_xml = date('Ym').'/contingencia/';
		$pasta_xml2 = date('Ym').'/autorizada/';
	}

	$arquivo_xml = LOCAL.$pasta_xml.$numeroNota."-nfe.xml";

	
	// RETIRA AS QUEBRAS DE LINHA
	$conteudo_xml = str_replace(array("\r\n","\t"),"",$_POST[xml_fiscal]);
	// ESCREVE O XML NO ARQUIVO
	$fp_xml = fopen($arquivo_xml,"w");
	fputs($fp_xml,$conteudo_xml);
	fclose($fp_xml);

	$arquivo_xml_rede = LOCAL_REDE.$pasta_xml2.$numeroNota."-nfe.xml";
	


	limpa_log_retorno();
	
	if(	$fp = fopen($arquivo_xml,"r") ) {	


		// ------------------------------------------------------------------------------------------
		//
		// NOVA FUNCAO QUE SE COMUNICA COM O SERVIDOR CACTUS E NAO DIRETAMENTE COM A SEFAZ
		//
		// ------------------------------------------------------------------------------------------

		$MSG_STATUS = nfe_envia_xml($arquivo_xml,$arquivo_xml_rede);	


	} else {
		
		$MSG_STATUS = "ERRO: XML NÃO LOCALIZADO";
		
	}
	// var_dump($MSG_STATUS[protNFe][infProt][xMotivo]);exit;
	if(@array_key_exists('xMotivo', $MSG_STATUS)){
		
		$notaStatus = $MSG_STATUS[protNFe][infProt][cStat];
		$MSG_STATUS = $MSG_STATUS[protNFe][infProt][cStat].' - '.$MSG_STATUS[protNFe][infProt][xMotivo];
	}


	if( @trim($MSG_STATUS) != '' ) {
		
		$a_nota = carregar('nota',$a_nota[nota_nb_id]);

		if($notaStatus=='100'){
			$MSG_STATUS = 'NFe Autorizada';
			$arquivo_impressao = $arquivo_xml_rede;
		}else{
			$arquivo_impressao = $arquivo_xml;
		}

		atualizar('nota',nota_tx_statusNota,$MSG_STATUS,'','nota_nb_ordem',$_POST[id]);
		atualizar('ordem',orde_tx_statusNota,$MSG_STATUS,$_POST[id]);

		$campos = array(reto_nb_nota,reto_tx_chaveAcesso,reto_tx_data,reto_tx_status);
		$valores= array($a_nota[nota_nb_id],$a_nota[nota_tx_chaveAcesso],date('Y-m-d H:i:s'),ativo);
		inserir('retornonota',$campos,$valores);
		$id_ret=ultimo_reg('retornonota');
		// echo "UPDATE retorno SET reto_tx_retorno = '".$MSG_STATUS."' WHERE reto_nb_id = '$id_ret'";
		mysql_query("UPDATE retornonota SET reto_tx_retorno = \"".htmlentities($MSG_STATUS)."\" WHERE reto_nb_id = '$id_ret'") or die(mysql_error());
	}
	set_status("Enviando pedido $_POST[id]: ".substr($MSG_STATUS,0,100));
	
	
	
	if( $_POST[envio_automatico] != 1 ) {
	
		index();
		exit;
		
	} else {
		
		
	
		monta_impressao($arquivo_impressao);
		if($CONFIGURA[IMPRESSAO_COMPROVANTE]=='SIM'){
			$_POST[id_ordem_finalizar] = $_POST[id];
			montar_impressao_comanda();
		}
		javascript("window.parent.document.form_finalizar.submit();");
		index();
		exit;
		

		// javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = '$MSG_STATUS';");

		// if( $MSG_STATUS == 'NFe Enviada' ) {
		
		// 	javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'NFCe Enviada. Aguardando Autorização...<br><img src=../cactus/imagens/carregando.gif width=100px></div></center>';");
		// 	javascript("setInterval(function(){window.parent.document.getElementById('form_atualizar').submit()},2500)");
			
		// } else {



		// 	javascript("window.parent.document.getElementById('botao_finalizar1').style.display = 'none';");
		// 	javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Erro ao enviar. Imprimindo em CONTIGÊNCIA...<br><img src=../cactus/imagens/carregando.gif width=100px></div></center>';");
		// 	$link = "../emissao_nfce.php?acao_auto=imprimir_contigencia&id_ordem_auto=$_POST[id]";
		// 	javascript("window.parent.document.getElementById('frame_nfce').src = '$link';");
		
		// }
		// exit;


		
	}
		
	
}



function monta_impressao($xml){
	global $CONFIGURA;
	require_once "../spednfe/vendor/autoload.php";
	$stdCl = new NFePHP\NFe\Common\Standardize($protocolo);
	
	// use NFePHP\DA\NFe\Danfce;
	$docxml = file_get_contents($xml);

	// IDENIFICA SE ESTA EM UTF8
	$codificacao = mb_detect_encoding($docxml.'x', 'UTF-8, ISO-8859-1');
	if ($codificacao!='UTF-8') {
		$docxml = utf8_encode($docxml);
	}
	
	$pathLogo = $_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH].'/galeria/logo.jpg';//use somente imagens JPEG
	// echo "!$pathLogo!";exit;
	$danfce = new NFePHP\DA\NFe\Danfce($docxml, $pathLogo, 0);
	$id = $danfce->monta();
	$pdf = $danfce->render();
	// header('Content-Type: application/pdf');
	// echo '<hr>'.$_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH].'impressao/pdf.pdf';exit;
	file_put_contents($_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH].'impressao/pdf.pdf',$pdf);

	bat_imprime($_SERVER[DOCUMENT_ROOT].$CONFIGURA[PATH].'impressao/pdf.pdf');
}



function impressao_nfe(){
	global $CONFIGURA;

	require_once "../spednfe/vendor/autoload.php";
	// use NFePHP\DA\NFe\Danfe;
	// use NFePHP\DA\Legacy\FilesFolders;

	if ($_GET[id]>0)
		$id_ordem = intval($_GET[id]);
	else
		$id_ordem = intval($_POST[id]);

	$hash_orde = md5($id_ordem.'.senha.cactus');
	if ( $hash_orde!=$_GET[h] ) {
		echo "ERRO: URL de Acesso Invalida!";
		exit;
	}


	$sql=mysql_query("SELECT * FROM nota WHERE nota_nb_ordem = '$id_ordem' LIMIT 1");
	$a_nota = mysql_fetch_array($sql);

	if( intval($a_nota[nota_nb_id])==0 ) {
		// echo "ERRO: Nota não cadastrada!";
		$_POST[id_ordem_finalizar] = $id_ordem;
		montar_impressao_comanda();
		// index();
		exit;
	}

	if($a_nota[nota_tx_statusNota] == 'NFe Autorizada'){
		$pasta_xml = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/autorizada/';
	}else{
		$pasta_xml = substr($a_nota[nota_tx_emissao],0,4).substr($a_nota[nota_tx_emissao],5,2).'/contingencia/';
	}
	$arquivo_xml = LOCAL.$pasta_xml.$_POST[numero_nota]."-nfe.xml";

	if (!file_exists($arquivo_xml)) {
		// SE O ARQUIVO XML NÃO FOR ENCONTRADO
		echo "Arquivo xml não localizado!";
		exit;
	}

	// monta_impressao($arquivo_xml);


	$xml = $arquivo_xml;
	$docxml = NFePHP\DA\Legacy\FilesFolders::readFile($xml);
	try {
		if( is_file('../'.$CONFIGURA[PATH].'/galeria/logo.jpg') )
			$arquivo_logo = '../'.$CONFIGURA[PATH].'/galeria/logo.jpg';
		else
			$arquivo_logo = '';

	    $danfe = new NFePHP\DA\NFe\Danfe($docxml, 'P', 'A4', $arquivo_logo, 'I', '');
	    $id = $danfe->montaDANFE();
		
	    $pdf = $danfe->render();
	    //o pdf porde ser exibido como view no browser
	    //salvo em arquivo
	    //ou setado para download forçado no browser 
	    //ou ainda gravado na base de dados
	    header('Content-Type: application/pdf');
		header("Content-Disposition: attachment;Filename=".$_POST[numero_nota].".pdf");
	    echo $pdf;
	} catch (InvalidArgumentException $e) {
	    echo "Ocorreu um erro durante o processamento :" . $e->getMessage();
	}   

	// index();
	exit;
}



function cancela_nota(){
	global $CONFIGURA;

	require_once "../spednfe/vendor/autoload.php";
	
	$a = carregar('ordem,entidade',$_POST[id]);
	$nota = carregar('nota','','nota_nb_ordem',$a[orde_nb_id]);
	
	$cnpj = str_replace(array(".","-","/"),array("","",""),$a[orde_tx_cnpj]);

	if($nota[nota_tx_emissao]!='' && $nota[nota_tx_emissao]!='0000-00-00 00:00:00')
		$pasta_xml = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/autorizada/';
	else
		return "ERRO: Arquivo XML não localizado";
		
	

	$arquivo_xml = file_get_contents(LOCAL.$pasta_xml.$nota[nota_tx_chaveAcesso].'-nfe.xml');
	

	$stdXml = new NFePHP\NFe\Common\Standardize($arquivo_xml);
	$arr = $stdXml->toArray();

	$nProt = $arr[protNFe][infProt][nProt];

	// ESSE IF É USADO PARA O CASO DO XML NÃO EXISTIR NO SERVIDOR E O PROTOCOLO ESTIVER ARMAZENADO NO BANCO DE DADOS
	if ($nProt=='' && $nota[nota_tx_nprot]!='')
		$nProt = $nota[nota_tx_nprot];

	// echo "!$nProt!";
	

	try {

		$config = [
		   "atualizacao" => "2018-02-06 06:01:21",
		   "tpAmb" => 1, // Se deixar o tpAmb como 2 você emitirá a nota em ambiente de homologação(teste) e as notas fiscais aqui não tem valor fiscal
		   "razaosocial" => $CONFIGURA[NOME_IMPRESSAO],
		   "siglaUF" => "CE",
		   "cnpj" => trata_xml($CONFIGURA[CNPJ]),
		   "schemes" => "PL_009_V4",
		   "versao" => "4.00",
		   "tokenIBPT" => "AAAAAAA",
		   "CSC" => $CONFIGURA[CSC],
		   "CSCid" => $CONFIGURA[CSCID]
		];

		//Assinar XML
		$configJson = json_encode($config);
		$certificadoDigital = file_get_contents($CONFIGURA[CERTIFICADO]);

		$cert = NFePHP\Common\Certificate::readPfx($certificadoDigital, $CONFIGURA[SENHA]);
		$tools = new NFePHP\NFe\Tools($configJson,$cert);
		// $tools->model('55');

		$chave = $nota[nota_tx_chaveAcesso];
		$xJust = 'Cliente retornou os produtos';
		// $nProt = $nota[nota_tx_nprot];
		// echo "<pre>";
		// 		print_r($nota);
		// echo "</pre>";
		$response = $tools->sefazCancela($chave, $xJust, $nProt);

		$stdCl = new NFePHP\NFe\Common\Standardize($response);


		
		//nesse caso o $arr irá conter uma representação em array do XML
		// $arr = $stdCl->toArray();
		$std = $stdCl->toStd();

		
		$xMotivo = $std->retEvento->infEvento->xMotivo;
		$cStat = $std->retEvento->infEvento->cStat;
		//verifique se o evento foi processado
		if ($std->cStat != 128) {
			$erro = 'ERRO 1: '.$cStat.' -> '.$xMotivo;
		} else {
			$cStat = $std->retEvento->infEvento->cStat;
			if ($cStat == '101' || $cStat == '155' || $cStat == '135') {
				//SUCESSO PROTOCOLAR A SOLICITAÇÂO ANTES DE GUARDAR
				$xml = NFePHP\NFe\Complements::toAuthorize($tools->lastRequest, $response);
				//grave o XML protocolado

				if($nota[nota_tx_emissao]!='' && $nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
					$pasta_xml0 = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2);
					$pasta_xml = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/cancelado/';
					@mkdir(LOCAL.$pasta_xml0);
					@mkdir(LOCAL.$pasta_xml);
				}
				@file_put_contents(LOCAL.$pasta_xml.$nota[nota_tx_chaveAcesso].'-can-nfe.xml',$xml);


			} else {
				$erro = 'ERRO 2: '.$cStat.' -> '.$xMotivo;
			}
		}    
	} catch (\Exception $e) {
		$erro = $e->getMessage();
	}

	if($erro == ''){

		$sql_movimento = selecionar('movimento','movi_tx_status',"!inativo"," AND movi_nb_ordem = '$_POST[id]'");
		if(num_linhas($sql_movimento)>0){
			$a_mov = carrega_array($sql_movimento);

			atualizar('movimento','movi_tx_status','inativo',$a_mov[0]);
			atualizar('ordem','orde_tx_status','Cancelado',$_POST[id]);

			$sql_baixa = selecionar('orpr,ordem,produto','orpr_tx_status','ativo'," AND orde_nb_id = '$_POST[id]'");
			while($a_baixa=carrega_array($sql_baixa)){
				$a_prod = carregar('prod_tx_qtde|produto',$a_baixa[prod_nb_id]);
				atualizar('produto',array('prod_tx_qtde'),array($a_prod[prod_tx_qtde]+$a_baixa[orpr_tx_qtde]),$a_baixa[prod_nb_id]);
			}	

		}

		atualizar('ordem',orde_tx_statusNota,'NFe Cancelada',$nota[nota_nb_ordem]);
		atualizar('nota',nota_tx_statusNota,'NFe Cancelada',$nota[nota_nb_id]);
	}

	set_status($erro);
	index();
	exit;


	// REMOVE O ARQUIVO DE LOG
	// @unlink(LOG);


	// ENDERECO DO SERVIDOR DE NFe CACTUS
	$target_url = SERVIDOR_CACTUS.'cancelar.php';
	$data = array('cliente' => NFE_CLIENTE,'chave_acesso' => $nota[nota_tx_chaveAcesso], 'cnpj' => $cnpj);

	$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);

	$ch = curl_init();
	curl_setopt_array($ch, $options);
	$ret_curl = curl_exec($ch);
	curl_close($ch);
	
//	echo "%%$ret_curl%%";

	$sql_movimento = selecionar('movimento','movi_tx_status',"!inativo"," AND movi_nb_ordem = '$_POST[id]'");
	if(num_linhas($sql_movimento)>0){
		$a_mov = carrega_array($sql_movimento);

		atualizar('movimento','movi_tx_status','inativo',$a_mov[0]);
		atualizar('ordem','orde_tx_status','Cancelado',$_POST[id]);

		$sql_baixa = selecionar('orpr,ordem,produto','orpr_tx_status','ativo'," AND orde_nb_id = '$_POST[id]'");
		while($a_baixa=carrega_array($sql_baixa)){
			$a_prod = carregar('prod_tx_qtde|produto',$a_baixa[prod_nb_id]);
			atualizar('produto',array('prod_tx_qtde'),array($a_prod[prod_tx_qtde]+$a_baixa[orpr_tx_qtde]),$a_baixa[prod_nb_id]);
		}	

	}


	if( get_status() == '' )
		set_status($ret_curl);

	if( trim($ret_curl) == 'Evento registrado e vinculado a NF-e' ) {
		retorno();
		exit;
	}

	if( $_POST[envio_automatico] != 1 ) {
	
		index();
		exit;
		
	} else {
		
		javascript("window.parent.document.getElementById('div_msg_nfe').innerHTML = 'Cancelamento enviado, atualize em alguns instantes';");

		
	}
	
	exit;
	
	if( substr($ret_curl,0,3) == 'OK:' ) {
		$MSG_STATUS = "NFe Cancelada";
	} else  {
		$MSG_STATUS = "$ret_curl";
	}
	
	$ENTROU_RETORNO = 1;
	

	if( $nota ) {
		if( $MSG_STATUS == "NFe Cancelada" ) {
			atualizar('ordem',orde_tx_statusNota,$MSG_STATUS,$nota[nota_nb_ordem]);
			atualizar('nota',nota_tx_statusNota,$MSG_STATUS,$nota[nota_nb_id]);
		}
	}
	
	set_status("$MSG_STATUS");			


	index();
	exit;
	

	
	$cnpj = str_replace(array(".","-","/"),array("","",""),$a[orde_tx_cnpj]);
	

	
	// CRIA O ARQUIVO COM O COMANDO DE CONSULTAR
	$fp = fopen(ARQUIVO,"w");
	fputs($fp,"NFE.CANCELARNFE(\"".$nota[nota_tx_chaveAcesso]."\",\"Cliente retornou os produtos!,$cnpj\")");
	fclose($fp);

	
	set_status("Cancelamento de NFe enviado!");
	
	exclui_pedido();
	
	index();
	exit;
	
}


function consultar_nota(){

	$a = carregar('ordem,entidade',$_POST[id]);
	$nota = carregar('nota','','nota_nb_ordem',$a[orde_nb_id]);

	// REMOVE O ARQUIVO DE LOG
	@unlink(LOG);


	// ENDERECO DO SERVIDOR DE NFe CACTUS
	$target_url = SERVIDOR_CACTUS.'consultar.php';
	$data = array('cliente' => NFE_CLIENTE,'chave_acesso' => $nota[nota_tx_chaveAcesso], 'email' => $a[orde_tx_email]);

	$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);

	$ch = curl_init();
	curl_setopt_array($ch, $options);
	$ret_curl = curl_exec($ch);
	curl_close($ch);
	


	if( get_status() == '' )
		set_status($ret_curl);

	retorno(1);
	index();
	exit;
	


}


function envia_email(){
	
	
	$a = carregar('ordem,entidade',$_POST[id]);
	$nota = carregar('nota','','nota_nb_ordem',$a[orde_nb_id]);
	
	
	if( $a[enti_tx_email] == '' ) {
		set_status("ERRO: E-mail não cadastrado!");
		index();
		exit;
	}


	// ENDERECO DO SERVIDOR DE NFe CACTUS
	$target_url = SERVIDOR_CACTUS.'email.php';
	$data = array('cliente' => NFE_CLIENTE,'chave_acesso' => $nota[nota_tx_chaveAcesso], 'email' => $a[enti_tx_email]);
	$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);

	$ch = curl_init();
	curl_setopt_array($ch, $options);
	$ret_curl = curl_exec($ch);
	curl_close($ch);
	
//		echo "%$ret_curl%";

	if( get_status() == '' )
		set_status($ret_curl);

	index();
	exit;
	


}


function atualiza_status(){

	$nota = carregar('nota','','nota_nb_ordem',$_POST[id]);
	
	// REMOVE O ARQUIVO DE LOG
	@unlink(LOG);


	// ENDERECO DO SERVIDOR DE NFe CACTUS
	$target_url = SERVIDOR_CACTUS.'consultar.php';
	$data = array('cliente' => NFE_CLIENTE,'chave_acesso' => $nota[nota_tx_chaveAcesso]);

	$options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);

	$ch = curl_init();
	curl_setopt_array($ch, $options);
	$ret_curl = curl_exec($ch);
	curl_close($ch);
	
//		echo "%$ret_curl%";

	if( get_status() == '' )
		set_status($ret_curl);

	index();
	exit;


}

function imprime_cupom() {
global $CACTUX_CONF;

$_POST[id_ordem_finalizar] = $_POST[id];

	define(PASTA_LOCAL,$_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']);
	
	$arquivo_pdf = PASTA_LOCAL.'impressao/conteudo_imprimir.pdf';
	$arquivo_bat = PASTA_LOCAL.'impressao/imprimir.bat';


	montar_impressao_comanda();


	// bat_imprime($arquivo_pdf);
	
	
	set_status("Comanda $_POST[id] impressa com sucesso!");
	
	index();
	exit;

}

function imprime_cupom_tela() {
	global $CACTUX_CONF;


	$_POST[id_ordem_finalizar] = $_POST[id];

	define(PASTA_LOCAL,$_SERVER[DOCUMENT_ROOT].$CACTUX_CONF['path']);
	
	$arquivo_pdf = PASTA_LOCAL.'impressao/conteudo_imprimir.pdf';
	$arquivo_bat = PASTA_LOCAL.'impressao/imprimir.bat';

	montar_impressao_comanda();

	// $link = $CACTUX_CONF[path]."pdv/pdv_imprime_pdf.php?path=../impressao/conteudo_imprimir.pdf?".time();	
	// chamar_pag($link,'','','');
	
	index();
	exit;

}


function inutilizar_nota(){
	// print_r($_POST);exit;
	global $CONFIGURA;

	$a = carregar('ordem,entidade,empresa',$_POST[id]);
	$nota = carregar('nota','','nota_nb_ordem',$a[orde_nb_id]);
	
	$cnpj = str_replace(array(".","-","/"),array("","",""),$a[empr_tx_cnpj]);
	$justificativa = "Numeração de NF Não utilizada";
	$ano = substr($nota[nota_tx_emissao],0,4);
	$modelo = $nota[nota_tx_modelo];
	$serie = $nota[nota_tx_serie];
	$inicial = $nota[nota_tx_numero];
	$final = $nota[nota_tx_numero];
	// REMOVE O ARQUIVO DE LOG
	// @unlink(LOG);

	if($nota[nota_tx_emissao]!='' && $nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
		$pasta_xml0 = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2);
		$pasta_xml = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/contingencia/';
		$pasta_xml2 = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/inutilizado/';
		@mkdir(LOCAL.$pasta_xml0);
		@mkdir(LOCAL.$pasta_xml);
		@mkdir(LOCAL.$pasta_xml2);
	}else{
		$pasta_xml = date('Ym').'/contingencia/';
		$pasta_xml2 = date('Ym').'/inutilizado/';
		@mkdir(LOCAL.date('Ym'));
		@mkdir(LOCAL.date('Ym').'/contingencia');
		@mkdir(LOCAL.date('Ym').'/inutilizado');
	}

	$arquivo_xml_aguardando = LOCAL.$pasta_xml.$nota[nota_tx_chaveAcesso]."-nfe.xml";
	$arquivo_xml_inutilizado = LOCAL.$pasta_xml2.$nota[nota_tx_chaveAcesso]."-inu-nfe.xml";


	// // ENDERECO DO SERVIDOR DE NFe CACTUS
	// $target_url = SERVIDOR_CACTUS.'inutilizar.php';
	// $data = array('cliente' => NFE_CLIENTE,'numero' => $nota[nota_tx_numero], 'cnpj' => $cnpj, 'justificativa' => $justificativa, 'ano' => $ano, 'modelo' => $modelo, 'serie' => $serie, 'inicial' => $inicial, 'final' => $final);

	// $options = array(CURLOPT_URL => $target_url,CURLOPT_RETURNTRANSFER => true,CURLOPT_POST => true,CURLOPT_POSTFIELDS => $data);

	// $ch = curl_init();
	// curl_setopt_array($ch, $options);
	// $ret_curl = curl_exec($ch);
	// curl_close($ch);
	require_once "../spednfe/vendor/autoload.php";

	try {

		$config = [
		   "atualizacao" => "2018-02-06 06:01:21",
		   "tpAmb" => $CONFIGURA[AMBIENTE_NFE], // Se deixar o tpAmb como 2 você emitirá a nota em ambiente de homologação(teste) e as notas fiscais aqui não tem valor fiscal
		   "razaosocial" => $CONFIGURA[NOME_IMPRESSAO],
		   "siglaUF" => "RN",
		   "cnpj" => trata_xml($CONFIGURA[CNPJ]),
		   "schemes" => "PL_009_V4",
		   "versao" => "4.00",
		   "tokenIBPT" => "AAAAAAA",
		   "CSC" => $CONFIGURA[CSC],
		   "CSCid" => $CONFIGURA[CSCID]
		];

		//Assinar XML
		$configJson = json_encode($config);
		$certificadoDigital = file_get_contents($CONFIGURA[CERTIFICADO]);

		$cert = NFePHP\Common\Certificate::readPfx($certificadoDigital, $CONFIGURA[SENHA]);
		$tools = new NFePHP\NFe\Tools($configJson,$cert);
		// $tools->model('55');

		$soap = new NFePHP\Common\Soap\SoapCurl($cert);
		$soap->timeout($CONFIGURA[TIMEOUT]);

		$xJust = 'Erro de digitação dos números sequencias das notas';
		$response = $tools->sefazInutiliza($serie, $inicial, $final, $xJust);

		// $xml = NFePHP\NFe\Complements::toAuthorize($tools->lastRequest, $response);
				
		copy($arquivo_xml_aguardando,$arquivo_xml_inutilizado);
		
		@unlink($arquivo_xml_aguardando);
		

		// if($nota[nota_tx_emissao]!='' && $nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
		// 	$pasta_xml = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/inutilizado/';
		// 	@mkdir(LOCAL.$pasta_xml);
		// 	$fp = fopen($CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$nota[nota_tx_chaveAcesso].'-inu-nfe.xml','w');
		// }
		// file_put_contents($CACTUX_CONF['path'].'xml_nfe'."/".$pasta_xml.$nota[nota_tx_chaveAcesso].'-inu-nfe.xml',$xml);

		//você pode padronizar os dados de retorno atraves da classe abaixo
		//de forma a facilitar a extração dos dados do XML
		//NOTA: mas lembre-se que esse XML muitas vezes será necessário, 
		//      quando houver a necessidade de protocolos
		$stdCl = new NFePHP\NFe\Common\Standardize($response);
		
		//nesse caso o $arr irá conter uma representação em array do XML
		$arr = $stdCl->toArray();
		
		
	} catch (\Exception $e) {
		echo $e->getMessage();
	}

	
	// print_r($arr);
	// exit;
	
	if($arr[infInut][cStat] == '102'){
		
		$sql_movimento = selecionar('movimento','movi_tx_status',"!inativo"," AND movi_nb_ordem = '$_POST[id]'");
		if(num_linhas($sql_movimento)>0){
			$a_mov = carrega_array($sql_movimento);

			atualizar('movimento','movi_tx_status','inativo',$a_mov[0]);
			atualizar('ordem','orde_tx_status','Cancelado',$_POST[id]);

			$sql_baixa = selecionar('orpr,ordem,produto','orpr_tx_status','ativo'," AND orde_nb_id = '$_POST[id]'");
			while($a_baixa=carrega_array($sql_baixa)){
				$a_prod = carregar('prod_tx_qtde|produto',$a_baixa[prod_nb_id]);
				atualizar('produto',array('prod_tx_qtde'),array($a_prod[prod_tx_qtde]+$a_baixa[orpr_tx_qtde]),$a_baixa[prod_nb_id]);
			}	

		}

		atualizar('ordem',orde_tx_statusNota,"NFe Inutilizada",$nota[nota_nb_ordem]);
		atualizar('nota',array(nota_tx_statusNota),array("NFe Inutilizada"),$nota[nota_nb_id]);



	}


	// if( get_status() == '' )
	// 	set_status($ret_curl);

	// if( trim($ret_curl) == 'Inutilizacao de numero homologado' ) {
	// 	retorno();
	// 	exit;
	// }
	set_status($arr[infInut][xMotivo]);
	
	index();
	exit;	
}




function index(){
	global $CONFIGURA;
	
	// PRIMEIRA COISA QUE FAZ AO ENTRAR É CHECAR SE HA RETORNO
	// if( !$_POST[acao] )
	// 	retorno(1);
	
	cabecalho('Emissão NF-e',2);
	
	if($_POST[busca_cod]!=''){
		$extra .= " AND orde_nb_id = '$_POST[busca_cod]' ";
	}
	if($_POST[busca_numeronf]!=''){
		$extra .= " AND nota_tx_numero LIKE '%$_POST[busca_numeronf]' AND orde_nb_id=nota_nb_ordem";
		$tabela_extra = '.nota';
	}

	if($_POST[busca_situa]=='NFe Contingência'){
		$extra .= " AND nota_tx_statusNota NOT IN ('NFe Autorizada','NFe Cancelada','NFe Enviada','NFe Inutilizada','NFe Denegada') AND orde_nb_id=nota_nb_ordem";
		$tabela_extra = '.nota';
	}elseif($_POST[busca_situa]!=''){
		$extra .= " AND nota_tx_statusNota = '$_POST[busca_situa]' AND orde_nb_id=nota_nb_ordem";
		$tabela_extra = '.nota';
	}
	
	if($_POST[busca_filtro]=='Venda'){
		if($_POST[busca_inicio]!=''){
			$d1 = gera_data($_POST[busca_inicio],1).' 00:00:00';
			$extra .= " AND orde_tx_data >= '$d1' ";
		}
		
		if($_POST[busca_fim]!=''){
			$d2 = gera_data($_POST[busca_fim],1).' 23:59:59';
			$extra .= " AND orde_tx_data <= '$d2' ";
		}
	}elseif($_POST[busca_filtro]=='Emissão'){
		$extra .= " AND orde_nb_id=nota_nb_ordem";
		$tabela_extra = '.nota';
		if($_POST[busca_inicio]!=''){
			$d1 = gera_data($_POST[busca_inicio],1).' 00:00:00';
			$extra .= " AND nota_tx_emissao >= '$d1' ";
		}
		
		if($_POST[busca_fim]!=''){
			$d2 = gera_data($_POST[busca_fim],1).' 23:59:59';
			$extra .= " AND nota_tx_emissao <= '$d2' ";
		}
	}
	
	if($_POST[busca_cliente]!=''){
		$extra .= " AND enti_tx_nome LIKE '%$_POST[busca_cliente]%' ";
	}
	
	$extra .= " AND orde_tx_status IN('encerrado','entregue','devolucao compra','devolucao finalizada','NF Cancelada','Venda Cancelada','Cancelado') ";

	$extra .= " AND orde_nb_empresa=1";

	// SE A ENTIDADE FOR DIFERENTE DE 1 (CLIENTE DE BALCÃO) É UMA NFE
	$extra .= " AND orde_nb_entidade!=1";


	if($CONFIGURA[CATEGORIA_SERVICO]>0)
		$extra_cate = " AND prod_nb_categoria != '$CONFIGURA[CATEGORIA_SERVICO]'";

	if($_SESSION[user_tx_nivel] != 'Administrador' && $_SESSION[user_tx_nivel] != 'Gerente'){
		$extra_limite = " LIMIT 10";
		$BUSCA[0] = selecionar('ordem,empresa,entidade.orpr.produto'.$tabela_extra,'orde_tx_status',"!inativo"," AND orpr_nb_produto = prod_nb_id AND orpr_nb_ordem = orde_nb_id $extra $extra_cate GROUP BY orde_nb_id ORDER BY orde_nb_id DESC $extra_limite");
		
	}else{
		$sql = selecionar('ordem,empresa,entidade.orpr.produto'.$tabela_extra,'orde_tx_status',"!inativo"," AND orpr_nb_produto = prod_nb_id AND orpr_nb_ordem = orde_nb_id $extra $extra_cate GROUP BY orde_nb_id ORDER BY orde_nb_id DESC",1);
		$BUSCA = grid::gerar_paginacao($sql);
	}
	
	cactux::abre_form();
	
	//CAMPOS
	$cod = cactux::campo('Código','busca_cod',$_POST[busca_cod],1);
	$inicio = cactux::campo('Data Inicio','busca_inicio',$_POST[busca_inicio],1,MASCARA_DATA);
	$fim = cactux::campo('Data Final','busca_fim',$_POST[busca_fim],1,MASCARA_DATA);
	$filtro = cactux::combo('Filtro','busca_filtro',array('Venda','Emissão'),$_POST[busca_filtro],2);
	$cliente = cactux::campo('Cliente','busca_cliente',$_POST[busca_cliente],2);
	$numero = cactux::campo('Número','busca_numeronf',$_POST[busca_numeronf],1);
	$situa = cactux::combo('Situação','busca_situa',array('','NFe Contingência','NFe Autorizada','NFe Cancelada','NFe Inutilizada','NFe Denegada'),$_POST[busca_situa],2);
	
	//BOTOES
	$buscar = cactux::botao_submit_busca('Buscar',2,'index');
	// $atualizar = cactux::botao('Atualizar Retorno',2,'atualizar');
	$status = cactux::msg_status('',6);
	
	cactux::abre_fieldset('Filtro de Busca');
	cactux::linha_fieldset($cod,$inicio,$fim,$filtro,$cliente,$numero,$situa);
	cactux::linha_fieldset($buscar,$atualizar,$status);
	if ( $CONFIGURA[AMBIENTE_NFE]==2 ) {
		$texto = cactux::texto("AMBIENTE DE HOMOLOGAÇÃO",'',10);
		cactux::linha_fieldset($texto);
	}
	cactux::fecha_fieldset();
	cactux::fecha_form();
	
	cactux::acao_botao('atualizar','retorno');
	
	$cabecalho[] = array('CÓD','CLIENTE','DATA VENDA','VALOR','Nº DE ITENS','SITUAÇÃO','TIPO','N° NOTA','DATA&nbsp;EMISSÃO','','','','','');
	$cabecalho[] = 'c,e,c,c,c,c,c,c,c,c';
	$cabecalho[] = '5%,,7%,6%,8%,9%,7%,8%,2%,2%,2%,2%,2%,2%';
	
	
	
	switch( $_POST[busca_situa] ){
		
		case 'Autorizada':
			$situacao = 'NFe Autorizada';
		break;
		case 'Cancelada':
			$situacao = 'NFe Cancelada';
		break;		
	}

	// OBTEM O NOME DO ARQUIVO ATUAL
	$path_parts = pathinfo( __FILE__ );
	
	while( $a = carrega_array($BUSCA[0]) ){
		
		$nNota = carregar('nota','','nota_nb_ordem',$a[orde_nb_id]);
		$numero_nota = $nNota[nota_tx_chaveAcesso];
		if( $nNota[nota_tx_numero] != '' )
			$exibe_numero_nota = zeros($nNota[nota_tx_numero],9);
		else
			$exibe_numero_nota = '';
			
		$stNota = $nNota[nota_tx_statusNota];

		if($nNota[nota_tx_modelo]=='65'){
			$tipo = 'NFCe';
		}elseif($nNota[nota_tx_modelo]=='55'){
			$tipo = 'NFe';
		}else{
			$tipo = '';
		}
		
		
		if(substr($a[orde_tx_status],0,9) == 'devolucao' )
			$tipo_devolucao = "<font color=red>&nbsp; ($a[orde_tx_tipo])</font>";
		else	
			$tipo_devolucao = '';
		
		$statusNota = $nNota[nota_tx_statusNota];
		
		switch( $statusNota ) {
			case '':				$statusNota = "";	break;
			case 'NFe Autorizada':	$statusNota = "<font color=blue>".$statusNota;	break;
			case 'NFe Cancelada':	$statusNota = "<font color=green>".$statusNota;	break;
			case 'NFe Enviada':		$statusNota = "<font color=black>".$statusNota;	break;
			case 'NFe Inutilizada':	$statusNota = "<font color=purple>".$statusNota;	break;
			default:				$statusNota = "<font color=red>NFe Contingência";	break;
		}
		
		//Nº DE ITENS
		$itens = selecionar('orpr','orpr_tx_status,orpr_nb_ordem',"ativo,$a[orde_nb_id]");
		$itens = num_linhas($itens);
		
		$a_clie = carregar('entidade',$a[orde_nb_entidade]);
		$cliente = $a_clie[enti_tx_nome].$tipo_devolucao;

		if($a[orde_tx_statusNota] == 'Venda Cancelada'){
			$nNota[nota_tx_statusNota] = 'Venda Cancelada';
			$statusNota = "<font color=green>".'Venda Cancelada';
		}

		// CRIA UM HAS PARA PASSAR PELO GET
		$hash_orde = md5($a[orde_nb_id].'.senha.cactus');


		switch( $nNota[nota_tx_statusNota] ) {
		case "NFe Autorizada":
					// CONSULTAR NOTA
					$icone_5 = ".icone_modificar($a[orde_nb_id],'layout_log','nota','$nNota[nota_nb_id]','','','Ver LOG','cactus/imagens/imprimir.png')";
					//$icone_5 = ".icone_modificar($a[orde_nb_id],'consultar_nota','id_nota','$nNota[nota_nb_id]','','','Consultar Nota','cactus/imagens/atualizar.png')";
					// LOGS
					$icone_4 = '';
					// IMPRIMIR DANFE
					$icone_3 = ".icone_modificar($a[orde_nb_id],'impressao_nfe','numero_nota','$numero_nota','$path_parts[basename]?id=$a[orde_nb_id]&acao=impressao_nfe&numero_nota=$numero_nota&h=$hash_orde','target=_blank','DANFE','cactus/imagens/print.png')";
					// ENVIAR EMAIL
					$icone_2 = ".icone_modificar($a[orde_nb_id],'envia_email','numero_nota','$numero_nota','','','Enviar E-mail','cactus/imagens/email.png')";
					// CANCELAR A NOTA
					$icone_1 = "<a href=javascript:cancela_nota($a[orde_nb_id],'$numero_nota') title='Cancelar NFe'><img src='cactus/imagens/excluir.png' border=0></a>";
				break;
		case "NFe Inutilizada":
					$icone_5 = ".icone_modificar($a[orde_nb_id],'layout_log','nota','$nNota[nota_nb_id]','','','Ver LOG','cactus/imagens/imprimir.png')";
					$icone_4 = "";
					$icone_3 = "";
					$icone_2 = "";
					$icone_1 = '';
					// LOGS
				break;
		case "NFe Cancelada":
					$icone_5 = '';
					$icone_4 = "";
					$icone_3 = "";
					$icone_2 = "";
					// LOGS
					$icone_1 = "";
				break;
		case "Venda Cancelada":
					$icone_5 = '';
					$icone_4 = "";
					$icone_3 = "";
					$icone_2 = "";
					// LOGS
					$icone_1 = "";
				break;
		default:
					// LOGS
					$icone_5 = ".icone_modificar($a[orde_nb_id],'layout_log','nota','$nNota[nota_nb_id]','','','Ver LOG','cactus/imagens/imprimir.png')";
					// CONSULTAR NOTA
					//$icone_5 = ".icone_modificar($a[orde_nb_id],'consultar_nota','id_nota','$nNota[nota_nb_id]','','','Consultar Nota','cactus/imagens/atualizar.png')";
					
					// ENVIAR A NOTA
					$icone_4 = "<a href=javascript:envia_nota('$a[orde_nb_id]') title='Enviar NFe'><img src='cactus/imagens/download.png' border=0 alt='Enviar NFe'></a>";
					// IMPRIMIR
					
					if( $nNota[nota_tx_statusNota] == "" )
						$icone_3 = ".icone_modificar($a[orde_nb_id],'impressao_nfe','id_ordem_finalizar','$a[orde_nb_id]','$path_parts[basename]?id=$a[orde_nb_id]&acao=impressao_nfe&h=$hash_orde','target=_blank','DANFE','cactus/imagens/print.png')";
					else
						$icone_3 = ".icone_modificar($a[orde_nb_id],'impressao_nfe','numero_nota','$numero_nota','$path_parts[basename]?id=$a[orde_nb_id]&acao=impressao_nfe&numero_nota=$numero_nota&h=$hash_orde','target=_blank','DANFE','cactus/imagens/print.png')";
//					$icone_3 = ".icone_modificar($a[orde_nb_id],'imprimir','','','relatorios/pedido.php',' target=_blank ','Imprimir','cactus/imagens/print.png')";
					// MODIFICAR A VENDA
					$icone_2 = ".icone_modificar($a[orde_nb_id],'modificar_venda','','','','','Modificar Venda')";
					// EXCLUIR A VENDA ou INUTILIZAR A NOTA
					if( $nNota[nota_tx_statusNota] == "" )
						$icone_1 = ".icone_excluir($a[orde_nb_id],'exclui_venda')";
					else
						$icone_1 = "<a href=javascript:inutiliza_nota($a[orde_nb_id],'$nNota[nota_tx_numero]') title='Inutilizar NFe'><img src='cactus/imagens/excluir.png' border=0></a>";

				break;		
		}

		if ( $tipo=='NFCe' ) {
			// NÃO PODE LISTAR NFCe
			$icone_5='';
			$icone_4='';
			$icone_3='';
			$icone_2='';
			$icone_1='';
		}

		// if($_SESSION[user_tx_nivel] != 'Administrador' && $_SESSION[user_tx_nivel] != 'Gerente')
		// 	$icone_1 = '';

		// $icone_comanda = ".icone_modificar($a[orde_nb_id],'imprime_cupom_tela','','','','','Imprimir VENDA','cactus/imagens/imprimir2.png')";
		$icone_comanda = ".icone_modificar($a[orde_nb_id],'imprimir','','','relatorios/pedido.php',' target=_blank','Imprimir Pedido','/cactus/imagens/imprimir2.png')";
		// $icone_6 = ".icone_modificar($a[orde_nb_id],'consultar_nota','id_nota','$nNota[nota_nb_id]','','','Consultar Nota','cactus/imagens/atualizar.png')";
	
		$valores[] = array($a[orde_nb_id],$cliente,data($a[orde_tx_data],3),
		mostra_valor($a[orde_tx_valorTotal]),$itens,$statusNota,$tipo,$exibe_numero_nota,data($nNota[nota_tx_emissao],3),$icone_comanda,$icone_5,$icone_4,$icone_3,$icone_1);
		//$envia_nota);
		
		
	}
	
	grid::gerar($cabecalho,$valores);

	if($_SESSION[user_tx_nivel] != 'Administrador' && $_SESSION[user_tx_nivel] != 'Gerente')
		echo"";
	else
		grid::paginar($BUSCA);
	
	
	cactux::acao_botao('form_envia_nota','layout_enviar_nota','id,porcentagem_nota',"0,0");
	cactux::acao_botao('form_cancela_nota','cancela_nota','id,numero_nota',"0,0");
	cactux::acao_botao('form_inutiliza_nota','inutilizar_nota','id,numero_nota',"0,0");
	
	javascript("
	
	function envia_nota(id) {
		/*
		var erro=0;
		
		var porcentagem = prompt('Entre com a porcentagem do valor:','100');
		if( porcentagem == null || porcentagem == '') {
			alert('ERRO: Preencha todos os dados!');
			erro = 1;
		}
		if( erro == 0 ) {
			//alert(porcentagem);
			
			window.document.form_envia_nota.id.value=id;
			window.document.form_envia_nota.porcentagem_nota.value=porcentagem;
			window.document.form_envia_nota.submit();
			
		}
		
		*/
		
			window.document.form_envia_nota.id.value=id;
			window.document.form_envia_nota.porcentagem_nota.value=100;
			window.document.form_envia_nota.submit();
	}
	
	function cancela_nota(id,num) {
			
			if( confirm('Deseja realmente cancelar a NFe?') ) {
				window.document.form_cancela_nota.id.value=id;
				window.document.form_cancela_nota.numero_nota.value=num;
				window.document.form_cancela_nota.submit();
			}
	}	

	function inutiliza_nota(id,num) {
			
			if( confirm('Deseja realmente inutilizar a NFe?') ) {
				window.document.form_inutiliza_nota.id.value=id;
				window.document.form_inutiliza_nota.numero_nota.value=num;
				window.document.form_inutiliza_nota.submit();
			}
	}	
	
	");

	
	rodape();
	
}

controle();
?>