'; 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=MOE9dcxUxH2XBU8ViM45NnV4AtR4iYNbFWzI/JpGdi+64GC+j0VLlr0c2o47tQWoc0+uB40DYbRrWamLsw/YLJASmNerNqubYIGC4DfzMwWcoiHIQ+fQa1yjTQSeoGOVZd7zUsmemyPxeNCpFs91KSwUoBCK29Rb3WTg1NWNC9TaJMrkU7oy51xdtLgNbyHVtD8kf7g/i7Yg/erXydyn9JHrGTyskSXj+1TWYVEC3RIwj3T9yHjDkRD5YzNsNhDxZPXtcwYqzO1LFYQCk+XknVcCIf+vPMDJLIwRlrvGSrqyCQ7ztk5mYOKIxAZ42lCS/lXaOg4GWMs/YoJ2QBUoqg==MIIHRDCCBSygAwIBAgIIcl4hCSJan3owDQYJKoZIhvcNAQELBQAwWTELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxFTATBgNVBAsTDEFDIFNPTFVUSSB2NTEeMBwGA1UEAxMVQUMgU09MVVRJIE11bHRpcGxhIHY1MB4XDTIxMDkyMjE4MTYwMFoXDTIyMDkyMjE4MTYwMFowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMQswCQYDVQQIEwJTUDERMA8GA1UEBxMIU29yb2NhYmExHjAcBgNVBAsTFUFDIFNPTFVUSSBNdWx0aXBsYSB2NTEXMBUGA1UECxMOMjczNzQ2ODgwMDAxMjYxEzARBgNVBAsTClByZXNlbmNpYWwxGjAYBgNVBAsTEUNlcnRpZmljYWRvIFBKIEExMTswOQYDVQQDEzJBIEEgRVNQSU5PWkEgQ0VOVFJPIEFVVE9NT1RJVk8gTFREQToxNTA5NTYxNDAwMDE3MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIHQkIhQecSIweQPVL//0CumQHssYjJXkoBl2CNh3q54I6truh0DTXQX13pZnpoPu3vWZCzbioeSOwCiSki5QCy/wzOYxxjwKUEz9ulxthrwJpq/aQ7BiOYDkPHylUpLmar4qkGIaBaSQOuAeV7F/Q3L+L7EzWau4oTkvIzPNJUUcb6Ma5TuzAlidqYYakSK8SkA87RYiFfgGCHURqLn/0snenE8mbhuKW0dNS8zhgl/kSrdQXjsvf4zDUWUPf/aIzl6V00RSJUlSVdB0ddss3AmOUrHFjIo5S6EDXJlaxPoCc+MoIBLpWJxGIZ+eDQZsef4/iOJ5PewI+OfBWIhQfMCAwEAAaOCAn0wggJ5MAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUxVLtJYAJ35yCyJ9Hxt20XzHdubEwVAYIKwYBBQUHAQEESDBGMEQGCCsGAQUFBzAChjhodHRwOi8vY2NkLmFjc29sdXRpLmNvbS5ici9sY3IvYWMtc29sdXRpLW11bHRpcGxhLXY1LnA3YjCBuAYDVR0RBIGwMIGtgRZmaXJlcG5ldXNAdGVycmEuY29tLmJyoCUGBWBMAQMCoBwTGkFOVE9OSU8gQVBBUkVDSURPIEVTUElOT1pBoBkGBWBMAQMDoBATDjE1MDk1NjE0MDAwMTcxoDgGBWBMAQMEoC8TLTI4MDExOTY2MDgxODIxNzg4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMKAXBgVgTAEDB6AOEwwwMDAwMDAwMDAwMDAwXQYDVR0gBFYwVDBSBgZgTAECASYwSDBGBggrBgEFBQcCARY6aHR0cDovL2NjZC5hY3NvbHV0aS5jb20uYnIvZG9jcy9kcGMtYWMtc29sdXRpLW11bHRpcGxhLnBkZjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgYwGA1UdHwSBhDCBgTA+oDygOoY4aHR0cDovL2NjZC5hY3NvbHV0aS5jb20uYnIvbGNyL2FjLXNvbHV0aS1tdWx0aXBsYS12NS5jcmwwP6A9oDuGOWh0dHA6Ly9jY2QyLmFjc29sdXRpLmNvbS5ici9sY3IvYWMtc29sdXRpLW11bHRpcGxhLXY1LmNybDAdBgNVHQ4EFgQU2xWC1Zns0SMGAaUnsFzTJjKWEnswDgYDVR0PAQH/BAQDAgXgMA0GCSqGSIb3DQEBCwUAA4ICAQBEoJRr2kiwAKGVnIzgf2iVwSF0V3NKaVtYBUsQtorZhPk4nx8xniZPZwWiLoMQxygyG0jJRXcDAEcDtbP8cvkys8ZhZpWYFRrwL1wxRIdlbG6i3m+SW2lqmiHP4anJwhZgotMZ5YXEvfarvcOSwBEkoWlFZ+hVtIY4Irh6vnnJBKPJdkaUeKnj0OMiknSumKxKag2TPVMjZdi9+essqoHqiTOkEFRSs7w8M1TeUadJtEfXZfFbl/AinlIHPUQ8gMg4rxZXbVkbcd1ZiZY7Tn4jDhtNjP85DEqOH1sqqsbdTFJSKwsCGSCnnG+Jlt6YI6uGp2/2keBC13HDQEEOkD3Ym1Uk5q7dlsNr32P/XbP4X2QLCwFthebFSd+0vbMALEq/mnRs1DS1JOnbqylDDjYNEf9t73RQ6a1pSs/D4M1fc7m+v5es+H4C6VH9GsEyJ6AFdQ3d7dOFQEazaXrLB13C1DGlxY5MeHnFi2E7MJLcYFoJHD/hE3n+hPfv5324wGt63TNySKA2N7ZsyczKokTCBAH5MwDWH0Q77YYZ9f2a5KrrYqcPxrY5rcD4YPwNj8pweL6uX6fmpw/N9w/8W/JkNjTpjliCoyZb7PDRTOeWiRC4W8d3ebzfXyff1U0tgKo037HR5Sq0yBHbI0FhMimZZKbpWWlKggHo5TbHgZeIVA==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(); }