Bom dia Pessoal,
Também tenho interesse em ajudar com o hbnfe.
Moderador: Moderadores
Tenho interesse em ajudar no desenvolvimento e teste.
Já é possível utilizar para emissão de NF-e e NFC-e em produção?
recentemente tive a necessidade de utilizar NF-e e NFC-e
Boa noite José Quintas....
Então... nós estamos precisando de uma ajudinha para ajudar alavancar esse negócio...
Tá meio confuso o conceito de usar o hbnfe...
Por exemplo uso o acbrmonitor, gero o txt envio para o acbrmonitor ele gera o xml e envia para sefaz, pego o retorno e verifico se foi autorizado ou não e mando imprimir o danfe.
Ah, não trabalha com o txt do acbrmonitor, beleza vamos usar o xml então, para testes posso pegar o xml que o acbrmonitor gerou para mim e usar esse xml no hbnfe?
Se sim como faço isso? O que preciso estar instalado? Tem um exe um exemplo do hbnfe? Vou ter que compilar o hbnfe?
É isso que tá confuso pelo menos para mim, não sei se para o resto do pessoal também.
Rubens
hIniData := HB_ReadIni( "teste.ini" )
cPastaSchemas := hIniData['Principais']['cPastaSchemas']
cSerialCert := hIniData['Principais']['cSerialCert']
cUFWS := hIniData['Principais']['cUFWS']
tpAmb := hIniData['Principais']['tpAmb']
versaoDados := hIniData['Principais']['versaoDados']
cUF := hIniData['Principais']['cUF']
cMun := hIniData['Principais']['cMun']
tpImp := hIniData['Principais']['tpImp']
versaoSistema := hIniData['Principais']['versaoSistema']
cXMLFileAssinado := hIniData['Envio']['cXMLFileAssinado']
idLote := hIniData['Envio']['idLote']
tpEmis := hIniData['Envio']['tpEmis']
nRecibo := hIniData['Retorno']['nRecibo']
cChaveNFe := hIniData['Consulta']['cChaveNFe']
xUF := hIniData['Cadastro']['xUF']
CNPJ := hIniData['Cadastro']['CNPJ']
cXMLFileSemAssinatura := hIniData['Assinatura']['cXMLFileSemAssinatura']
cChaveNfeCanc := hIniData['Cancelamento']['cChaveNfeCanc']
xJustificativa := hIniData['Cancelamento']['xJustificativa']
cXMLFileDanfe := hIniData['Danfe']['cXMLFileDanfe']
cLogoFile := hIniData['Danfe']['cLogoFile']
nLogoStyle := val( hIniData['Danfe']['nLogoStyle'] )
cXMLFileCCe := hIniData['CCe']['cXMLFileCCe']
cIniAcbr := hIniData['IniToXML']['cIniAcbr']
ArquivoEmail := hIniData['Email']['ArquivoEmail']
oNfe := hbNfe()
oNfe:cPastaSchemas := cPastaSchemas
oNFe:cSerialCert := cSerialCert
oNFe:nSOAP := HBNFE_MXML
oNFe:cUFWS := cUFWS // UF WebService
oNFe:tpAmb := tpAmb // Tipo de Ambiente
oNFe:versaoDados := versaoDados // Versao
oNFe:versaoDadosCCe := '1.00'
oNFe:tpEmis := tpEmis //normal/scan/dpec/fs/fsda
oNFe:empresa_UF := cUF
oNFe:empresa_cMun := cMun
oNFe:empresa_tpImp := tpImp
oNFe:versaoSistema := versaoSistema
oNFe:pastaNFe := "nfe"
oNFe:pastaCancelamento := "canc"
oNFe:pastaPDF := "pdf"
oNFe:pastaInutilizacao := "inut"
oNFe:pastaDPEC := "dpec"
oNFe:pastaEnvRes := "envresp"
oNFe:cEmailEmitente := "construcao@construcao.com.br"
oNFe:cSiteEmitente := "www.construcao.com.br"
oNFe:cDesenvolvedor := "Desenvolvido por FJ Sistemas +55 18 3652 0559 http://www.fjsistemas.com.br"
oNFe:cCertPFX := hIniData['Principais']['cCertPFX']
oNFe:cCertFilePub := hIniData['Principais']['cCertFilePub']
oNFe:cCertFileKey := hIniData['Principais']['cCertFileKey']
oNFe:cCertPass := hIniData['Principais']['cCertPass']
oNFe:cEmail_Subject := hIniData['Email']['email_assunto']
oNFe:cEmail_MsgTexto := hIniData['Email']['email_txt']
oNFe:cEmail_MsgHTML := hIniData['Email']['email_html']
oNFe:cEmail_ServerIP := hIniData['Email']['email_smtp']
oNFe:cEmail_From := hIniData['Email']['email_from']
oNFe:cEmail_User := hIniData['Email']['email_usuario']
oNFe:cEmail_Pass := hIniData['Email']['email_senha']
oNFe:nEmail_PortSMTP := VAL( hIniData['Email']['email_porta'] )
oNFe:lEmail_Conf := IF( hIniData['Email']['email_confirmacao'] == '.T.',.T.,.F.)
oNFe:lEmail_SSL := IF( hIniData['Email']['email_SSL'] == '.T.',.T.,.F.)
oNFe:lEmail_Aut := IF( hIniData['Email']['email_aut'] == '.T.',.T.,.F.)
...
? "4) Status do Serviço (capicom,curl)"
...
ELSEIF nOption == Asc( "4" )
oStatus := hbNFeStatus()
oStatus:ohbNFe := oNfe // Objeto hbNFe
oStatus:tpAmb := '1' // Normal
oStatus:cUF := cUF // UF
aRetorno := oStatus:execute()
oStatus := Nil
IF aRetorno['OK'] == .F.
? aRetorno['MsgErro']
ELSE
? aRetorno['tpAmb']
? aRetorno['verAplic']
? aRetorno['cStat']
? aRetorno['xMotivo']
? aRetorno['cUF']
? aRetorno['dhRecbto']
? aRetorno['tMed']
ENDIF
...
JoséQuintas escreveu:Opa. finalmente alguém que diz que usa.
Usa do jeito dela, igual ACBR, ou modificou essa parte também?
Só pra entender se alguém configura tudo aquilo, e se interessa compatibilidade.
Na prática a classe sempre foi o ponto de partida, e estava completamente funcional no ano passado, pra todo processo.
// -------------------------------------------------------------------------- //
function nfe_consulta_op(f_cFileXmlName)
if lacbrnfe
nfe_consulta_acbr(f_cFileXmlName)
else
nfe_consulta_hbnfe(f_cFileXmlName)
endif
return .t.
// -------------------------------------------------------------------------- //
function nfe_consulta_acbr(f_cFileXmlName)
Local oAcbrNfeMonitor, lConsulta := .F.
oAcbrNfeMonitor := AcbrNFeMonitor():New()
lConsulta := oAcbrNfeMonitor:AcbrNFe_ConsultarNFe(f_cFileXmlName)
if lConsulta
nmsgbox( oAcbrNfeMonitor:cRetornoTxt ,"Atenção.")
else
msginfo( oAcbrNfeMonitor:cRetornoTxt ,"Atenção.")
endif
oAcbrNfeMonitor:End()
return .t.
// -------------------------------------------------------------------------- //
function nfe_consulta_hbnfe(f_cFileXmlName)
private oNfe, oDanfe, aRetorno , oFuncoes
oNfe := hbNfe()
Seta_Schemas_Nfe(oNfe) ; Seta_Pastas_Nfe(oNfe) ; Seta_Email_Nfe(oNfe)
oNFe:pastaPDF := cdirlocal + "PDF"
oNFe:cDesenvolvedor := "Desenvolvido por CIACPD - http://www.ciacpd.com.br"
oFuncoes := hbNFeFuncoes()
mensagem("Consultando NF-e: "+f_cFileXmlName)
oConsulta := hbNFeConsulta()
oConsulta:ohbNFe := oNfe // Objeto hbNFe
oConsulta:cNFeFile := f_cFileXmlName // Chave ou pode ser um arquivo xml com o parametro cNFeFile
aRetorno := oConsulta:execute()
cChNFe := oConsulta:cChaveNFe
oConsulta := Nil
mensagem("")
IF aRetorno['OK'] == .F.
msginfo( aRetorno['MsgErro'] , "Falha na consulta da NFe.")
return .f.
ELSE
msginfo( "Retorno: " + HB_OEMTOANSI( aRetorno['xMotivo'] ) + CRLF +;
"Chave da Nota: " + cChNFe + CRLF +;
"Nota recebida em:" + aRetorno['dhRecbto'] + CRLF +;
"Nº do Protocolo:" + aRetorno['nProt'] + CRLF +;
"Digito da Nota:" + aRetorno['digVal'], "Resultado da Consulta.")
ENDIF
return .t.
// -------------------------------------------------------------------------- //
function nfe_consulta_hbnfe(f_cFileXmlName)
private oNfe, oDanfe, aRetorno , oFuncoes
oNfe := hbNfe()
Seta_Schemas_Nfe(oNfe) ; Seta_Pastas_Nfe(oNfe) ; Seta_Email_Nfe(oNfe)
oNFe:pastaPDF := cdirlocal + "PDF"
oNFe:cDesenvolvedor := "Desenvolvido por CIACPD - http://www.ciacpd.com.br"
oFuncoes := hbNFeFuncoes()
mensagem("Consultando NF-e: "+f_cFileXmlName)
oConsulta := hbNFeConsulta()
oConsulta:ohbNFe := oNfe // Objeto hbNFe
oConsulta:cNFeFile := f_cFileXmlName // Chave ou pode ser um arquivo xml com o parametro cNFeFile
aRetorno := oConsulta:execute()
cChNFe := oConsulta:cChaveNFe
oConsulta := Nil
mensagem("")
IF aRetorno['OK'] == .F.
msginfo( aRetorno['MsgErro'] , "Falha na consulta da NFe.")
return .f.
ELSE
msginfo( "Retorno: " + HB_OEMTOANSI( aRetorno['xMotivo'] ) + CRLF +;
"Chave da Nota: " + cChNFe + CRLF +;
"Nota recebida em:" + aRetorno['dhRecbto'] + CRLF +;
"Nº do Protocolo:" + aRetorno['nProt'] + CRLF +;
"Digito da Nota:" + aRetorno['digVal'], "Resultado da Consulta.")
ENDIF
return .t.
oSefaz := SefazClass():New()
cRetorno := oSefaz:ConsultaNfe( cChave, ... )
IF "*ERRO*" $ cRetorno
MsgInfo( "Retorno: " + cRetorno
ENDIF
Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes