Bom dia,
Alguem saberia me dizer se a classesefaz está apta para uso em produção?
Alguem tem um exemplo de autorização de NFe?
Obrigado.
Gustavo

Moderador: Moderadores
/*
P0600NFE - ROTINAS DO SISTEMA
2012.06.27.0000 - José Quintas
...
2015.10.21.1940 - Ambiente homologação
2016.06.17.0900 - Utiliza hora emissão/saÃda gravada
2016.06.28.0230 - Ajuste
2016.07.03.2130 - Base de dados local
2016.07.18.1115 - Processa NFE
2016.07.26.1800 - Ajustes
*/
#include "jpa.ch"
#include "hbthread.ch"
FUNCTION P0600NFE()
LOCAL nSelect, cNfeTxt, cNfeXml, oSefaz := SefazClass():New(), cStatusAssinatura
MEMVAR m_Prog
PRIVATE m_Prog := "P0600NFE"
DirMake( "NFE\TMP" )
nSelect := Select()
IF .NOT. Encontra( jppedi->pdPedido, "jpnota", "pedido" )
MsgStop( "Inválido! Não tem nota emitida para esse pedido" )
RETURN .F.
ENDIF
IF jpnota->nfDatEmi != Date()
MsgStop( "Inválido! Nota fiscal não foi emitida hoje" )
RETURN .F.
ENDIF
IF jpnota->nfStatus == "C"
MsgStop( "Inválido! Nota fiscal cancelada, não há o que fazer" )
RETURN .F.
ENDIF
IF jpnota->nfPedido != jppedi->pdPedido
MsgStop( "Erro interno! Posicionado em NF diferente do pedido atual" )
RETURN .F.
ENDIF
wSave()
Cls()
SayScroll( "Gerando TXT e XML" )
NfeToXml( @cNfeTxt, @cNfeXml, "1", Date(), Time(), , , "1" )
SayScroll( "Gravando TXT" )
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + ".txt", cNfeTxt )
SayScroll( "Gravando XML" )
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + "-01-SemAssinatura.xml", cNfeXml )
SayScroll( "Assinando" )
cStatusAssinatura := AssinaXml( @cNfeXml, AppEmpresaApelido() )
IF cStatusAssinatura != "OK"
MsgExclamation( "Problema na assinatura " + cStatusAssinatura )
RETURN .F.
ENDIF
SayScroll( "Gravando Assinado" )
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + "-02-Assinado.xml", cNfeXml )
oSefaz:cCertificado := NomeCertificado( AppEmpresaApelido() )
SayScroll( "Transmitindo Sefaz" )
oSefaz:NfeLoteEnvia( cNfeXml )
SayScroll( "Gravando resultado" )
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + "-03-Recibo.xml", oSefaz:cXmlRecibo )
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + "-04-Protocolo.xml", oSefaz:cXmlProtocolo )
IF oSefaz:cStatus == "101"
hb_MemoWrit( "NFE\NF" + jpnota->nfNotFis + "-05-Autorizado.xml", oSefaz:cXmlAutorizado )
RUN ( "start d:\unidanfe\unidanfe.exe NFE\NF" + jpnota->nfNotFis + "-Autorizado.xml" )
MsgExclamation( "Nota autorizada" )
ELSEIF oSefaz:cStatus $ "202,302"
hb_MemoWrit( "NFE\NF" + jpnota->nfNotFis + "05-Denegado.xml" )
RUN ( "Start d:\unidanfe\unidanfe.exe NFE\NF" + jpnota->nfNotFis + "-Autorizado.xml" )
MsgExclamation( "Nota denegada" )
ELSE
hb_MemoWrit( "NFE\TMP\NF" + jpnota->nfNotFis + "-05-Erro.xml", oSefaz:cXmlProtocolo )
MsgExclamation( "Erro " + oSefaz:cXmlProtocolo )
ENDIF
SELECT ( nSelect )
wRestore()
RETURN NIL
FUNCTION P0600NFE()
LOCAL cNfeXml, oSefaz := SefazClass():New()
cNfeXml := "seu xml da nota"
IF AssinaXml( @cNfeXml, "nome do certificado" ) != "OK"
MsgExclamation( "Problema na assinatura " + cStatusAssinatura )
RETURN .F.
ENDIF
oSefaz:cCertificado := "nome do certificado"
oSefaz:NfeLoteEnvia( cNfeXml )
IF oSefaz:cStatus == "101"
hb_MemoWrit( "NFE\NF" + jpnota->nfNotFis + "-05-Autorizado.xml", oSefaz:cXmlAutorizado )
ELSEIF oSefaz:cStatus $ "202,302"
hb_MemoWrit( "NFE\NF" + jpnota->nfNotFis + "05-Denegado.xml" )
ELSE
MsgExclamation( "Erro " + oSefaz:cXmlProtocolo )
ENDIF
RETURN NIL
<?xml version="1.0" encoding="UTF-8"?>
FUNCTION XmlTransform( cTexto )
RETURN cTexto
Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes