Retorno sefaz 104 e não 100. xMotivo: Autorizado o uso da NF-e

2,450 views
Skip to first unread message

López M

unread,
Jul 18, 2018, 4:36:28 PM7/18/18
to NFePHP
$resp = $nfe->sefazEnviaLote([$xml],$idLote, 1, false);
//transforma o xml de retorno em um stdClass
$st = new NFePHP\NFe\Common\Standardize();
$std = $st->toStd($resp);
$cStat = $std->cStat;
$xMotivo =  $std->protNFe->infProt->xMotivo;
$recibo = $std->infRec->nRec;


O meu Cstat, código de status está retornando 104. porém ao nota foi enviada com sucesso pois o xMotivo está retornando: Autorizado o uso da NF-e.

Segundo a tabela do sefaz:
100 Autorizado o uso da NF-e
101 Cancelamento de NF-e homologado
102 Inutilização de número homologado
103 Lote recebido com sucesso
104 Lote processado

Não deveria ser 100??  

Obrigado.



Roberto Machado

unread,
Jul 18, 2018, 4:37:28 PM7/18/18
to nfe...@googlegroups.com
Depende da consulta 

Roberto

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

López M

unread,
Jul 18, 2018, 4:57:32 PM7/18/18
to NFePHP
Como você ja viu, estou bem crú em todo este assunto...estou me guiando muito por endpoints antigos montados com a versão 3.10, me guiando pela documentação do github e pelo forum. 
A unica forma que achei de capturar a resposta do sefaz foi essa:


$resp = $nfe->sefazEnviaLote([$xml],$idLote, 1, false);
$st = new NFePHP\NFe\Common\Standardize();
$std = $st->toStd($resp);
$cStat = $std->cStat;

$recibo = $std->infRec->nRec;

Poderia me indicar um exemplo ou qual a forma correta para capturar o codigo corretamente? (que pela tabela do sefaz deveria ser 100 ao autorizar uma nota de forma correta)

Obrigado.

Kleyber Derick

unread,
Jul 18, 2018, 5:27:38 PM7/18/18
to NFePHP
Olá,

Troque o
$cStat = $std->cStat;

por:

$cStat = $std->protNFe->infProt->cStat;

Espero que ajude,

Roberto Machado

unread,
Jul 19, 2018, 7:53:55 AM7/19/18
to nfe...@googlegroups.com
Cuidado  com as informações incompletas e incorretas Sr. Kleyber !!!!

O primeiro cStat indica o retrono (erro ou sucesso)

O segundo em protNFe pode NÃO EXISTIR

Roberto

Kleyber Derick

unread,
Jul 19, 2018, 7:59:55 AM7/19/18
to NFePHP
Bem, eu sei o que você está dizendo, mas minha informação não está incorreta, pois eu uso aqui e funciona. Se não houver o retorno esperado, aí sim eu uso o primeiro. Eu apenas dei uma sugestão de pegar o código de autorização.

Roberto Machado

unread,
Jul 19, 2018, 8:08:34 AM7/19/18
to nfe...@googlegroups.com
Sm ok !

Sem problemas, mas o ideal e sempre contextualizar e eu sei que dá trabalho ajudar, mas por exemplo colocar o xml de retorno e indicar os cStat de cada um ou ainda localizar alguma pagina da rede que tenha essas informações pode ajudar mais. O importante é entende ro funcionamento dessas operações e a grande maioria das perguntas eles querem uma solução SIMPLISTA que nem sempre existe ou é a melhor.

Eu mesmo não gosto de explicar muito prefiro indica ro manual ou outra documentação e deixar que eles entendam por si mesmos. 😁  e nem sempre gostam disso.

Abraço
Roberto

Kleyber Derick

unread,
Jul 19, 2018, 8:10:39 AM7/19/18
to NFePHP
Blz!!! Entendido e anotado!!!

Abraço,

López M

unread,
Jul 19, 2018, 8:14:42 AM7/19/18
to nfe...@googlegroups.com
Concordo com o Roberto sempre é bom ter o manual de uma informação completa e detalhada, o problema que quem chegou de paraquedas como eu tem graves problemas de entender e o prazo é curto. Os chefes estão pressionando e tudo precisa ser feito para ontem, eu estou me guiando muito pelos endpoints criados para a antiga versão, sei que isto é errado mas não tenho muitas escolhas, adoraria entender, mas nem sempre é possível.
neste caso, tem o link do doc que indica como deve ser tratada a resposta? sinceramente não achei no projeto do github, desculpas.




Marcelo López
 Desenvolvedor Android
(051) 8666-8586



Roberto Machado

unread,
Jul 19, 2018, 8:33:46 AM7/19/18
to nfe...@googlegroups.com
Este é um exemplo de retorno de consulta de RECIBO após o envio de uma NFe

<retConsReciNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
    <tpAmb>2</tpAmb>
    <verAplic>PR-v3_8_0</verAplic>
    <nRec>411110216106645</nRec>
    <cStat>104</cStat>
    <xMotivo>Lote processado</xMotivo>
    <cUF>41</cUF>
    <dhRecbto>2017-02-24T13:33:16-03:00</dhRecbto>
    <protNFe versao="3.10">
        <infProt>
            <tpAmb>2</tpAmb>
            <verAplic>PR-v3_8_0</verAplic>
            <chNFe>41170208187168000160553420000044771416403143</chNFe>
            <dhRecbto>2017-02-24T13:33:14-03:00</dhRecbto>
            <nProt>141170000256266</nProt>
            <digVal>PxoE8K9Qu9F7ROBwEPQtdc0nSQw=</digVal>
            <cStat>100</cStat>
            <xMotivo>Autorizado o uso da NF-e</xMotivo>
        </infProt>
    </protNFe>
</retConsReciNFe>
Veja que tem DOIS cStat. O primeiro sempre é a resposta da sua solicitação e pode ser uma AFIRMATIVA ou um ERRO

Esse primeiro cStat pode ser por exemplo 

Erros (alguns apenas podem ter vários outros)
Se cStatus = 215, 516, 517 ou 545 significa que a mensagem de consulta é inválida.
Se cStatus = 225, 565. 567 ou 568, significa que o lote de NF-e consultado é inválido
Nestes casos (e em outros) a TAG protNFe Não SERÀ retornada

Eu mesmo verifico o primeiro cStat e a existência da TAG protNFe 

SE cStat == 104 SUCESSO ==> verifica TAG protNFe se proNFe->infProt->cStat == 100 ou 150 ==> protocolar e gravar SUCESSO !!!
                                                                                        se proNFe->infProt->cStat != 100 ou a 150 ==> ERRO na NFe pegar xMotivo e acionar o usuário para correção
SE cStat == 105 AINDA EM PROCESSAMENTO ==> deixa para verificar novamente em alguns tempo

Caso contrario pegar o xMotivo e mostrar para o usuário (ou fazer algum outro tratamento, dependendo da resposta, são muitas possibilidades)

É por ai !

Roberto


López M

unread,
Jul 19, 2018, 9:05:05 AM7/19/18
to nfe...@googlegroups.com
Baita explicação....tudo entendido, só faltou conhecimento sobre o assunto para mim sobre o assunto protocolar...o endpoint antigo não faz nada depois de pegar a resposta...somente guarda o xml localmente e retorna para a aplicação. 
Mas a resposta da tratativa do status foi perfeita, muito obrigado.

Marcelo López
 Desenvolvedor Android
(051) 8666-8586


Reply all
Reply to author
Forward
0 new messages