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

Migração de NFe para .net Standard (.netCore + .netFramework) #1013

Merged
merged 47 commits into from
Sep 16, 2019
Merged

Migração de NFe para .net Standard (.netCore + .netFramework) #1013

merged 47 commits into from
Sep 16, 2019

Conversation

danilobreda
Copy link
Contributor

#1001

Detalhe importante: alguns arquivos foram convertidos de unicode para UTF8, por isso o numero de changed files é grande, além claro de movimentações de classes para shared projects...

Criado o Shared para Danfe, e nova classe DanfeHelper para centralizar códigos duplicados
Geração de PDF, HTML ou IMAGEM PNG em arrays de bytes.
Feito console com a implementação das novas classes.
…standard, para melhor entendimento e separação da etapa de conversão.

As classes foram transferidas do WSDL SHARED para classe especifica do .net framework
@danilobreda danilobreda changed the title Migração de NFe para .net Standard (.netCore + .netFramework) #1001 Migração de NFe para .net Standard (.netCore + .netFramework) Jul 24, 2019
@danilobreda
Copy link
Contributor Author

Da mandeira que foi feita o novo relatorio de FastReport para o Danfe, é necessário que tenha 2 arquivos frxs em cada projeto (um no .net framework antigo e outro no .net core) Isso duplica o relatório e dificulta mudanças ao longo do tempo, Vou tentar jogar os relatorios no projeto Shared e fazer alteracoes em runtime do frx na hora da impressão no .net core!

@marcosgerene
Copy link
Contributor

@danilobreda

Dos serviços listados, quais ainda estão "em vigor"?

Ex: NFE Autorizacao 1.0 e NFE Autorizacaoo 3.0 "não existem mais", certo?

Vamos tentar implementar o restante pra concluir o PR e pedir para o @robertorp ou o @adeniltonbs
dar aquela ultima olhada

@danilobreda
Copy link
Contributor Author

@marcosgerene Neste link temos todos que estão "em vigor" porem existem alguns na lista de versões antigas onde não estão mais funcionando, por conta da transição para 4.0.
Todas as 4.0 estão implementadas, e quais não existem a 4.0 existe versão anterior implementada.
Utilizo todas as APIs na aplicação da empresa e até agora esta tranquilo.

@danilobreda
Copy link
Contributor Author

danilobreda commented Sep 5, 2019

Resolução de conflitos feita, merge feito do branch danilobreda:nfecoreport para master.
No wsdl foi alterado o namespace
using DFe.DocumentosEletronicos.Common;
para
using CTe.CTeOSDocumento.Common;
Por conta das alterações seguintes no master: 28d2c793ce4951e2131f2f6209762706d2773590

# Conflicts:
#	NFe.Danfe.Fast/NFe/NFeRetrato.frx
#	NFe.Wsdl/Autorizacao/NFeAutorizacao4.cs
#	Shared.DFe.Wsdl/Common/RequestBuilderAndSender.cs
#	Shared.DFe.Wsdl/Common/SoapUrls.cs
#	Shared.DFe.Wsdl/Common/SoapUtils.cs
#	Shared.DFe.Wsdl/Common/cteCabecMsg.cs
#	Shared.NFe.Servicos/ServicoNfeFactory.cs
@marcosgerene
Copy link
Contributor

@danilobreda

Em alguns posts atrás você disse que não tinha download, manifestação, etc... então você fez, é isso?

ótimo! falei ontem com o Roberto, quero ver se a gnt consegue colocar esse PR em prática o quanto antes!

abraços

@danilobreda
Copy link
Contributor Author

@marcosgerene Todos que estão na versão 4.0 estão feitos, e alguns da 1.0 e 2.0.
O qual você disse não sei se são os abaixos, e:

Esse abaixo, que tem apenas no estado do Ceara não foi implementado.
NfeDownloadNF | 2.00 / 3.10 | https://nfe.sefaz.ce.gov.br/nfe2/services/NfeDownloadNF?wsdl
(Esse acredito que esta "deprecated" https://nstecnologia.com.br/blog/substituicao-dos-webservices/

Esse abaixo que está no AN(ambiente nacional) também não foi implementado e é amplamente usado... esse é uma evolução do Download.
NFeDistribuicaoDFe | 1.00 | https://www1.nfe.fazenda.gov.br/NFeDistribuicaoDFe/NFeDistribuicaoDFe.asmx

O NFeDistribuicaoDFE vou tentar implementar ainda hoje!
Desculpa minha confusão.

@robertorp
Copy link
Contributor

Atualmente estou em um evento, mas segunda feira vou dar total prioridade a esse pull request. Para evitar dores de cabeça com conflitos.

@robertorp
Copy link
Contributor

image
Preciso de uma breve explicação, o projeto teste esta como .net core 2.1 mas o mesmo pede uma pasta 2.2
essa pasta não é criada automaticamente , isso está correto?

@danilobreda
Copy link
Contributor Author

danilobreda commented Sep 10, 2019

image
Preciso de uma breve explicação, o projeto teste esta como .net core 2.1 mas o mesmo pede uma pasta 2.2
essa pasta não é criada automaticamente , isso está correto?

Foi um erro da versão do .net core. Arrumado.
Sobre essa questão de copiar o config, é o mesmo processo que o CTe utilizad, alias maioria dos processos feitos nesse pullrequest foi baseado no CTe

/// </summary>
/// <param name="caminho">Caminho do arquivo + pastas</param>
/// <returns></returns>
private static string ArrumaCaminho(string caminho)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

esse arruma caminho , não poderia ser um Path.Combine , não?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse caminho vem da digitação do usuário, por isso é necessário esse "arruma". Essa classe utils é utilizada apenas para o console AppTeste.

/// </summary>
/// <param name="caminho">Caminho do arquivo + pastas</param>
/// <returns></returns>
private static string ArrumaCaminho(string caminho)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

esse arruma caminho , não poderia ser um Path.Combine , não?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse caminho vem da digitação do usuário, por isso é necessário esse "arruma". Essa classe utils é utilizada apenas para o console AppTeste.

using Shared.NFe.Danfe.Base;
using System.IO;

namespace NFe.Danfe.Fast.Standard
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Foi criado uma classe para cada projeto de impressão, ou seja tem duas impressões hoje? Uma para o .net core é uma para o .net framework ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O framework utilizados para impressão são diferentes (nuget FastResport.OpenSource para o standard e a dll FastReport para o .net framework)
A implementação das 2 é bem parecidas, porem alguns detalhes como o não suporte a impressão direta na impressora por exemplo fez com que a separação fosse necessária por enquanto.
Um problema foi a necessidade de 2 relatorios separados (.frx) por conta das classes no cabeçalho do arquivo frx serem diferentes. @marcosgerene disse para deixar os 2 separados por enquanto, que não teria problemas. Foi como segui.

/// <summary>
/// Classe responsável pela impressão do DANFE da NFCe em Fast Reports
/// </summary>
public class DanfeFrNfce : DanfeBase
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Foi criado uma classe para cada projeto de impressão, ou seja tem duas impressões hoje? Uma para o .net core é uma para o .net framework ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Respondido acima

@robertorp
Copy link
Contributor

não vou marcar todas classes que estão duplicadas, mas na parte de impressão tem muitas, foi realmente necessário, por qual motivo?

@robertorp
Copy link
Contributor

@marcosgerene @danilobreda
Está atualizado com as ultimas alterações também que fiz? Digo fizeram o merge com sucesso nesse ponto de tudo...
image

@robertorp
Copy link
Contributor

robertorp commented Sep 13, 2019

Pelo que observei, ficou dois projetos NFe.WSDL um que já estava pronto que é o do .netFramework e outro projeto para o .net Standard né

Um independente do outro pelo que ví
Bom eu tinha pensado na época em fazer os dois projetos em um único projeto, mas isso posso estar fazendo com o tempo também hehe

@robertorp
Copy link
Contributor

Depois do almoço continuarei olhando, faltam apenas 87 arquivos.

@danilobreda
Copy link
Contributor Author

danilobreda commented Sep 16, 2019

@robertorp

@marcosgerene @danilobreda
Está atualizado com as ultimas alterações também que fiz? Digo fizeram o merge com sucesso nesse ponto de tudo...
image

Sim foi feito o merge por mim. Esta 100%

não vou marcar todas classes que estão duplicadas, mas na parte de impressão tem muitas, foi realmente necessário, por qual motivo?

A duplicação de código não deve ocorrer, como respondi acima, foi necessário a separação pois são frameworks diferentes, o que consegui deixar no mesmo código deixei! criando um projeto shared e jogando lá o que for igual, por exemplo a classe DanfeSharedHelper O DanfeBase são diferentes por exemplo. Não tive como fazer igual! É como se fosse um novo projeto, feito para .netstandard. O Danfe não tinha como converter. Porem utilizam códigos base compartilhados.

@robertorp
Copy link
Contributor

Bom uma nova etapa concluída, @danilobreda, Obrigado pela ajuda gigante!

@robertorp robertorp merged commit 877de58 into ZeusAutomacao:master Sep 16, 2019
@robertorp
Copy link
Contributor

@danilobreda , feito o merge! obrigado!
vou estar ajustando o nuget para ter as duas versões !

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

Successfully merging this pull request may close these issues.

4 participants