Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erro na hora de gerar a danfe #1577

Open
matheusvision opened this issue Feb 27, 2025 · 21 comments
Open

Erro na hora de gerar a danfe #1577

matheusvision opened this issue Feb 27, 2025 · 21 comments

Comments

@matheusvision
Copy link

Método não encontrado: 'System.DateTime
NFe.Classes.Protocolo.infProt.get_dhRecbto()'.

O erro acontece quando está declarando a danfe aqui:
var danfe = new DanfeFrNfe(proc, new ConfiguracaoDanfeNfe());

@Valmir-Cunha
Copy link
Contributor

Bom dia, @matheusvision. Poderia detalhar mais sobre o ambiente? Como foram feitas as referências? O projeto foi incluído diretamente ou via NuGet? Com as informações fornecidas, não conseguimos auxiliar.

Um ponto importante: se estiver utilizando o NuGet, os pacotes referentes à DANFe ainda não estão disponíveis no repositório. Como explicado por @AgnaldoSilva0 no seguinte comentário: #1570 (comment).

@matheusvision
Copy link
Author

Antes estava vindo o cStat = 103 e no começo do ano a Sefaz passou a retornar 104, fizemos o ajuste, porém agora da esse erro de método não encontrado "get_dhRecbto".
Não sei te dizer como ele foi incluído, mas foi atualizado via NuGet desde então.

if (sefazResult.Retorno.cStat != 104)...

Já tentei substituir as duas pastas (NFe.Danfe.Base, NFe.Danfe.Fast) direto, mas sem sucesso.

@Valmir-Cunha
Copy link
Contributor

Estava analisando o que poderia estar causando o problema, mas não encontrei nada realmente útil. Suponho que o erro esteja relacionado ao processo de desserialização ou serialização da informação do campo public DateTimeOffset dhRecbto { get; set; }, a partir do ProxyDhRecbto. Parece que o sistema espera um recurso chamado get_dhRecbto para obter o valor durante a serialização, mas ele pode não estar disponível ou não estar sendo reconhecido corretamente.

Conversei com @AgnaldoSilva0 sobre isso e, pelo que parece, o sistema não consegue encontrar uma maneira de obter o valor desse campo. Você mencionou que realizou modificações. Algo foi alterado na classe que está gerando o erro? Poderia detalhar melhor as mudanças feitas?

@matheusvision
Copy link
Author

Não foi alterado nada na classe. A única coisa que foi alterada foi que antes recebia o cStat = 103 e agora recebe o cStat = 104, e ajustamos para funcionar com o 104.

@Valmir-Cunha
Copy link
Contributor

Poderia compartilhar o XML que está sendo usado? Pois tentei de diversas formas aqui e não consegui reproduzir o erro.

@matheusvision
Copy link
Author

Image

O erro ocorre na linha 239.
Segue o XML gerado:
<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> <NFe> <infNFe versao="4.00" Id="NFe35250211060421000124550020000026501782018489"> <ide> <cUF>35</cUF> <cNF>78201848</cNF> <natOp>VENDA</natOp> <mod>55</mod> <serie>2</serie> <nNF>2650</nNF> <dhEmi>2025-02-28T14:38:36-03:00</dhEmi> <dhSaiEnt>2025-02-28T14:38:36-03:00</dhSaiEnt> <tpNF>1</tpNF> <idDest>1</idDest> <cMunFG>3527207</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>9</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <indFinal>1</indFinal> <indPres>1</indPres> <procEmi>0</procEmi> <verProc>1.100</verProc> </ide> <emit> <CNPJ>11060421000124</CNPJ> <xNome>VISION DEVELOPER LTDA</xNome> <xFant>VISION DEVELOPER LTDA</xFant> <enderEmit> <xLgr>TESTE</xLgr> <nro>S/N</nro> <xBairro>TESTE</xBairro> <cMun>3527207</cMun> <xMun>LORENA</xMun> <UF>SP</UF> <CEP>12600200</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderEmit> <IE>420101162114</IE> <CRT>1</CRT> </emit> <dest> <CPF>88511831126</CPF> <xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome> <enderDest> <xLgr>VILA SIDON</xLgr> <nro>270</nro> <xBairro>Centro</xBairro> <cMun>3527207</cMun> <xMun>LORENA</xMun> <UF>SP</UF> <CEP>12600200</CEP> <cPais>1058</cPais> <xPais>BRASIL</xPais> </enderDest> <indIEDest>9</indIEDest> </dest> <det nItem="1"> <prod> <cProd>09</cProd> <cEAN>07898994148029</cEAN> <xProd>AGUA SGAS</xProd> <NCM>22011000</NCM> <CEST>0300100</CEST> <CFOP>5405</CFOP> <uCom>UN</uCom> <qCom>1.0000</qCom> <vUnCom>3.0000000000</vUnCom> <vProd>3.00</vProd> <cEANTrib>07898994148029</cEANTrib> <uTrib>UN</uTrib> <qTrib>1.0000</qTrib> <vUnTrib>3.0000000000</vUnTrib> <indTot>1</indTot> </prod> <imposto> <vTotTrib>0.00</vTotTrib> <ICMS> <ICMSSN102> <orig>0</orig> <CSOSN>102</CSOSN> </ICMSSN102> </ICMS> <PIS> <PISOutr> <CST>99</CST> <vBC>0.00</vBC> <pPIS>0.6500</pPIS> <vPIS>0.00</vPIS> </PISOutr> </PIS> <COFINS> <COFINSOutr> <CST>99</CST> <vBC>0.00</vBC> <pCOFINS>3.0000</pCOFINS> <vCOFINS>0.00</vCOFINS> </COFINSOutr> </COFINS> </imposto> </det> <total> <ICMSTot> <vBC>0.00</vBC> <vICMS>0.00</vICMS> <vICMSDeson>0.00</vICMSDeson> <vFCPUFDest>0.00</vFCPUFDest> <vFCP>0.00</vFCP> <vBCST>0.00</vBCST> <vST>0.00</vST> <vFCPST>0.00</vFCPST> <vFCPSTRet>0.00</vFCPSTRet> <vProd>3.00</vProd> <vFrete>0.00</vFrete> <vSeg>0.00</vSeg> <vDesc>0.00</vDesc> <vII>0.00</vII> <vIPI>0.00</vIPI> <vIPIDevol>0.00</vIPIDevol> <vPIS>0.00</vPIS> <vCOFINS>0.00</vCOFINS> <vOutro>0.00</vOutro> <vNF>3.00</vNF> <vTotTrib>0.00</vTotTrib> </ICMSTot> </total> <transp> <modFrete>9</modFrete> </transp> <pag> <detPag> <tPag>01</tPag> <vPag>3.00</vPag> </detPag> </pag> <infAdic> <infCpl>Data da compra: 28/02/2025 14:38:36. Pagamento: Dinheiro: R$ 3,00;</infCpl> </infAdic> </infNFe> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#NFe35250211060421000124550020000026501782018489"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>IN5evaW6vE+YxlMLu2KEqYDJsL0=</DigestValue> </Reference> </SignedInfo> <SignatureValue>glCNfZuIFTSkrlq2x1BF4BvK3jVOI1Rs+C8ALYz+UJKuwT+OyNm2Aos6OFE4gw+Ywd84FXMqy//8i72r78hbCTJ6acxkzKzRFv+MzYJfYqTxtPK52Ovpfhd4aivr+oQ8pn6ij9ruz2E4/Kr9NnpN8JxEPI2LiWmtI9IXRiqZ9ZQqM1HPN+yDa/cfZf4IhAj4wsm6Cz+8fabG71Lf3oZyZTgq8wEPl0h4c0SWT3Xbnbqn+Gn4GIhynYA7FXXtZVcGT75TpmbG9QD4WDGmtI8k+4r5qqLspIk1wmKX2mbOB5Wq5BfuDZnhDF1jiBQvzU74T7Iha/yEmLw7L1mvs4Ix9g==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>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</X509Certificate> </X509Data> </KeyInfo> </Signature> </NFe> <protNFe versao="4.00"> <infProt> <tpAmb>2</tpAmb> <verAplic>SP_NFE_PL009_V4</verAplic> <chNFe>35250211060421000124550020000026501782018489</chNFe> <dhRecbto>2025-02-28T14:38:36-03:00</dhRecbto> <nProt>135250001656347</nProt> <digVal>IN5evaW6vE+YxlMLu2KEqYDJsL0=</digVal> <cStat>100</cStat> <xMotivo>Autorizado o uso da NF-e</xMotivo> </infProt> </protNFe> </nfeProc>

@Valmir-Cunha
Copy link
Contributor

Valmir-Cunha commented Feb 28, 2025

Com o XML, consegui gerar a DANFE normalmente, como pode ser visto na imagem.

Observando os erros na imagem que você enviou, aparentemente o problema é o mesmo descrito na issue Problemas para gerar DANFE a partir de XML utilizando a biblioteca NuGet.

Você mencionou que está utilizando o NuGet da biblioteca. Dessa forma, não será possível utilizar a impressão da DANFE pelo FastReport ao usar o NuGet. Para utilizar o FastReport, é necessário baixar o projeto e referenciá-lo em sua solução, conforme explicado no comentário: #1570 (comment).

Image

@matheusvision
Copy link
Author

Por meio externo a gente consegue gerar também, porém por meio do sistema ocorre o erro mencionado acima (Método não encontrado: 'System.DateTime
NFe.Classes.Protocolo.infProt.get_dhRecbto()'.)

@Valmir-Cunha
Copy link
Contributor

Valmir-Cunha commented Mar 7, 2025

Bom dia, @matheusvision.

Não utilizei uma aplicação externa; utilizei uma aplicação própria integrada ao pacote, que realiza a impressão da mesma forma que está sendo feita na imagem do comentário.

O erro mostrado na imagem do comentário aqui foi resolvido?

Em um comentário acima, você mencionou: "Não sei te dizer como ele foi incluído, mas foi atualizado via NuGet desde então." Reafirmo que a impressão da DANFE não é possível via NuGet. O pacote NuGet para impressão de DANFE ainda está em fase de planejamento.

@matheusvision
Copy link
Author

Não foi resolvido. Após passar pela ConfiguracaoDanfeNfe() estoura o erro.

@Valmir-Cunha
Copy link
Contributor

Me refiro ao erra da seguinte imagem:

Image

Que seria um erro de compilação, não executando a aplicação.

@matheusvision
Copy link
Author

O erro de compilação foi resolvido.
Mas o problema real é que eu não sei quando, nem por que, nem onde está sendo chamado essa função: System.DateTime
NFe.Classes.Protocolo.infProt.get_dhRecbto().

@Valmir-Cunha
Copy link
Contributor

Conversei com Adenilton, fundador do repositório, e ele comentou que já viu esse tipo de erro, mas não com esse tipo de dado. Esse erro geralmente ocorre quando o tipo de dado não foi importado no arquivo .frx. Pode ser que o sistema esteja configurado para usar um arquivo .frx inválido, pois o tipo DateTime está disponível em System e é o primeiro namespace importado no .frx, conforme a imagem.

Image

Um caso comum em que esse erro ocorre, por exemplo, é ao tentar usar um enum sem importar o namespace correspondente no arquivo .frx.

Como ele foi mencionado que o erro ocorreu com o tipo System.DateTime, pode ser que a linha using System; foi removida do arquivo .frx, ou que está sendo utilizando um .frx vazio ou inválido.

Peço que verifique o arquivo .frx utilizado em execução e compare-o com o arquivo disponível na biblioteca.

@matheusvision
Copy link
Author

matheusvision commented Mar 10, 2025

Olhando os arquivos do projeto, notei que não haviam os arquivos .frx no caminho NFe.Danfe.Base > NFe, Copiei os arquivos da biblioteca e coloquei no projeto, mas continuou dando o mesmo erro.

@Valmir-Cunha
Copy link
Contributor

Valmir-Cunha commented Mar 10, 2025

Após adicionar os arquivos .frx, foi ajustado para que eles estejam junto aos arquivos binários do projeto de vocês após a compilação? Conforme indicado no README: "A impressão requer que o arquivo .frx seja especificado. Ou seja, ao publicar os binários do seu projeto, os arquivos .frx devem estar presentes, e o caminho do arquivo deve ser informado para que a impressão seja gerada."

Poderia me informar o valor da variável frx, na classe DanfeFrNfe no namespace NFe.Danfe.Fast.NFe ao tentar realizar uma impressão?

Image

@matheusvision
Copy link
Author

Aparentemente está igual.
Image

@Valmir-Cunha
Copy link
Contributor

Valmir-Cunha commented Mar 11, 2025

Refiro-me ao valor que é atribuído à variável frx durante a execução ao tentar realizar a impressão.

Além disso, sobre a outra dúvida que mencionei no comentário:
Após adicionar os arquivos .frx, foi ajustado para que eles estejam junto aos arquivos binários do projeto de vocês após a compilação? Conforme indicado no README: "A impressão requer que o arquivo .frx seja especificado. Ou seja, ao publicar os binários do seu projeto, os arquivos .frx devem estar presentes, e o caminho do arquivo deve ser informado para que a impressão seja gerada."

Se possível, envie o stacktrace do erro.

@matheusvision
Copy link
Author

Segue o stacktrace do erro:

System.MissingMethodException
HResult=0x80131513
Message=Método não encontrado: 'System.DateTime NFe.Classes.Protocolo.infProt.get_dhRecbto()'.
Source=NFe.Danfe.Fast
StackTrace:
at NFe.Danfe.Fast.NFe.DanfeFrNfe..ctor(nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe, String desenvolvedor, String arquivoRelatorio) in C:\ALAN\TRABALHO\VISION\PROJETOS\VDSIS\VDSIS_OPER\NFe.Danfe.Fast\NFe\DanfeFrNfe.cs:line 192
at VisionDeveloper.PDV.WinForms.Temp.NFe.v3_10.NFeUtils.SendNFe(SaleManager saleManager) in C:\VDSIS_OPER\VisionDeveloper.PDV.WinForms\Temp.NFe.v3_10\NFeUtils.cs:line 239
at VisionDeveloper.PDV.WinForms.NFe.FrmInvoiceIssuer.btnSendNFe_Click(Object sender, EventArgs e) in C:\VDSIS_OPER\VisionDeveloper.PDV.WinForms\NFe\FrmInvoiceIssuer.cs:line 476

Esta exceção foi gerada originalmente nesta pilha de chamadas:
VisionDeveloper.PDV.WinForms.Temp.NFe.v3_10.NFeUtils.SendNFe(VisionDeveloper.PDV.WinForms.Managers.SaleManager) em NFeUtils.cs
VisionDeveloper.PDV.WinForms.NFe.FrmInvoiceIssuer.btnSendNFe_Click(object, System.EventArgs) em FrmInvoiceIssuer.cs

@Valmir-Cunha
Copy link
Contributor

Irei investigar o trace. Quanto ao valor que é atribuído à variável frx durante a execução ao tentar realizar a impressão e a localização dos arquivos .frx? Perguntados no comentários acima.

@matheusvision
Copy link
Author

A localização dos arquivos é NFe.Danfe.Base\NFe.
O valor atribuído à variável frx durante a execução: {NFe.Classes.NFe}

@Valmir-Cunha
Copy link
Contributor

A variável frx é um array de byte que armazena o arquivo NFeRetrato.frx, não tem como ela armazenar NFe.Classes.NFe.
Quanto a localização do arquivos, me refiro se, em tempo de execução, a pasta NFe com os arquivos frx estão juntos aos binários da sua aplicação. Pois a classe DanfeFrNfe vai buscar esses arquivos frx na pasta bin da sua aplicação e não no diretório NFe.Danfe.Base\NFe.

Caso esses arquivos frx não estejam sendo colocados na pasta bin ao compilar sua aplicação, a impressão não vai funcionar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants