<?php
include "ver_sessao.php";
include "conecta.php";
include "funcoes_fiscal.php";
// include "pdv_funcoes.php";

set_time_limit(0);

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


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

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

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 inutilizar_nota(){
function inutiliza_vez($nInicio,$nFim){
	
	global $CONFIGURA;

	
	$sql_nota = selecionar('nota,ordem','nota_tx_numero',$nInicio,'');
	$nota = carrega_array($sql_nota);
	$sql = selecionar('ordem,entidade,empresa','orde_nb_id',"$nota[nota_nb_ordem]",'');
	$a=carrega_array($sql);

	// if($a[0]==''){
	// 	$a=carregar('empresa',1);
	// }else{
	// 	echo "12";
	// }

	// echo "$nInicio - $nFim<br>";exit;
	// echo "<pre>"; print_r($nota); echo "</pre>";
	// echo "<pre>"; print_r($a); echo "</pre>";
	// exit;

	if($nota[nota_tx_serie]>0){
		$serie = $nota[nota_tx_serie];
	}else{
		$serie = $CONFIGURA[SERIE];
	}

	$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];
	$inicial = $nInicio;
	$final = $nFim;
	// REMOVE O ARQUIVO DE LOG
	// unlink(LOG);

	$cnpj = preg_replace("/[^0-9]/", "", $a[empr_tx_cnpj]);
	$pasta_empresa = $cnpj.'/';

	if($nota[nota_tx_emissao]!='' && $nota[nota_tx_emissao]!='0000-00-00 00:00:00'){
		$pasta_xml0 = 'fix_inutilizacao';
		$pasta_xml  = 'fix_inutilizacao'.'/contingencia/';
		$pasta_xml2 = 'fix_inutilizacao'.'/inutilizado/';
		@mkdir(LOCAL.$pasta_xml0);
		@mkdir(LOCAL.$pasta_xml);
		@mkdir(LOCAL.$pasta_xml2);
	}else{
		$pasta_xml = 'fix_inutilizacao'.'/contingencia/';
		$pasta_xml2 = 'fix_inutilizacao'.'/inutilizado/';
		if($pasta_empresa!=''){// SE O SISTEMA ESTIVER UTILIZANDO UMA PASTA PARA O CNPJ
			@mkdir(LOCAL.$pasta_empresa);
		}
		@mkdir(LOCAL.$pasta_empresa.'fix_inutilizacao');
		@mkdir(LOCAL.$pasta_empresa.'fix_inutilizacao'.'/contingencia');
		@mkdir(LOCAL.$pasta_empresa.'fix_inutilizacao'.'/inutilizado');
	}

	$arquivo_xml_aguardando = LOCAL.$pasta_empresa.$pasta_xml.$nota[nota_tx_chaveAcesso]."-nfe.xml";
	$arquivo_xml_inutilizado = LOCAL.$pasta_empresa.$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('65');

		$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);
	

	//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();

		if($arr[infInut][cStat] == '102'){
			$pasta_xml = substr($nota[nota_tx_emissao],0,4).substr($nota[nota_tx_emissao],5,2).'/inutilizado/';
			@mkdir(LOCAL.$pasta_empresa.$pasta_xml);
			$fp = fopen(LOCAL.$pasta_empresa.$pasta_xml.$nota[nota_tx_chaveAcesso].'-inu-nfe.xml','w');
		}
		file_put_contents(LOCAL.$pasta_empresa.$pasta_xml.$nota[nota_tx_chaveAcesso].'-inu-nfe.xml',$xml);
		
		
	} catch (\Exception $e) {
		return $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]);



	}

	return $arr[infInut][xMotivo];


	//index();
	exit;
}


function inutiliza_varios() {
	global $CONFIGURA;

	$_POST[checkbox] = @explode("\r\n",$_POST[numero]);
	// $_POST[checkbox][] = '42262';
	// print_r($_POST);exit;
	cabecalho();

	echo "<div id=div_msg_nfe2></div>";

	echo "<table border=0>";
	foreach( $_POST[checkbox] as $id_check  ) {
		$a_ids = explode("-",$id_check);
		if(count($a_ids)>1){
			$id1 = trim($a_ids[0]);
			$id2 = trim($a_ids[1]);
		}else{
			$id1 = trim($id_check);
			$id2 = trim($id_check);
		}

		$retorno = inutiliza_vez($id1,$id2);

		echo "$id1 - $id2 -> $retorno<hr>";
		$total_ids++;
	}
	echo "</table>";

	javascript("window.document.getElementById('div_msg_nfe2').innerHTML = 'Aguardando Autorização...<br><img src=/kernel/cactus/imagens/carregando.gif width=100px></div></center>';");
	index();
	exit;
}


function index(){

//print_r($_POST);
//frame_interno(1);
	echo "<div id=div_msg_nfe2></div>";
	global $CONFIGURA;
	


	cabecalho('FIX NFC-e',2);

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

	
	cactux::abre_form();
	
	//CAMPOS
	$cod = cactux::textarea('Números','numero',$_POST[numeros],10,10);
	
	
	//BOTOES
	$inutilizar = cactux::botao_submit('Inutilizar',2,'inutiliza_varios');
	$status = cactux::msg_status('',6);
	
	cactux::abre_fieldset('Filtro de Busca');
	cactux::linha_fieldset($cod,$inicio,$fim,$filtro,$cliente,$numero,$situa);
	cactux::linha_fieldset($inutilizar,$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');
	
	cactux::abre_form('form_inutiliza_todos','','',""); // target=frame_interno

	
	grid::gerar($cabecalho,$valores);

	
	cactux::fecha_form();

	rodape();
	
}

controle();
?>