Dúvida enviando o XML

425 views
Skip to first unread message

Diego Silveira

unread,
Nov 5, 2015, 8:49:26 AM11/5/15
to NFePHP, Diego Silveira
Bom dia a todos! Sou novo aqui no forum, gostaria de uma ajuda de vocês....

Eu já executei os seguintes processos:
=> 4.00testaMakeNFe.php: OK
=> 4.00testaAssinaNFe.php: OK
=> 4.00testaValidaXml.php: Ok, retorna NFe Válida!
=> 4.00testaEnviaLote.php: Ok, retorna Lote Recebido com Sucesso e também retorno o número do recibo
=> 4.00testaConsultaRecibo.php: Ok, retorna Stat=100 e Autorizado o uso da NF-e

Mas quando utilizo:
=> 4.00testaAddProt.php: Dá um erro, conforme abaixo:

Estou usando assim:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include_once '../../bootstrap.php';
use NFePHP\NFe\ToolsNFe;
$nfe = new ToolsNFe('../../config/config.json');
$aResposta = array();

$chave = '43151109302850000119550020000000171876587657';

$pathNFefile = "/home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/ArquivosNfe/homologacao/assinadas/$chave-nfe.xml";

$pathProtfile = "/home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/ArquivosNfe/homologacao/temporarias/201511/$chave-retConsSitNFe.xml";



$saveFile = true;
$retorno = $nfe->addProtocolo($pathNFefile, $pathProtfile, $saveFile);

//echo '<br><br><PRE>';
//echo htmlspecialchars($retorno);
//echo '</PRE><BR>';
//echo "<br>";



Retorna esse erro:
Fatal error: Uncaught exception 'NFePHP\Common\Exception\InvalidArgumentException' with message 'O arquivo indicado não foi localizado!! /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/ArquivosNfe/homologacao/temporarias/201511/43151109302850000119550020000000171876587657-retConsSitNFe.xml' in /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/libs/Common/Files/FilesFolders.php:249 Stack trace: #0 /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/libs/Common/Dom/Dom.php(43): NFePHP\Common\Files\FilesFolders::readFile('/home/storage/b...') #1 /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/libs/NFe/ToolsNFe.php(287): NFePHP\Common\Dom\Dom->loadXMLFile('/home/storage/b...') #2 /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/exemplos/NFe/4.00testaAddProt.php(18): NFePHP\NFe\ToolsNFe->addProtocolo('/home/storage/b...', '/home/storage/b...', true) #3 {main} thrown in /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/libs/Common/Files/FilesFolders.php on line 249



Pergunto se deve ser usado essa rotinha: 4.00testaAddProt.php
Pois depois que uso a rotina 4.00testaEnviaLote.php vou até o site do sefaz-rs e consulto a NFe e ela está lá, consta na base de dados da sefaz.

Outra informação, consigo visualizar a DANFE quando mando buscar o xml na pasta /assinadas.

Aguardo a ajuda dos amigos, só me falta isso agora, o resto está tudo ok.

Grande abraço a todos.

Roberto Machado

unread,
Nov 5, 2015, 9:06:10 AM11/5/15
to nfe...@googlegroups.com

Tá explicito na mensagem 

 'O arquivo indicado não foi localizado!! /home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/ArquivosNfe/homologacao/temporarias/201511/43151109302850000119550020000000171876587657-retConsSitNFe.xml'


O exempo 4.00testaAddProt.php parte do principio que o protocolo foi obtido pela função  sefazConsultaChave() e esse NÃO É O SEU CASO, você esta pegando pelo RECIBO os dados da SEFAZ então esse arquivo que ele busca não existe.

O que você fez até agora está PERFEITO, continue assim que vai se dar muito bem 😊

No lugar desse arquivo, que não foi achado,  você deve buscar :

$recibo = '<aqui coloque o numero do RECIBO>';
   
$pathProtfile = "/home/storage/b/57/ce/ciclodigital/public_html/gdo2/gdo/API_Nfe/ArquivosNfe/homologacao/temporarias/201511/$recibo--retConsReciNFe.xml";


Outra coisa 

NÃO É PERMITIDA A IMPRESSÃO OU O ENVIO DE NFe SEM O PROTOCOLO 

Roberto





Diego Silveira

unread,
Nov 5, 2015, 9:37:22 AM11/5/15
to NFePHP, di...@ciclodigital.com.br
Valeu Roberto, deu certinho! Agora vou implementar o resto...
Obrigado pela força.

Bill Barsch

unread,
Nov 6, 2015, 4:29:28 AM11/6/15
to NFePHP
Roberto, eu estou migrando da antiga API para a 4.0 e tive dúvidas nessa parte também.

1 - Na API antiga tinha a opção de usar isso daqui: $nfe->envDir ou $nfe->tmpDir, etc
Agora devo buscar os arquivos eu mesmo montando o "path"?

2 - Ví que a função "assina" tem a opção de argumento "saveFile", mas vem false como Default.
No exemplo 4.00testaAssinaNfe está sendo salvo o arquivo via file_put_contents, mas se eu colocar true no argumento da função "assina" ele vai salvar o arquivo pra mim automaticamente no lugar certo sem precisar do file_put_contents?? 

3 - Outra coisa, quando uso a função de "sefazEnviaLote" ela tem este seguinte comentário no final:

        //caso o envio seja recebido com sucesso mover a NFe da pasta
        //das assinadas para a pasta das enviadas

Antes o próprio nfephp já movia de assinadas para enviadas certo? 
Agora eu mesmo devo montar o "path" do arquivo e move-lo?

Roberto Machado

unread,
Nov 6, 2015, 6:02:47 AM11/6/15
to nfe...@googlegroups.com
Bill;

1 - Sim e não a ideia é deixar essa opção ao desenvolvedor
Toda a comunicação grava os dados enviados e recebidos automaticamente na pasta temporárias, mas as outras funções DEVERIAM ter a opção de gravar ou não a critério do desenvolvedor, pode ser que eu tenha passado batido nesse quesito em algum caso. Se isso ocorreu me avise ou proponha um request.
NOTA: existe uma classe especialmente para a manipulação de arquivos e diretórios Common/Files

2 - Isso se estiver true o método salva o arquivo assinado na pasta dos assinadas
NOTA: todas os métodos sefazXXXX retornam um xml em caso de sucesso

3 - já comentado em (1)

Roberto

Flag King

unread,
Oct 24, 2016, 9:59:48 AM10/24/16
to NFePHP
Olá a todos;

Gostaria de postar uma dúvida referente a este mesmo assunto, mas em uma situação diferente:

Meu erro de "Arquivo não encontrado" aparece na última fase da cadeia, que é quando vou imprimir o PDF da DANFE.
O trecho do erro é esse: "Fatal error: Uncaught exception 'NFePHP\Common\Exception\InvalidArgumentException' with message 'O arquivo indicado não foi localizado !! var/www/html/nfephp/nfe/homologacao/enviadas/aprovadas/201610/41161024827439000150550010000000111000000110-protNFe.xml' in /var/www/html/nfephp/libs/Common/Files/FilesFolders.php:260".

Ok, o lógico seria que entendamos que o arquivo não existe neste local, mas existe. Já verifiquei por chave, por cópia fiel do endereço e td o mais.

Alguém tem alguma ideia do que possa estar ocorrendo?


Flag

Roberto Machado

unread,
Oct 24, 2016, 10:33:42 AM10/24/16
to nfe...@googlegroups.com
voce passou o path errado

roberto

Flag King

unread,
Oct 24, 2016, 1:07:47 PM10/24/16
to NFePHP
Ohhhh, a barra, correto?

Obrigado! 

Hugo Nunes Barretto

unread,
Nov 17, 2016, 3:31:40 PM11/17/16
to NFePHP, di...@ciclodigital.com.br
Olá, Amigo! Boa tarde. Sobre o problema inicial que citou.. Pode me ajudar com isto, por favor!! Quero adicionar o protocolo no xml, mas estou na dúvida, estou iniciante ainda e estou descobrindo como funcionar. O que preciso fazer ??? Obrigado.

Coloquei meu 4.00testaAddProt.php como o seu. Neste anexo imagem: exe.

Já autorizei minha nota e consulto ela, tudo certo. Mas, o resultado é este:

Notice: Undefined variable: recibo in C:\xampp\htdocs\nfephp-master\exemplos\NFe\4.00testaAddProt.php on line 16

Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in C:\xampp\htdocs\nfephp-master\libs\Common\Dom\Dom.php on line 37

Fatal error: Uncaught NFePHP\Common\Exception\RuntimeException: O arquivo indicado não é um XML! in C:\xampp\htdocs\nfephp-master\libs\Common\Dom\Dom.php:39 Stack trace: #0 C:\xampp\htdocs\nfephp-master\libs\NFe\ToolsNFe.php(349): NFePHP\Common\Dom\Dom->loadXMLString('C:/xampp/htdocs...') #1 C:\xampp\htdocs\nfephp-master\exemplos\NFe\4.00testaAddProt.php(19): NFePHP\NFe\ToolsNFe->addProtocolo('C:/xampp/htdocs...', 'C:/xampp/htdocs...', true) #2 {main} thrown in C:\xampp\htdocs\nfephp-master\libs\Common\Dom\Dom.php on line 39
exe.JPG
Reply all
Reply to author
Forward
0 new messages