PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

[DLL Unimake.DFe] Como gerar e enviar o XML de inutilização e consulta situação da NFe/NFCe p/SEFAZ com a DLL Unimake.DFe
Publié par Wandrey
dans la catégorie Divers
Nouveautés



Description
No 8º episódio do Wandrey Descomplica sobre a DLL Unimake.DFe, aprendemos:

- Como gerar e enviar o XML de inutilização de números da NFe/NFCe para a SEFAZ;
- Como gerar e enviar o XML para consultar a situação da NFe/NFCe (através da chave) para a SEFAZ.

A seguir, apresento o código em WINDEV para realizar as tarefas descritas acima.

Inutilização NFe:

```
//Criar as configurações mínimas necessárias para consumir o serviço
oConfiguracao is Unimake.Business.DFe.Servicos.Configuracao()
oConfiguracao.TipoDFe = TipoDFe.NFe
oConfiguracao.CertificadoArquivo = "C:\Projetos\certificados\UnimakePV.pfx"
oConfiguracao.CertificadoSenha = "12345678"

//Criar tag inutNFe
oInutNFe is Unimake.Business.DFe.XML.NFe.InutNFe
oInutNFe.Versao = "4.00"

//Criar tag infInut
oInfInut is Unimake.Business.DFe.XML.NFe.InutNFeInfInut
oInfInut.Ano = "19"
oInfInut.CNPJ = "06117473000150"
oInfInut.CUF = UFBrasil.PR
oInfInut.Mod = ModeloDFe.NFe
oInfInut.NNFIni = 59972
oInfInut.NNFFin = 59972
oInfInut.Serie = 1
oInfInut.TpAmb = TipoAmbiente.Homologacao
oInfInut.XJust = "Justificativa da inutilizacao de teste"

oInutNFe.InfInut = oInfInut

EDT_RetornoWSString = "Versao schema: " + oInutNFe.Versao + CR
EDT_RetornoWSString += "Ano: " + oInutNFe.InfInut.Ano + CR
EDT_RetornoWSString += "CNPJ: " + oInutNFe.InfInut.CNPJ + CR + CR

WHEN EXCEPTION IN
//Consumir o serviço
oInutilizacao is Unimake.Business.DFe.Servicos.NFe.Inutilizacao()
oInutilizacao.SetXMLConfiguracao(oInutNFe, oConfiguracao)

// Gravar o XML assinado no HD
xmlAssinado is string = oInutilizacao.GetConteudoXMLAssinado()
EDT_RetornoWSString += "XML Assinado: " + CR + xmlAssinado + CR + CR

fDelete("d:\testenfe\InutilizacaoNFe.xml")
fSaveText("d:\testenfe\InutilizacaoNFe.xml", xmlAssinado)

//Enviar o XML para a SEFAZ
oInutilizacao.Executar(oInutNFe, oConfiguracao)

//Ver retorno da SEFAZ
EDT_RetornoWSString += "XML Retornado: " + CR + oInutilizacao.RetornoWSString + CR + CR

//Ver o conteúdo da tag CStat e XMotivo
oRetInutNFe is Unimake.Business.DFe.XML.NFe.RetInutNFe <- oInutilizacao.Result

EDT_RetornoWSString += "CStat: " + oRetInutNFe.InfInut.CStat + CR
EDT_RetornoWSString += "XMotivo: " + oRetInutNFe.InfInut.XMotivo + CR + CR

IF oRetInutNFe.InfInut.CStat = 102 //102 = Inutilização Homologada
//oRetEvento Is Unimake.Business.DFe.XML.NFe.RetEvento <- oRecepcaoEvento.Result.GetRetEvento(I - 1)
oInutilizacao.GravarXmlDistribuicao("tmp\testenfe") // Grava o XML de distribuição
ELSE
// Evento rejeitado
// Realizar as ações necessárias
END
DO
Info(ExceptionInfo(errFullDetails)) //Ele também pega o conteúdo da Exception do lado do C#, importante envolver o código em Try/Catch
END
```

Inutilização NFCe:

```
//Criar as configurações mínimas necessárias para consumir o serviço
oConfiguracao is Unimake.Business.DFe.Servicos.Configuracao()
oConfiguracao.TipoDFe = TipoDFe.NFCe
oConfiguracao.CertificadoArquivo = "C:\Projetos\certificados\UnimakePV.pfx"
oConfiguracao.CertificadoSenha = "12345678"

//Criar tag inutNFe
oInutNFe is Unimake.Business.DFe.XML.NFe.InutNFe
oInutNFe.Versao = "4.00"

//Criar tag infInut
oInfInut is Unimake.Business.DFe.XML.NFe.InutNFeInfInut
oInfInut.Ano = "19"
oInfInut.CNPJ = "06117473000150"
oInfInut.CUF = UFBrasil.PR
oInfInut.Mod = ModeloDFe.NFCe
oInfInut.NNFIni = 59972
oInfInut.NNFFin = 59972
oInfInut.Serie = 1
oInfInut.TpAmb = TipoAmbiente.Homologacao
oInfInut.XJust = "Justificativa da inutilizacao de teste"

oInutNFe.InfInut = oInfInut

EDT_RetornoWSString = "Versao schema: " + oInutNFe.Versao + CR
EDT_RetornoWSString += "Ano: " + oInutNFe.InfInut.Ano + CR
EDT_RetornoWSString += "CNPJ: " + oInutNFe.InfInut.CNPJ + CR + CR

WHEN EXCEPTION IN
//Consumir o serviço
oInutilizacao is Unimake.Business.DFe.Servicos.NFCe.Inutilizacao()
oInutilizacao.SetXMLConfiguracao(oInutNFe, oConfiguracao)

// Gravar o XML assinado no HD
xmlAssinado is string = oInutilizacao.GetConteudoXMLAssinado()
EDT_RetornoWSString += "XML Assinado: " + CR + xmlAssinado + CR + CR

fDelete("d:\testenfe\InutilizacaoNFCe.xml")
fSaveText("d:\testenfe\InutilizacaoNFCe.xml", xmlAssinado)

//Enviar o XML para a SEFAZ
oInutilizacao.Executar(oInutNFe, oConfiguracao)

//Ver retorno da SEFAZ
EDT_RetornoWSString += "XML Retornado: " + CR + oInutilizacao.RetornoWSString + CR + CR

//Ver o conteúdo da tag CStat e XMotivo
oRetInutNFe is Unimake.Business.DFe.XML.NFe.RetInutNFe <- oInutilizacao.Result

EDT_RetornoWSString += "CStat: " + oRetInutNFe.InfInut.CStat + CR
EDT_RetornoWSString += "XMotivo: " + oRetInutNFe.InfInut.XMotivo + CR + CR

IF oRetInutNFe.InfInut.CStat = 102 //102 = Inutilização Homologada
//oRetEvento Is Unimake.Business.DFe.XML.NFe.RetEvento <- oRecepcaoEvento.Result.GetRetEvento(I - 1)
oInutilizacao.GravarXmlDistribuicao("tmp\testenfe") // Grava o XML de distribuição
ELSE
// Evento rejeitado
// Realizar as ações necessárias
END
DO
Info(ExceptionInfo(errFullDetails)) //Ele também pega o conteúdo da Exception do lado do C#, importante envolver o código em Try/Catch
END
```

Consulta situação da NFe:

```
//Criar as configurações mínimas necessárias para consumir o serviço
oConfiguracao is Unimake.Business.DFe.Servicos.Configuracao()
oConfiguracao.TipoDFe = TipoDFe.NFe
oConfiguracao.CertificadoArquivo = "C:\Projetos\certificados\UnimakePV.pfx"
oConfiguracao.CertificadoSenha = "12345678"

//Criar tag ConsSitNFe
oConsSitNFe is Unimake.Business.DFe.XML.NFe.ConsSitNFe
oConsSitNFe.Versao = "4.00"
oConsSitNFe.TpAmb = TipoAmbiente.Homologacao
oConsSitNFe.ChNFe = "41240106117473000150550300000000121905645770"

//Resgatar algumas informações do objeto do XML
EDT_RetornoWSString = "Versao schema: " + CR + oConsSitNFe.Versao + CR + CR
EDT_RetornoWSString += "Chave NFe: " + CR + oConsSitNFe.ChNFe + CR + CR

WHEN EXCEPTION IN
//Consumir o serviço
oConsultaProtocolo is Unimake.Business.DFe.Servicos.NFe.ConsultaProtocolo()
oConsultaProtocolo.Executar(oConsSitNFe, oConfiguracao)

//Pegar a string do XML da consulta situação, o que foi enviado para a SEFAZ
EDT_RetornoWSString += "XML da consulta:" + CR
EDT_RetornoWSString += oConsultaProtocolo.GetConteudoXMLAssinado() + CR + CR

//Ver retorno da SEFAZ
EDT_RetornoWSString += "XML Retornado SEFAZ: " + CR + oConsultaProtocolo.RetornoWSString + CR + CR

IF oConsultaProtocolo.Result.CStat = 100 //100 = NFe autorizada
EDT_RetornoWSString += "CStat: " + CR + oConsultaProtocolo.Result.CStat + CR + CR
EDT_RetornoWSString += "XMotivo: " + CR + oConsultaProtocolo.Result.XMotivo + CR + CR
ELSE
EDT_RetornoWSString += "CStat: " + CR + oConsultaProtocolo.Result.CStat + CR + CR
EDT_RetornoWSString += "XMotivo: " + CR + oConsultaProtocolo.Result.XMotivo + CR + CR
END
DO
Info(ExceptionInfo(errFullDetails)) //Ele também pega o conteúdo da Exception do lado do C#, importante envolver o código em Try/Catch
END
```

Consulta situação da NFCe:

```
//Criar as configurações mínimas necessárias para consumir o serviço
oConfiguracao is Unimake.Business.DFe.Servicos.Configuracao()
oConfiguracao.TipoDFe = TipoDFe.NFCe
oConfiguracao.CertificadoArquivo = "C:\Projetos\certificados\UnimakePV.pfx"
oConfiguracao.CertificadoSenha = "12345678"

//Criar tag ConsSitNFe
oConsSitNFe is Unimake.Business.DFe.XML.NFe.ConsSitNFe
oConsSitNFe.Versao = "4.00"
oConsSitNFe.TpAmb = TipoAmbiente.Homologacao
oConsSitNFe.ChNFe = "41240106117473000150550300000000121905645770"

//Resgatar algumas informações do objeto do XML
EDT_RetornoWSString = "Versao schema: " + CR + oConsSitNFe.Versao + CR + CR
EDT_RetornoWSString += "Chave NFe: " + CR + oConsSitNFe.ChNFe + CR + CR

WHEN EXCEPTION IN
//Consumir o serviço
oConsultaProtocolo is Unimake.Business.DFe.Servicos.NFCe.ConsultaProtocolo()
oConsultaProtocolo.Executar(oConsSitNFe, oConfiguracao)

//Pegar a string do XML da consulta situação, o que foi enviado para a SEFAZ
EDT_RetornoWSString += "XML da consulta:" + CR
EDT_RetornoWSString += oConsultaProtocolo.GetConteudoXMLAssinado() + CR + CR

//Ver retorno da SEFAZ
EDT_RetornoWSString += "XML Retornado SEFAZ: " + CR + oConsultaProtocolo.RetornoWSString + CR + CR

IF oConsultaProtocolo.Result.CStat = 100 //100 = NFe autorizada
EDT_RetornoWSString += "CStat: " + CR + oConsultaProtocolo.Result.CStat + CR + CR
EDT_RetornoWSString += "XMotivo: " + CR + oConsultaProtocolo.Result.XMotivo + CR + CR
ELSE
EDT_RetornoWSString += "CStat: " + CR + oConsultaProtocolo.Result.CStat + CR + CR
EDT_RetornoWSString += "XMotivo: " + CR + oConsultaProtocolo.Result.XMotivo + CR + CR
END
DO
Info(ExceptionInfo(errFullDetails)) //Ele também pega o conteúdo da Exception do lado do C#, importante envolver o código em Try/Catch
END
```

Para uma explicação mais detalhada do conteúdo deste post, confira o vídeo no seguinte link:
https://www.youtube.com/watch?v=g4KJYDINW-0
Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
Aucun avis ou commentaire ? Soyez le premier !