Estou achando estranho algumas coisas.
gerei o xml + assinar+envio.
deu mensagem "lote recebido com sucesso"
Fui consultar a nfe e a mesma não consta no sefaz.
Consultei ela pelo acbr e realmente não consta.
Fui enviar ela pelo acbr e deu um erro "Nota(s) não confirmadas:
7327->Rejeicao: Valor do Produto difere do produto Valor Unitario de Tributacao e Quantidade Tributavel"
Não estou me referindo ao erro em si, mas o motivo do HBNFE não ter me informado esse erro em vez de ter dado a mensagem de "Lote Recebido".
A forma como estou fazendo:
Informo os dados no oNF:
Depois coloquei assim:
Código: Selecionar todos
*********/// gerar validar e assinar xml
aRetorno := oNF:geraXML()
oNF := Nil
IF aRetorno[ 'OK' ] = .F.
MSG(aRetorno[ 'MsgErro' ])
* ELSE
* MSG('Gerou XML')
ENDIF
******/// Enviar xml assinado
oEnviaNFe := hbNFeRecepcaoLote()
oEnviaNFe:ohbNFe := oNfe // Objeto hbNFe
oEnviaNFe:idLote := '2' //idLote
oEnviaNFe:aXMLDados := {mFILE_XML} //{ cXMLFileAssinado }
oEnviaNFe:lAguardaRetorno := .T.
aRetorno := oEnviaNFe:execute()
oEnviaNFe := Nil
IF aRetorno['OK'] == .F.
MSG(aRetorno['MsgErro'])
ELSE
* MSG( aRetorno['versao'] )
* MSG( aRetorno['tpAmb'] )
* MSG( aRetorno['verAplic'])
* MSG( aRetorno['cStat'] ) // deu 103
* MSG( aRetorno['xMotivo'] ) // lote recebido com sucesso
* MSG( aRetorno['cUF'] )
* MSG( aRetorno['dhRecbto'])
* MSG( aRetorno['nRec'] )
* MSG( aRetorno['tMed'] )
ENDIF
*****************************************************************
//Pega retorno se deu erro ou não
oRetornoNFe := hbNFeRetornoRecepcao()
oRetornoNFe:ohbNFe := oNfe // Objeto hbNFe
oRetornoNFe:nRec := aRetorno['nRec'] //nRecibo
aRetorno := oRetornoNFe:execute()
oRetornoNFe := Nil
IF aRetorno['OK'] == .F.
msg( aRetorno['MsgErro'] )
ELSE
//retornou aqui
msg( aRetorno['tpAmb'] )
msg( aRetorno['verAplic'] )
msg( aRetorno['nRec'] )
msg( aRetorno['cStat'] )
msg( aRetorno['xMotivo'] )
msg( aRetorno['cUF'] )
msg( aRetorno['cMsg'] )
msg( aRetorno['xMsg'] )
FOR nI = 1 TO aRetorno['nNFs']
msg( aRetorno['NF'+STRZERO(nI,2)+'_tpAmb'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_verAplic'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_chNFe'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_dhRecbto'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_nProt'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_digVal'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_cStat'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_xMotivo'] )
msg( aRetorno['NF'+STRZERO(nI,2)+'_protNFe'] )
NEXT
ENDIF
****/// consultar nfe se consta no sefaz
//montar chave
mFILE_XML=LEFT(PERS->CIDNFE,2)+substr(strzero(year(NFISCAL->EMISSAO),4),3,4)+strzero(month(NFISCAL->EMISSAO),2);
+Tiraponto(PERS->CGCMF)+"55001"+strsimb(NFISCAL->NUMERO,9)+"1"+strsimb(NFISCAL->NUMERO,8)
mDVNFE=MODULO11_NFE(mFILE_XML)
mFILE_XM=ALLTRIM(PERS->NFE_PNFE)+"\\"+mFILE_XML+ALLTRIM(STR(mDVNFE))+'-nfe.xml'
oConsulta := hbNFeConsulta()
oConsulta:ohbNFe := oNfe // Objeto hbNFe
oConsulta:cNFeFile := mFILE_XM
aRetorno := oConsulta:execute()
oConsulta := Nil
IF aRetorno['OK'] == .F.
msg(aRetorno['MsgErro'] ) //aqui ta retornando que nota não consta no sefaz.
ELSE
* msg( aRetorno['tpAmb'] )
* msg( aRetorno['verAplic'] )
* msg( aRetorno['dhRecbto'] )
* msg('nprod '+ aRetorno['nProt'] )
* msg( aRetorno['digVal'] )
* msg( aRetorno['cStat'] )
msg( aRetorno['xMotivo'] )
* msg( aRetorno['protNFe'] )
ENDIF
***** se ok gravar retornos e gerar danfe
Paulo