';
echo mysql_error();
exit;
} else {
$database = mysql_select_db("nfce", $con);
if (!$database) {
echo 'Erro na conexao com o Banco de dados
';
echo mysql_error();
}
}
function substitui($texto)
{
$aFind = array("'");
$aSubs = array('');
$novoTexto = str_replace($aFind, $aSubs, $texto);
return $novoTexto;
}
function salva_log($msg)
{
$fp = fopen("/var/www/html/NFC4/view/libs/arq_log.txt", "a");
$escreve = fwrite($fp, "$msg\r\n");
fclose($fp);
}
function Salva_Nfce_Completa($arq, $con, $codigo_cliente, $ambiente, $tools, $gerarPdf)
{
$amb = ($ambiente == 1 ? 'producao' : 'homologacao');
// xml original e validado
$nfeFile = "/var/www/html/NFC-e/view/nfc/$amb/validadas/$arq.xml";
// retorno da consulta do Recibo
$protFile = "/var/www/html/NFC-e/view/nfc/$amb/temporarias/$arq-recprot.xml";
$docxml = file_get_contents($protFile);
$dom = new DOMDocument(); //cria objeto DOM
$dom->formatOutput = false;
$dom->preserveWhiteSpace = false;
$dom->loadXML($docxml);
$aRet['cStat'] = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
$aRet['xMotivo'] = $dom->getElementsByTagName('xMotivo')->item(1)->nodeValue;
$aRet['bStat'] = true;
if ($aRet['cStat'] == 100) {
//NFe aprovada
$pasta = '/var/www/html/NFC-e/view/nfc/' . $amb . '/enviadas/aprovadas';
}
if ($aRet['cStat'] == 110 || $aRet['cStat'] == 301 || $aRet['cStat'] == 302 || $aRet['cStat'] == 303) {
$pasta = '/var/www/html/NFC-e/view/nfc/' . $amb . '/enviadas/denegadas';
}
if ($aRet['cStat'] > 199) {
//NFe reprovada
$pasta = '/var/www/html/NFC-e/view/nfc/' . $amb . '/enviadas/rejeitadas';
//mover a NFCe para a pasta rejeitada
//rename($nfeFile, $pasta . $data[0] . ".xml");
}
if ($aRet['bStat']) {
//montar a NFe com o protocolo
if (is_file($protFile) && is_file($nfeFile)) {
//se aprovada ou denegada adicionar o protocolo e mover o arquivo
if ($aRet['cStat'] == 100 || $aRet['cStat'] == 110) {
$docnfe = new DOMDocument('1.0', 'utf-8');
$docnfe->formatOutput = false;
$docnfe->preserveWhiteSpace = false;
$xmlnfe = file_get_contents($nfeFile);
if (!$docnfe->loadXML($xmlnfe, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG)) {
$msg = 'O arquivo indicado como NFe não é um XML! ' . $nfeFile;
throw new nfephpException($msg, self::STOP_CRITICAL);
}
$nfe = $docnfe->getElementsByTagName("NFe")->item(0);
if (!isset($nfe)) {
$msg = 'O arquivo indicado como NFe não é um xml de NFe! ' . $nfeFile;
throw new nfephpException($msg, self::STOP_CRITICAL);
}
$infNFe = $docnfe->getElementsByTagName("infNFe")->item(0);
$versao = trim($infNFe->getAttribute("versao"));
$id = trim($infNFe->getAttribute("Id"));
$chave = preg_replace('/[^0-9]/', '', $id);
$DigestValue = !empty($docnfe->getElementsByTagName('DigestValue')->item(0)->nodeValue) ? $docnfe->getElementsByTagName('DigestValue')->item(0)->nodeValue : '';
if ($DigestValue == '') {
$msg = 'O XML da NFe não está assinado! ' . $nfeFile;
throw new nfephpException($msg, self::STOP_CRITICAL);
}
$prot = new DOMDocument('1.0', 'utf-8'); //cria objeto DOM
$prot->formatOutput = false;
$prot->preserveWhiteSpace = false;
$xmlprot = file_get_contents($protFile);
if (!$prot->loadXML($xmlprot, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG)) {
$msg = 'O arquivo indicado para ser protocolado na NFe é um XML! ' . $protFile;
throw new nfephpException($msg, self::STOP_CRITICAL);
}
$protNFe = $prot->getElementsByTagName("protNFe")->item(0);
if (isset($protNFe)) {
$protver = trim($protNFe->getAttribute("versao"));
$tpAmb = $protNFe->getElementsByTagName("tpAmb")->item(0)->nodeValue;
$verAplic = $protNFe->getElementsByTagName("verAplic")->item(0)->nodeValue;
$chNFe = $protNFe->getElementsByTagName("chNFe")->item(0)->nodeValue;
$dhRecbto = $protNFe->getElementsByTagName("dhRecbto")->item(0)->nodeValue;
$nProt = $protNFe->getElementsByTagName("nProt")->item(0)->nodeValue;
$digVal = $protNFe->getElementsByTagName("digVal")->item(0)->nodeValue;
$cStat = $protNFe->getElementsByTagName("cStat")->item(0)->nodeValue;
$xMotivo = $protNFe->getElementsByTagName("xMotivo")->item(0)->nodeValue;
$cMsg = $protNFe->getElementsByTagName("cMsg")->item(0)->nodeValue;
$xMsg = $protNFe->getElementsByTagName("xMsg")->item(0)->nodeValue;
}
$atuData = $dom->getElementsByTagName('dhRecbto')->item(0)->nodeValue;
$newHora = substr($atuData, 11);
$newHora = substr($newHora, 0, 8);
$newData = substr($atuData, 0, 10);
salva_log('Status do protocolo: ' . $cStat);
if (!isset($protNFe)) {
salva_log('O arquivo indicado para ser protocolado a NFe não é um protocolo nem de cancelamento! ' . $protfile);
die;
}
if ($chNFe != $chave) {
salva_log('O protocolo indicado pertence a outra NFe ... os numertos das chaves não combinam !');
die;
}
$procnfe = new DOMDocument('1.0', 'utf-8');
$procnfe->formatOutput = false;
$procnfe->preserveWhiteSpace = false;
$nfeProc = $procnfe->createElement('nfeProc');
$procnfe->appendChild($nfeProc);
$nfeProc_att1 = $nfeProc->appendChild($procnfe->createAttribute('versao'));
$nfeProc_att1->appendChild($procnfe->createTextNode($protver));
$nfeProc_att2 = $nfeProc->appendChild($procnfe->createAttribute('xmlns'));
$nfeProc_att2->appendChild($procnfe->createTextNode('http://www.portalfiscal.inf.br/nfe'));
$node = $procnfe->importNode($nfe, true);
$nfeProc->appendChild($node);
$protNFe = $procnfe->createElement('protNFe');
$nfeProc->appendChild($protNFe);
$protNFe_att1 = $protNFe->appendChild($procnfe->createAttribute('versao'));
$protNFe_att1->appendChild($procnfe->createTextNode($versao));
$infProt = $procnfe->createElement('infProt');
$infProt_att1 = $infProt->appendChild($procnfe->createAttribute('Id'));
$infProt_att1->appendChild($procnfe->createTextNode('ID' . $nProt));
$protNFe->appendChild($infProt);
$infProt->appendChild($procnfe->createElement('tpAmb', $tpAmb));
$infProt->appendChild($procnfe->createElement('verAplic', $verAplic));
$infProt->appendChild($procnfe->createElement('chNFe', $chNFe));
$infProt->appendChild($procnfe->createElement('dhRecbto', $dhRecbto));
$infProt->appendChild($procnfe->createElement('nProt', $nProt));
$infProt->appendChild($procnfe->createElement('digVal', $digVal));
$infProt->appendChild($procnfe->createElement('cStat', $cStat));
$infProt->appendChild($procnfe->createElement('xMotivo', $xMotivo));
if ($cMsg > 0) {
$infProt->appendChild($procnfe->createElement('cMsg', $cMsg));
$infProt->appendChild($procnfe->createElement('xMsg', $xMsg));
}
$procXML = $procnfe->saveXML();
//salvar a NFe com o protocolo na pasta
$procXML = str_replace('default:', '', $procXML);
$procXML = str_replace(':default', '', $procXML);
$procXML = str_replace("\n", '', $procXML);
$procXML = str_replace("\r", '', $procXML);
$procXML = str_replace("\s", '', $procXML);
$procXML = str_replace('NFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns="http://www.w3.org/2000/09/xmldsig#"', 'NFe xmlns="http://www.portalfiscal.inf.br/nfe"', $procXML);
$Destino = $pasta . '/' . $arq . '.xml';
salva_log($Destino);
salva_log($procXML);
// Gravando a nota OK
if ($cStat == 100) {
// salvando o arquivo na pasta
file_put_contents($Destino, $procXML);
// arquivo salvo na pasta
// Atualizando o Status da NOTA
$sql = "UPDATE nfce.nota_fiscal SET status_nota='o', sinc_parceiro='N' WHERE num_nota= '$arq'";
$qry = mysql_query($sql, $con) or die("Erro SQL: $sql");
// INSERT INTO `nfce`.`info_notas` (`id`, `danfe`, `protocolo`, `recibo`, `xml_sign`, `xml_ret`, `xml_event_canc`, `xml_carta_correcao`, `tipo_nota`, `ambiente`, `verif_inexistente`, `motivo_erro_inativacao`, `motivo_rejeicao`, `data_hora_envio`) VALUES (40, '35220415095614000171550010000002441903263038', '135220536106315', NULL, '3590326303VENDA DE MERCADORIA5512442022-04-26T13:28:37-03:002022-04-26T13:57:38-03:001135522051181101003.0.215095614000171A. A. ESPINOZA CENTRO AUTOMOTIVOAV IPANEMA4645ANEXO IIJARDIM NOVO HORIZONTE3552205SOROCABASP180718011058BRASIL1534424552669680558110ISENTO4530703130885010000112MIXOIL INDUSTRIA E COMERCIO DE LUBRIFICANTES LTDAAVENIDA AVENIDA DO TRABALHADOR2821QUADRA 06 LOTE 11CENTRO EMPRESARIAL CASTELO BRANCO3507001BOITUVASP185521001058BRASIL153199945812191195011180559303000017219733838SEM GTINPASTILHA DIANT870830905405JOGO1145.0000145.00SEM GTINJOGO1145.0000157.7001029995399145.000.000.0099145.000.000.000.000.000.000.000.000.000.000.000.000.000.00145.000.000.000.000.000.000.000.000.000.00145.0057.7091CAIXA0.0000.00003145.002DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL NAO GERA DIREITO A CREDITO FISCAL DE IPI - PECAS 90 DIAS DE GARANTIA STRADA PLACA QPG3G9813117948000173WebControl Empresasfinanceiro@webcontrolempresas.com.br4132071744X75IlLUIC9gn0NIJOkLBnXVi7NY=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1SP_NFE_PL009_V4352204150956140001715500100000024419032630382022-04-26T13:28:38-03:00135220536106315X75IlLUIC9gn0NIJOkLBnXVi7NY=100Autorizado o uso da NF-e', '3590326303VENDA DE MERCADORIA5512442022-04-26T13:28:37-03:002022-04-26T13:57:38-03:001135522051181101003.0.215095614000171A. A. ESPINOZA CENTRO AUTOMOTIVOAV IPANEMA4645ANEXO IIJARDIM NOVO HORIZONTE3552205SOROCABASP180718011058BRASIL1534424552669680558110ISENTO4530703130885010000112MIXOIL INDUSTRIA E COMERCIO DE LUBRIFICANTES LTDAAVENIDA AVENIDA DO TRABALHADOR2821QUADRA 06 LOTE 11CENTRO EMPRESARIAL CASTELO BRANCO3507001BOITUVASP185521001058BRASIL153199945812191195011180559303000017219733838SEM GTINPASTILHA DIANT870830905405JOGO1145.0000145.00SEM GTINJOGO1145.0000157.7001029995399145.000.000.0099145.000.000.000.000.000.000.000.000.000.000.000.000.000.00145.000.000.000.000.000.000.000.000.000.00145.0057.7091CAIXA0.0000.00003145.002DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL NAO GERA DIREITO A CREDITO FISCAL DE IPI - PECAS 90 DIAS DE GARANTIA STRADA PLACA QPG3G9813117948000173WebControl Empresasfinanceiro@webcontrolempresas.com.br4132071744X75IlLUIC9gn0NIJOkLBnXVi7NY=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1SP_NFE_PL009_V4352204150956140001715500100000024419032630382022-04-26T13:28:38-03:00135220536106315X75IlLUIC9gn0NIJOkLBnXVi7NY=100Autorizado o uso da NF-e', '', NULL, 'venda', 1, 'S', NULL, NULL, '2022-04-26 13:28:38');
// Check if the $chave exists in the nfce.info_notas table
// $sql = "SELECT * FROM nfce.info_notas WHERE chave = '$chave'";
// $result = mysql_query($con, $sql);
// if (mysqli_num_rows($result) > 0) {
// // Update the existing record
// $sql = "UPDATE nfce.info_notas SET status = '$status' WHERE chave = '$chave'";
// mysqli_query($con, $sql);
// } else {
// // Insert a new record
// $sql = "INSERT INTO nfce.info_notas (chave, status) VALUES ('$chave', '$status')";
// mysqli_query($con, $sql);
// }
//$PesqRecibo->atualizaStatusNF($bb['num_nota'], $newHora, $newData);
//Carrega o endereco de envio do qrCode
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$gerarPdf->gerarPdfNotaFiscalCons($bb['num_nota'], $contingencia = "nao", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
} else {
// Nota rejeitada
$PesqRecibo->alterarStatusNota($estado = 'r', $bb['num_nota']);
}
} else {
/*
// REJEICAO
$prot = new DOMDocument('1.0', 'utf-8'); //cria objeto DOM
$prot->formatOutput = false;
$prot->preserveWhiteSpace = false;
$xmlprot = file_get_contents($protFile);
if (!$prot->loadXML($xmlprot, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG)) {
echo $msg = 'O arquivo indicado para ser protocolado na NFe é um XML! ' . $protFile;
}
$protNFe = $prot->getElementsByTagName("protNFe")->item(0);
if (isset($protNFe)) {
$protver = trim($protNFe->getAttribute("versao"));
$tpAmb = $protNFe->getElementsByTagName("tpAmb")->item(0)->nodeValue;
$verAplic = $protNFe->getElementsByTagName("verAplic")->item(0)->nodeValue;
$chNFe = $protNFe->getElementsByTagName("chNFe")->item(0)->nodeValue;
$dhRecbto = $protNFe->getElementsByTagName("dhRecbto")->item(0)->nodeValue;
$nProt = $protNFe->getElementsByTagName("nProt")->item(0)->nodeValue;
$digVal = $protNFe->getElementsByTagName("digVal")->item(0)->nodeValue;
$bStat = $protNFe->getElementsByTagName("cStat")->item(0)->nodeValue;
$xMotivo = $protNFe->getElementsByTagName("xMotivo")->item(0)->nodeValue;
}
if ( $bStat == 204 ){
// duplicidade da nota
$ini = strpos($xMotivo, '[nRec:') + 6;
$iniC = strpos($xMotivo, '[chNFe:') + 7;
$recibo = substr($xMotivo, $ini,15 );
$Chave = substr($xMotivo, $iniC,44 );
$nPedido = substr($Chave,35,8);
if ( $nPedido == $pedido){
// salva o retorno no arqivo correto e exclui o registro do banco 'nfce.notas_fical'
// Buscando dados do cliente
$sql = "SELECT * FROM certificadoscliente.certificado where cod_cliente = $codigo_cliente";
$qry = mysql_query($sql,$con);
$cnpj = mysql_result($qry,0,'cnpj');
$senha = mysql_result($qry,0,'senha');
//echo "diverge";
$sql = "SELECT * FROM certificadosclientes.certificado where cod_cliente = $codigo_cliente";
$qry = mysql_query($sql,$con);
$uf = mysql_result($qry,0,'uf');
$cnpj = mysql_result($qry,0,'cnpj');
$senha = mysql_result($qry,0,'senha');
$dados = "http://10.2.2.133/nfe/nfeController.php?tipo=NFC&acao=sefazConsultaRecibo&uf=$uf&amb=1&cnpj=$cnpj&recibo=$recibo&senha=$senha&idcadastro=$codigo_cliente";
echo "[$dados]";
$handle = @fopen($dados, "rb") or die("ERRO AO LOCALIZAR O PROVEDORA DA CONSULTA SINISTRO ");
if ($handle) {
$conteudo = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0)
break;
$conteudo .= $data;
}while (true);
fclose($handle);
}
echo $conteudo = trim($conteudo);
die;
file_put_contents($protFile, $conteudo);
// chama novamente para correcao
Salva_Nfce_Completa($arquivo,$con,$codigo_cliente);
}else{
echo "diverge";
}
}
else{
echo "OUTRO ERRO: [$bStat]";
}*/
}
} //endif is_file
} //endif bStat
}
/*=================================================
Pesquisa na pasta enviadas e insere o protocolo,
estando ok remove para a pasta aprovada e deleta da
pasta temporaria, em caso de rejeicao insere na pasta
rejeitada e remove da temporaria, nao tendo resposta
do sefaz nao faz nada e aguarda.
====================================================*/
$gerarPdf = new montaPdf;
$PesqRecibo = new pesquisaRecibo;
$layout = new Formatar;
$changeXml = new atualizaXml;
$gerarUtcConti = new MontarData;
$pesquisarContin = new montaNotaEnvio;
$totalPago = 0;
$cliente = $_SESSION['idCliente'];
// Verificando a Baixando a Logomarca do Cliente.
if (!file_exists("/var/www/html/logomarca/logomarca_$cliente.jpg")) {
$disparar2 = shell_exec("wget https://www.webcontrolempresas.com.br/erp/logomarca/$cliente/logomarca_$cliente.jpg -P /var/www/html/logomarca/");
print $disparar2;
$pathFile = "/var/www/html/logomarca/";
$disparar3 = shell_exec("mv /var/www/html/logomarca/logomarca_$cliente.jpg /var/www/html/logomarca/logomarca_$cliente.jpg");
print $disparar3;
}
// receber o codigo do emitente da nota //
$id_parceiro = "0";
// Verificando a Validade do Certificado
if ($tools->certDaysToExpire > 0) {
if ($tools->certDaysToExpire > 365) {
$dias = round($tools->certDaysToExpire / 10, 0);
} else {
$dias = $tools->certDaysToExpire;
}
$certVal = $dias;
} else {
$certVal = "0";
}
$pesqCliente = $PesqRecibo->pesquisaCliente($_SESSION['idCliente']);
// verifica notas em CONTINGENCIA
$queryCont = $pesquisarContin->pesquisaArquivoContin($_SESSION['idCliente'], $_SESSION['Ambiente']);
$arqExistCont = mysql_num_rows($queryCont);
$uf = $acesso->pesquisaUf($_SESSION['idCliente']);
if ($arqExistCont > 0) {
for ($ini = 0; $ini < $arqExistCont; $ini++) {
while ($resultPesq = mysql_fetch_array($queryCont)) {
$pesqCliente = $PesqRecibo->pesquisaCliente($_SESSION['idCliente']);
$resp = $tools->statusServico($uf, $pesqCliente['ambiente']);
if ($resp['cStat'] == "107") {
$dirArqXml = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/validadas/" . $resultPesq['num_nota'] . ".xml";
$dirArqSecu = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/enviadas/" . $resultPesq['num_nota'] . ".xml";
// Atualiza base de dados
$pesquisarContin->atualizaStatusContin($status = 'e', $resultPesq['num_nota']);
// Move arquivo para a pasta validadas
$pesquisarContin->moverXmlPastEntrada($resultPesq['num_nota']);
// REENVIANDO NOTAS
$tools->autoEnvNFe($_SESSION['idCliente'], $resultPesq['num_nota']);
$protFile = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $resultPesq['num_nota'] . "-rec.xml";
$docxml = file_get_contents($protFile);
if ($_SESSION['idCliente'] == 74514) {
print_r($docxml);
die;
}
$dom = new DOMDocument(); //cria objeto DOM
$dom->formatOutput = false;
$dom->preserveWhiteSpace = false;
$aa = $dom->loadXML($docxml);
@$verificFirst = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
@$verificSecund = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
if (!empty($verificFirst)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
} else if (!empty($verificSecund)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
}
$atuData = $dom->getElementsByTagName('dhRecbto')->item(0)->nodeValue;
$newHora = substr($atuData, 11);
$newHora = substr($newHora, 0, 8);
$newData = substr($atuData, 0, 10);
$dirArqProtRej = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $resultPesq['num_nota'] . "-rec.xml";
$arqRecProtRej = file_get_contents($dirArqProtRej);
switch (true) {
case $validarCstat == "100":
$tes = $tools->autoProtNFe($resultPesq['num_nota']);
if ($tes == "110" || $tes == "301" || $tes == "302") { // Denegada
$PesqRecibo->atualizarEstadoNota($estado = 'd', $resultPesq['num_nota'], $newHora, $newData);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $_SESSION['idCliente'], $codStatus = '7');
} else if ($tes == "100") {
$PesqRecibo->atualizaStatusNF($resultPesq['num_nota'], $newHora, $newData);
$pesquisarContin->moverPdfContindencia($resultPesq['num_nota']);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $_SESSION['idCliente'], $codStatus = '5');
}
break;
case $validarCstat == "110":
$PesqRecibo->alterarStatusNota($estado = "d", $resultPesq['num_nota']);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $resultPesq['AA'], $codStatus = '7');
break;
case $validarCstat == "301":
$PesqRecibo->alterarStatusNota($estado = "d", $resultPesq['num_nota']);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $resultPesq['AA'], $codStatus = '7');
break;
case $validarCstat == "302":
$PesqRecibo->alterarStatusNota($estado = "d", $resultPesq['num_nota']);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $resultPesq['AA'], $codStatus = '7');
break;
case $validarCstat >= "201":
$PesqRecibo->alterarStatusNota($estado = "r", $resultPesq['num_nota']);
$PesqRecibo->statusNota($resultPesq['numero_pedido'], $resultPesq['AA'], $codStatus = '8');
if (file_exists($dirArqXml)) {
$arqXml = file_get_contents($dirArqXml);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($resultPesq['AA'], $resultPesq['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $resultPesq['num_nota'] . ".xml";
rename($dirArqXml, $caminho);
$pesquisarContin->removePdfRejeicao($resultPesq['num_nota']);
} else if (file_exists($dirArqSecu)) {
$arqXml = file_get_contents($dirArqSecu);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($resultPesq['AA'], $resultPesq['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $resultPesq['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
$pesquisarContin->removePdfRejeicao($resultPesq['num_nota']);
}
break;
}
}
}
}
}
/*
* Tipos de retorno da estado da nota para o WebControl:
* 2 = contingencia
* 5 = ok
* 6 = falha
* 7 = denegada
* 8 = rejeitada
*/
// Verificando se realmente os dados foram gravados para geracao da nota
$query = $PesqRecibo->PesqStatusNotaLuciano($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
$soma = $PesqRecibo->PesqTotalNotas($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
$resuSeqNota = $PesqRecibo->pesqUltimaSequenNota($_SESSION['idCliente'], $_SESSION['Ambiente']);
$resuTotal = 1;
// Localizando o Valor Total Pago e se Tem Troco para anexar no PDF, pois no XML
// da SEFA não pode conter essas informacoes
$totais_troco = $PesqRecibo->PesqDadosNota($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
while ($t = mysql_fetch_array($totais_troco)) {
$vlr_total_pago = $t['vlr_total_pago'];
$vlr_troco = $t['vlr_troco'];
}
for ($b = 0; $b < $resuTotal; $b++) {
while ($bb = mysql_fetch_array($query)) {
$dirArqXml = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/validadas/" . $bb['num_nota'] . ".xml";
$dirArqSecu = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/enviadas/" . $bb['num_nota'] . ".xml";
$dirArqProt = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $bb['num_nota'] . "-rec.xml";
$arqRecprot = file_get_contents($dirArqProt);
if ($bb['AA'] == $_SESSION['idCliente']) {
// Verificando se a Nota já foi processada
$protFile = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $bb['num_nota'] . "-rec.xml";
if (!file_exists($protFile)) :
if (file_exists($dirArqSecu)) :
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/validadas/" . $bb['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
endif;
$tools->ReenvNFe($bb['num_nota']);
endif;
$docxml = file_get_contents($protFile);
$dom = new DOMDocument(); //cria objeto DOM
$dom->formatOutput = false;
$dom->preserveWhiteSpace = false;
$aa = $dom->loadXML($docxml);
}
@$verificFirst = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
@$verificSecund = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
if (!empty($verificFirst)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
} else if (!empty($verificSecund)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
}
if ($validarCstat == "100") :
$exist = $tools->pesqValidada($bb['num_nota']);
if ($exist == 1) :
$oldPath = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/validadas/" . $bb['num_nota'] . ".xml";
$newPath = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/enviadas/" . $bb['num_nota'] . ".xml";
rename($oldPath, $newPath);
endif;
endif;
$atuData = $dom->getElementsByTagName('dhRecbto')->item(0)->nodeValue;
$newHora = substr($atuData, 11);
$newHora = substr($newHora, 0, 8);
$newData = substr($atuData, 0, 10);
switch (true) {
case $validarCstat == "100":
$tes = $tools->autoProtNFe($bb['num_nota']);
if ($tes == "110" || $tes == "301" || $tes == "302") {
// NOTA DENEGADA
$PesqRecibo->atualizarEstadoNota($estado = 'd', $bb['num_nota'], $newHora, $newData);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '7');
} else if ($tes == "100") {
// NOTA OK
if ($bb['num_nota'] == $_SESSION['notaFiscal']) {
$PesqRecibo->atualizaStatusNF($bb['num_nota'], $newHora, $newData);
//Carrega o endere�o de envio do qrCode
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$gerarPdf->gerarPdfNotaFiscalCons($bb['num_nota'], $contingencia = "nao", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
} else {
$PesqRecibo->alterarStatusNota($estado = 'o', $bb['num_nota']);
}
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '5');
}
break;
case $validarCstat == "103": // Lote recebido com Sucesso
// Verificando se o lote foi aceito ou nao "nota OK ou REJEITADA
$numeroRecibo = $dom->getElementsByTagName('nRec')->item(0)->nodeValue;
$modSOAP = '2'; //usando cURL
@$recibo = $numeroRecibo;
$chave = '';
$tpAmb = $_SESSION['Ambiente'];
//Gera o arquivo -recprot.xml do andamento da nf
// Verifica o STATUS do recibo
$aRet = $tools->getProtocol($recibo, $chave, $tpAmb, $modSOAP, $bb['num_nota']);
$cStat = $aRet['aProt'][0]['cStat'];
$xmlRetorno = $aRet['xmlRetorno'];
if ($cStat == 100) { // Autorizado o uso da NFCe
Salva_Nfce_Completa($bb['num_nota'], $con, $_SESSION['idCliente'], $tpAmb, $tools, $gerarPdf);
}
if ($cStat == 110 || $cStat == 301 || $cStat == 302 || $cStat == 303) {
Salva_Nfce_Completa($bb['num_nota'], $con, $_SESSION['idCliente'], $tpAmb, $tools, $gerarPdf);
} else if ($cStat == 105) { // Lote em processamento
// Espero 3 segundos para fazer o segundo envio.
sleep(3);
$tes = $tools->autoProtNFe($bb['num_nota']);
if ($tes == "110" || $tes == "301" || $tes == "302") { // Denegada
$PesqRecibo->atualizarEstadoNota($estado = 'd', $bb['num_nota'], $newHora, $newData);
} else if ($tes == "100") {
$PesqRecibo->atualizaStatusNF($bb['num_nota'], $newHora, $newData);
$pesquisarContin->moverPdfContindencia($bb['num_nota']);
} else {
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
if (file_exists($dirArqXml)) {
$arqXml = file_get_contents($dirArqXml);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqXml, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
} else if (file_exists($dirArqSecu)) {
$arqXml = file_get_contents($dirArqSecu);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
}
}
} else if ($cStat >= 106) {
// Rejeição: NFC-e com CFOP inválido [nItem:nnn]
$protFile = '/var/www/html/NFC-e/view/nfc/' . $_SESSION['Arquivo'] . '/temporarias/' . $bb['num_nota'] . '-recprot.xml';
$docxml = file_get_contents($protFile);
$dom = new DOMDocument(); //cria objeto DOM
$dom->formatOutput = false;
$dom->preserveWhiteSpace = false;
$dom->loadXML($docxml);
$uf = $dom->getElementsByTagName('cUF')->item(0)->nodeValue;
$protNFe = $dom->getElementsByTagName("protNFe")->item(0);
$infProt = $protNFe->getElementsByTagName("infProt")->item(0);
if (isset($protNFe) && isset($infProt)) {
$protver = trim($infProt->getAttribute("versao"));
$tpAmb = $infProt->getElementsByTagName("tpAmb")->item(0)->nodeValue;
$verAplic = $infProt->getElementsByTagName("verAplic")->item(0)->nodeValue;
$chNFe = $infProt->getElementsByTagName("chNFe")->item(0)->nodeValue;
$dhRecbto = $infProt->getElementsByTagName("dhRecbto")->item(0)->nodeValue;
$cStat = $infProt->getElementsByTagName("cStat")->item(0)->nodeValue;
$xMotivo = $infProt->getElementsByTagName("xMotivo")->item(0)->nodeValue;
} else {
die('Erro ao receber protocolo');
}
$xml = "
$tpAmb
$verAplic
$cStat
$xMotivo
$uf
$dhRecbto
";
$arq = '/var/www/html/NFC-e/view/nfc/producao/temporarias/' . $bb['num_nota'] . '-rec.xml';
file_put_contents($arq, $xml);
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
}
break;
case $validarCstat == "104":
// LOTE PROCESSADO, DEVEMOS CONSULTAR NOVAMENTE
$numeroRecibo = $dom->getElementsByTagName('nProt')->item(0)->nodeValue;
$modSOAP = '2'; //usando cURL
@$recibo = $numeroRecibo;
$chave = '';
$tpAmb = $_SESSION['Ambiente']; //homologação ou producao
$tools->getProtocol($recibo, $chave, $tpAmb, $modSOAP, $bb['num_nota']);
break;
case $validarCstat == "105": // Lote em processamento
$numeroRecibo = $dom->getElementsByTagName('nProt')->item(0)->nodeValue;
$modSOAP = '2'; //usando cURL
@$recibo = $numeroRecibo;
$chave = '';
$tpAmb = $_SESSION['Ambiente']; //homologação ou producao
$tools->getProtocol($recibo, $chave, $tpAmb, $modSOAP, $bb['num_nota']);
break;
case $validarCstat == "106":
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '8');
if ($_SESSION['Arquivo'] == "producao") {
$sequen = $PesqRecibo->pesquisaSequencia('P');
if ($resuSeqNota == $sequen) {
$PesqRecibo->decrementaSequencia($sequen, 'P');
}
} else {
$sequen = $PesqRecibo->pesquisaSequencia('H');
if ($resuSeqNota == $sequen) {
$PesqRecibo->decrementaSequencia($sequen, 'H');
}
}
break;
case $validarCstat == "108":
/* * **********************************
Verifica se a nota que entrou em contingencia e' a que o usuario esta emitindo
* ********************************** */
if ($bb['num_nota'] == $_SESSION['notaFiscal']) {
/*
Remover dentro da tag infNFe o id e a vers�o.
Gera o novo danfe, usando os
dados da nota emitida, numero_pedido e sequencia
*/
$changeXml->removerAssinatura($bb['num_nota']);
sleep(1);
$changeXml->atualizaXmlUsuario($bb['num_nota']);
$partesDanfe = $PesqRecibo->pesquisaCliente($_SESSION['idCliente']);
$solicitaDados = $changeXml->pesquisaNotaContingencia($bb['num_nota']);
/* Gerar o danfe da nota em contingencia */
$changeXml->gerarDanfeContin($partesDanfe['cod_uf'], $partesDanfe['cnpj'], $solicitaDados['sequencia'], $solicitaDados['numero_pedido'], $bb['num_nota']);
/*
Insere as tags dhCont e xJust. Atualiza
a base de dados o horario e o status_nota
para "co" contingencia.
Remover o arquivo para a pasta "Contingencia".
*/
$aUFhv = $gerarUtcConti->geraDataeHora($partesDanfe['cod_uf']);
$structUtcCont = $gerarUtcConti->montarUtc($aUFhv);
$changeXml->inserirTagXml($bb['num_nota'], $structUtcCont);
$tools->asignNFcCont($_SESSION['notaFiscal']);
$changeXml->atualizarBdNota($bb['num_nota']);
$changeXml->moveXmlContingencia($bb['num_nota'], $origem = "validadas", $destino = "contingencia");
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '2');
//Carrega o endere�o de envio do qrCode
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
// O token pode ser |CNPJ BASE (8 PRIMEIROS NUMEROS) + ANO + IdToken (000001 ou 000002)|
$gerarPdf->gerarPdfNotaFiscalCons($bb['num_nota'], $contingencia = "yes", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
} else {
$PesqRecibo->alterarStatusNota($estado = 'co', $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '2');
$changeXml->moveXmlContingencia($bb['num_nota'], $origem = "validadas", $destino = "contingencia");
}
break;
case $validarCstat == "109":
/* * **********************************
Verifica se a nota que entrou em
contingencia � a que o usu�rio est�
emitindo
* ********************************** */
if ($bb['num_nota'] == $_SESSION['notaFiscal']) {
$changeXml->removerAssinatura($bb['num_nota']);
sleep(1);
$changeXml->atualizaXmlUsuario($bb['num_nota']);
$partesDanfe = $PesqRecibo->pesquisaCliente($_SESSION['idCliente']);
$solicitaDados = $changeXml->pesquisaNotaContingencia($bb['num_nota']);
/* Gerar o danfe da nota em contingencia */
$changeXml->gerarDanfeContin($partesDanfe['cod_uf'], $partesDanfe['cnpj'], $solicitaDados['sequencia'], $solicitaDados['numero_pedido'], $bb['num_nota']);
/* * ********************************************
Insere as tags dhCont e xJust. Atualiza
a base de dados o horario e o status_nota
para "co" contingencia.
Remover o arquivo para a pasta "Contingencia".
* ******************************************** */
$aUFhv = $gerarUtcConti->geraDataeHora($partesDanfe['cod_uf']);
$structUtcCont = $gerarUtcConti->montarUtc($aUFhv);
$changeXml->inserirTagXml($bb['num_nota'], $structUtcCont);
$tools->asignNFcCont($_SESSION['notaFiscal']);
$changeXml->atualizarBdNota($bb['num_nota']);
$changeXml->moveXmlContingencia($bb['num_nota'], $origem = "validadas", $destino = "contingencia");
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '2');
//Carrega o endere�o de envio do qrCode
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
// O token pode ser |CNPJ BASE (8 PRIMEIROS NUMEROS) + ANO + IdToken (000001 ou 000002)|
$gerarPdf->gerarPdfNotaFiscalCons($bb['num_nota'], $contingencia = "yes", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
} else {
$PesqRecibo->alterarStatusNota($estado = 'co', $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '2');
$changeXml->moveXmlContingencia($bb['num_nota'], $origem = "validadas", $destino = "contingencia");
}
break;
case $validarCstat == "110":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat == "301":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat == "302":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat >= "201":
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '8');
if (file_exists($dirArqXml)) {
$arqXml = file_get_contents($dirArqXml);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecprot);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqXml, $caminho);
} else if (file_exists($dirArqSecu)) {
$arqXml = file_get_contents($dirArqSecu);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecprot);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
}
break;
default:
$tools->autoEnvNFe($_SESSION['idCliente'], $resultPesq['numero_pedido']);
$protFile = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $bb['num_nota'] . "-rec.xml";
$docxml = file_get_contents($protFile);
$dom = new DOMDocument(); //cria objeto DOM
$dom->formatOutput = false;
$dom->preserveWhiteSpace = false;
$aa = $dom->loadXML($docxml);
@$verificFirst = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
@$verificSecund = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
if (!empty($verificFirst)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(1)->nodeValue;
} else if (!empty($verificSecund)) {
$validarCstat = $dom->getElementsByTagName('cStat')->item(0)->nodeValue;
}
$atuData = $dom->getElementsByTagName('dhRecbto')->item(0)->nodeValue;
$newHora = substr($atuData, 11);
$newHora = substr($newHora, 0, 8);
$newData = substr($atuData, 0, 10);
$dirArqProtRej = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/temporarias/" . $bb['num_nota'] . "-rec.xml";
$arqRecProtRej = file_get_contents($dirArqProtRej);
switch (true) {
case $validarCstat == "100":
$tes = $tools->autoProtNFe($bb['num_nota']);
if ($tes == "110" || $tes == "301" || $tes == "302") { // Denegada
$PesqRecibo->atualizarEstadoNota($estado = 'd', $bb['num_nota'], $newHora, $newData);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '7');
} else if ($tes == "100") {
$PesqRecibo->atualizaStatusNF($bb['num_nota'], $newHora, $newData);
$pesquisarContin->moverPdfContindencia($bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '5');
} else {
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $_SESSION['idCliente'], $codStatus = '8');
if (file_exists($dirArqXml)) {
$arqXml = file_get_contents($dirArqXml);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqXml, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
} else if (file_exists($dirArqSecu)) {
$arqXml = file_get_contents($dirArqSecu);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
}
}
break;
case $validarCstat == "110":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat == "301":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat == "302":
$PesqRecibo->alterarStatusNota($estado = "d", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '7');
break;
case $validarCstat >= "201":
$PesqRecibo->alterarStatusNota($estado = "r", $bb['num_nota']);
$PesqRecibo->statusNota($bb['numero_pedido'], $bb['AA'], $codStatus = '8');
if (file_exists($dirArqXml)) {
$arqXml = file_get_contents($dirArqXml);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqXml, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
} else if (file_exists($dirArqSecu)) {
$arqXml = file_get_contents($dirArqSecu);
$arqXmlAlter = substitui($arqXml);
$xmlReturn = substitui($arqRecProtRej);
$PesqRecibo->InserirLog($bb['AA'], $bb['numero_pedido'], $arqXmlAlter, $xmlReturn, "enviarRecibo");
$caminho = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/rejeitadas/" . $bb['num_nota'] . ".xml";
rename($dirArqSecu, $caminho);
$pesquisarContin->removePdfRejeicao($bb['num_nota']);
}
break;
}
break;
}
} // While
} // For
$queryCont = $PesqRecibo->pesqNotaContingencia($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
$arqExistCont = mysql_num_rows($queryCont);
if ($arqExistCont > 0) {
while ($resultPesq = mysql_fetch_array($queryCont)) {
$checkArq = $tools->pesqPdfCont($resultPesq['num_nota']);
// if ($checkArq == true) {
//} else {
$addressEnvio = $tools->addressQrCode();
$addressEnvioEnd = $addressEnvio['NfeConsultaQR']['URL'];
$addressConsultation = $addressEnvio['CadConsultaCadastro']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$gerarPdf->gerarPdfNotaFiscalCons($resultPesq['num_nota'], $contingencia = "yes", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvioEnd, $addressConsultation, $vlr_total_pago, $vlr_troco);
//}
}
}
$PesqRecibo = new pesquisaRecibo();
$layout = new Formatar();
$soma = $PesqRecibo->PesquisaEmail($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
$arqExistEmail = mysql_num_rows($soma);
$query = $PesqRecibo->PesquisaAndamento($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
$totalRegistro = mysql_num_rows($query);
if ($totalRegistro > 0) {
while ($aa = mysql_fetch_array($query)) {
if ($aa['status_nota'] == 'co') {
$arquivo = "http://nfe.webcontrolempresas.com.br/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/pdf/pdfContingencia/" . $aa['num_nota'] . ".pdf";
if ($_SESSION['typeRequest'] != 'local') {
echo " ";
die;
}
} else if ($aa['status_nota'] == 'o') {
$PesqRecibo->statusNota($aa['num_nota'], $_SESSION['idCliente'], $codStatus = '5');
// verificando se o arquivo nao existe
$arqPdfRemove = "/var/www/html/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/pdf/" . $aa['num_nota'] . ".pdf";
if (!file_exists($arqPdfRemove)) {
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$gerarPdf->gerarPdfNotaFiscalCons($_SESSION['notaFiscal'], $contingencia = "nao", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
}
$arquivo = "http://nfe.webcontrolempresas.com.br/NFC-e/view/nfc/" . $_SESSION['Arquivo'] . "/pdf/" . $aa['num_nota'] . ".pdf";
if ($_SESSION['typeRequest'] != 'local') {
echo " ";
die;
}
} else if ($aa['status_nota'] == 'r') {
$arquivo = "http://nfe.webcontrolempresas.com.br/NFC-e/view/mostraErros.php?numeroNota=$aa[num_nota]&ambiente=$_SESSION[Arquivo]";
if ($_SESSION['typeRequest'] != 'local') {
echo " ";
die;
}
} else if ($aa['status_nota'] == 'd') {
echo '999;Nota Denegada. Motivo: Irregularidade fiscal do emitente ou do destinatário';
die;
}
}
} else {
$layout->size(240);
$layout->tamanho(40);
$layout->imagem("layout/imagem/nenhumRegistro.png", "0");
}
$resultPdfver = $PesqRecibo->PesqPdfOk($_SESSION['notaFiscal'], $_SESSION['Ambiente']);
while ($PdfExist = mysql_fetch_array($resultPdfver)) {
$arqPdfRemove = $tools->pesqPdf($PdfExist['num_nota']);
if (!$arqPdfRemove == true) {
$tt = $tools->addressQrCode();
$addressEnvio = $tt['NfeConsultaQR']['URL'];
$addressConsultation = $tt['CadConsultaCadastro']['URL'];
$resultToken = $gerarPdf->pesquisaToken($_SESSION['idCliente']);
$gerarPdf->gerarPdfNotaFiscalCons($_SESSION['notaFiscal'], $contingencia = "nao", $resultToken['num_sequencia'], $resultToken['cod_token'], $addressEnvio, $addressConsultation, $vlr_total_pago, $vlr_troco);
}
}
if ($pedido == '92252480') {
die();
}