Página 1 de 1

teste sefazclass

Enviado: 24 Jun 2018 11:41
por JoséQuintas
O teste da sefazclass agora tem mais opções.
sefazclass.png
Pra quem ainda não viu a SefazClass, a autorização de nota parece até piada....

Código: Selecionar todos

      CASE nOpc == nOpcTemp++
         oSefaz:NfeLoteEnvia( [<NFe><infNFe Id="Nfe0001"></infNFe></NFe>] )
         ? oSefaz:cXmlRetorno
         Inkey(0)

Sim, é um XML inválido, só pra fazer o teste e ter retorno.
Mas se enviar um XML válido... nota autorizada.
Tanto faz se homologação, produção, 3.10, 4.00


Por isso estranho pedirem exemplo de uso.... rs

teste sefazclass

Enviado: 30 Ago 2018 17:46
por Marcelo_Antonio
Boa tarde.

Como faço para salvar o arquivo retorno qdo for autorizada e imprimir o respectivo DANFE.

teste sefazclass

Enviado: 30 Ago 2018 20:40
por JoséQuintas
A variável da classe contém tudo que poderia precisar.

hb_MemoWrit( "autorizado.xml", oSefaz:cXmlAutorizado )

E a classe do Danfe, gera o Danfe.
Geralmente a partir do conteúdo de um XML.

oDanfe:ToPdf( oSefaz:cXmlAutorizado )

oDanfe:ToPdf( MemoRead( "arquivo.xml" ) )

teste sefazclass

Enviado: 31 Ago 2018 10:48
por Marcelo_Antonio
Bom Dia.

Obrigado pela ajuda.

teste sefazclass

Enviado: 04 Set 2018 14:50
por Marcelo_Antonio
Boa tarde.

Estou fazendo teste (hambiente de Homologação) para envio da NFe, no entanto não esta me retornando nada.
Segue abaixo como estou utilizando para enviar. Minha dúvida é a seguinte: Devo carregar o arquivo para memória antes de enviar?

FUNCTION Enviar_XML(Arq_XML)
***************************************
LOCAL ArqXML:= HB_MemoRead(Arq_XML) //-->>Carrega o Arquivo Para a Memória
LOCAL L_ret := .T. , oFile, xArqRet
LOCAL nHandle:= FCREATE('Retorno_XML.log', 0)
oFile := mg_fileNameOnlyName(Arq_XML)
oFile := Substr(oFile, 1, Len(oFile)-8)

oSefaz:NfeLoteEnvia(ArqXML) //-->> Envio do Arquivo Para A SEFAZ

FWRITE(nHandle, oSefaz:cXmlRetorno)
FWRITE(nHandle, oSefaz:cXmlAutorizado)
FCLOSE(nHandle)

IF AT('*ERRO*', oSefaz:cXmlRetorno) <> 0
mg_MsgInfo("Solicitação não autorizada", "Retorno", oSefaz:cXmlRetorno )
xArqRet := HB_MemoWrit(Alltrim(M->Erro_XMLNFe)+oFile+"-pro-rec.XML", oSefaz:cXmlRetorno )
L_ret := .F.
WAPI_ShellExecute( NIL, "open", xArqRet, NIL, NIL, 1 )

ELSE //$ "100,101,150,301,302"
ArqXML := HB_MemoWrit(Alltrim(M->Dir_NFeXML)+oFile+"-procNfe.XML", oSefaz:cXmlAutorizado )
if File(ArqXML)
Danfe(ArqXML) //-->> Função para gravação e Impressão do DANFE
else
mg_Msgwarning("Falha na gravação do arquivo Retorno!", "Atenção")
//WAPI_MessageBox( wapi_GetActiveWindow(), "Falha na gravação do Arquivo "+ArqXML, "Advertência", 0x00000030)
endif
//oDanfe:ToPdf( MemoRead( "arquivo.xml" ) )
ENDIF

RETURN L_ret

Agradeço a cooperação.

teste sefazclass

Enviado: 04 Set 2018 15:19
por JoséQuintas
O programa de teste tem tudo, basta olhar lá. /tests
Em todo caso:

Código: Selecionar todos

// minimo
oSefaz := SefazClass():New()
oSefaz:cCertificado := "nome do certificado"

// configurar o que vai usar
oSefaz:cUF := "SP"
oSefaz:cAmbiente := "1"

// Enviar nota?
cXml := MemoRead( "arquivo.xml" )
oSefaz:NfeLoteEnvia( cXml )

// o que podemos obter?
hb_MemoWrit( "123-autorizado.xml", oSefaz:cXmlAutorizado )   // XML autorizado

// ou pra conferencia, além de outros
hb_MemoWrit( "123-retorno.xml", oSefaz:cXmlRetorno )     // XML Retorno
hb_MemoWrit( "123-recibo.xml", oSefaz:cXmlRecibo ) // XML recibo
Mensagem( oSefaz:cStatus ) // codigo de status retornado
Mensagem( oSefaz:cMotivo ) // motivo do status

Lembrando que agora a comunicação exige configuração adicional no Windows W7, e não funciona em XP.
E a classe usa CAPICOM e MSXML5, ambos da Microsoft, que precisam estar instalados corretamente.
E um certificado válido pra NFE, lógico.

teste sefazclass

Enviado: 04 Set 2018 15:23
por JoséQuintas
Complemento:

Isso vai ser seu aplicativo conversando com a Fazenda, do usuário direto ao governo e vice-versa, sem intermediário.
Valem os manuais do governo.
Inclusive os retornos, também são diretamente do governo, ou do windows.

teste sefazclass

Enviado: 04 Set 2018 16:30
por JoséQuintas
Pois é, dica sua.
Como diz a antiga frase: vivendo e aprendendo...


E aproveitando:
Notem o {xhb}, isso é pra se for usar HBMK2 no X-Harbour.

Nota: acaba valendo pra quem usa compatibilidade xharbour, o que pode atrapalhar.