From 119592e7f926608f3edea3724d68e0f648691eee Mon Sep 17 00:00:00 2001 From: Thiago Batista Date: Tue, 31 Mar 2026 11:39:03 -0300 Subject: [PATCH 1/4] adicionando Evento Cancelamento Desacordo em CTe.Servicos --- CTe.Classes/Servicos/Evento/detEvento.cs | 1 + .../Servicos/Evento/evCancPrestDesacordo.cs | 18 +++++++ .../Eventos/EventoCancelamentoDesacordo.cs | 47 +++++++++++++++++++ CTe.Servicos/Factory/ClassesFactory.cs | 16 +++++++ 4 files changed, 82 insertions(+) create mode 100644 CTe.Classes/Servicos/Evento/evCancPrestDesacordo.cs create mode 100644 CTe.Servicos/Eventos/EventoCancelamentoDesacordo.cs diff --git a/CTe.Classes/Servicos/Evento/detEvento.cs b/CTe.Classes/Servicos/Evento/detEvento.cs index 9a07eeaa2..1a0e2a46f 100644 --- a/CTe.Classes/Servicos/Evento/detEvento.cs +++ b/CTe.Classes/Servicos/Evento/detEvento.cs @@ -11,6 +11,7 @@ public class detEvento [XmlElement("evCancCTe", typeof(evCancCTe), Namespace = "http://www.portalfiscal.inf.br/cte")] [XmlElement("evCCeCTe", typeof(evCCeCTe), Namespace = "http://www.portalfiscal.inf.br/cte")] [XmlElement("evPrestDesacordo", typeof(evPrestDesacordo), Namespace = "http://www.portalfiscal.inf.br/cte")] + [XmlElement("evCancPrestDesacordo", typeof(evCancPrestDesacordo), Namespace = "http://www.portalfiscal.inf.br/cte")] public EventoContainer EventoContainer { get; set; } } } \ No newline at end of file diff --git a/CTe.Classes/Servicos/Evento/evCancPrestDesacordo.cs b/CTe.Classes/Servicos/Evento/evCancPrestDesacordo.cs new file mode 100644 index 000000000..f50233dc4 --- /dev/null +++ b/CTe.Classes/Servicos/Evento/evCancPrestDesacordo.cs @@ -0,0 +1,18 @@ +using System.Xml.Serialization; + +namespace CTe.Classes.Servicos.Evento +{ + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte")] + public class evCancPrestDesacordo : EventoContainer + { + public evCancPrestDesacordo() + { + this.descEvento = "Cancelamento Prestação do Serviço em Desacordo"; + } + + public string descEvento { get; set; } + + public string nProtEvPrestDes { get; set; } + + } +} diff --git a/CTe.Servicos/Eventos/EventoCancelamentoDesacordo.cs b/CTe.Servicos/Eventos/EventoCancelamentoDesacordo.cs new file mode 100644 index 000000000..c41c0547e --- /dev/null +++ b/CTe.Servicos/Eventos/EventoCancelamentoDesacordo.cs @@ -0,0 +1,47 @@ +using CTe.Classes; +using CTe.Classes.Servicos.Evento; +using CTe.Classes.Servicos.Evento.Flags; +using CTe.Servicos.Factory; +using System.Threading.Tasks; + +namespace CTe.Servicos.Eventos +{ + public class EventoCancelamentoDesacordo + { + private readonly int _sequenciaEvento; + private readonly string _cnpj; + private readonly string _chave; + private readonly string _nProtEvPrestDes; + + public eventoCTe EventoEnviado { get; private set; } + public retEventoCTe RetornoSefaz { get; private set; } + + public EventoCancelamentoDesacordo(int sequenciaEvento, string chave, string cnpj, string nProtEvPrestDes) + { + _chave = chave; + _cnpj = cnpj; + _sequenciaEvento = sequenciaEvento; + _nProtEvPrestDes = nProtEvPrestDes; + } + + public retEventoCTe CancelarDesacordo(ConfiguracaoServico configuracaoServico = null) + { + var eventoCancelaDiscordar = ClassesFactory.CriaEvCancPrestDesacordo(_nProtEvPrestDes); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.CancelamentoPrestacaodoServicoemDesacordo, _sequenciaEvento, _chave, _cnpj, eventoCancelaDiscordar, configuracaoServico); + RetornoSefaz = new ServicoController().Executar(CTeTipoEvento.CancelamentoPrestacaodoServicoemDesacordo, _sequenciaEvento, _chave, _cnpj, eventoCancelaDiscordar, configuracaoServico); + + return RetornoSefaz; + } + + public async Task CancelarDesacordoAsync(ConfiguracaoServico configuracaoServico = null) + { + var eventoCancelaDiscordar = ClassesFactory.CriaEvCancPrestDesacordo(_nProtEvPrestDes); + + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.CancelamentoPrestacaodoServicoemDesacordo, _sequenciaEvento, _chave, _cnpj, eventoCancelaDiscordar, configuracaoServico); + RetornoSefaz = await new ServicoController().ExecutarAsync(CTeTipoEvento.CancelamentoPrestacaodoServicoemDesacordo, _sequenciaEvento, _chave, _cnpj, eventoCancelaDiscordar, configuracaoServico); + + return RetornoSefaz; + } + } +} diff --git a/CTe.Servicos/Factory/ClassesFactory.cs b/CTe.Servicos/Factory/ClassesFactory.cs index e0bc370e0..0c1268686 100644 --- a/CTe.Servicos/Factory/ClassesFactory.cs +++ b/CTe.Servicos/Factory/ClassesFactory.cs @@ -131,6 +131,22 @@ public static evPrestDesacordo CriaEvPrestDesacordo(string indicadorDesacordo, s return evPrestDesacordo; } + public static evCancPrestDesacordo CriaEvCancPrestDesacordo(string nProtEvPrestDes, ConfiguracaoServico configuracaoServico = null) + { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var evPrestDesacordo = new evCancPrestDesacordo + { + nProtEvPrestDes = nProtEvPrestDes + }; + + if (configServico.cUF == Estado.MT)//sem acentuação issue #1386 + { + evPrestDesacordo.descEvento = "Cancelamento Prestacaoo do Servico em Desacordo"; + } + + return evPrestDesacordo; + } public static enviCTe CriaEnviCTe(int lote, List cteEletronicoList, ConfiguracaoServico configuracaoServico = null) { From bb7e221d16a9e3e6931985517f16de5592e9c697 Mon Sep 17 00:00:00 2001 From: Thiago Batista Date: Tue, 31 Mar 2026 11:39:32 -0300 Subject: [PATCH 2/4] adicionando teste de cancelamento de desacordo em Program.cs --- CTe.AppTeste.NetCore/Program.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CTe.AppTeste.NetCore/Program.cs b/CTe.AppTeste.NetCore/Program.cs index 6ed940b80..e348f7241 100644 --- a/CTe.AppTeste.NetCore/Program.cs +++ b/CTe.AppTeste.NetCore/Program.cs @@ -111,6 +111,9 @@ private static async void Menu() case 10: await EventoDesacordoCTe(); break; + case 11: + await EventoCancelaDesacordoCTe(); + break; } if (Convert.ToInt32(option) > 0) @@ -370,6 +373,23 @@ private static async Task EventoDesacordoCTe() OnSucessoSync(new RetornoEEnvio(retorno)); } + private static async Task EventoCancelaDesacordoCTe() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + //CarregarConfiguracoes(config); + var configuracaoServico = MontarConfiguracoes(config); + + var cnpj = RequisitarInput("CNPJ Tomador"); + var chave = RequisitarInput("Chave CTe"); + var sequenciaEvento = int.Parse(RequisitarInput("Sequencia Evento")); + var nProtEventoDesacordo = RequisitarInput("Número do Protocolo do Evento de Desacordo"); + + var servico = new EventoCancelamentoDesacordo(sequenciaEvento, chave, cnpj, nProtEventoDesacordo); + var retorno = await servico.CancelarDesacordoAsync(configuracaoServico); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + private static async Task CartaCorrecao() { var config = new ConfiguracaoDao().BuscarConfiguracao(); From f331f15fb949c75b59401b70482710f0ea36d08e Mon Sep 17 00:00:00 2001 From: Thiago Batista Date: Tue, 31 Mar 2026 11:40:19 -0300 Subject: [PATCH 3/4] adicionando teste de cancelamento de desacordo na tela WPF de teste --- CTe.AppTeste/CTeTesteModel.cs | 16 ++++++++++++++++ CTe.AppTeste/MainWindow.xaml | 4 +++- CTe.AppTeste/MainWindow.xaml.cs | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CTe.AppTeste/CTeTesteModel.cs b/CTe.AppTeste/CTeTesteModel.cs index 3d6da00e5..9b23d463f 100644 --- a/CTe.AppTeste/CTeTesteModel.cs +++ b/CTe.AppTeste/CTeTesteModel.cs @@ -793,6 +793,22 @@ public void EventoDesacordoCTe() OnSucessoSync(new RetornoEEnvio(retorno)); } + public void EventoCancelaDesacordoCTe() + { + var config = new ConfiguracaoDao().BuscarConfiguracao(); + CarregarConfiguracoes(config); + + var cnpj = (InputBoxTuche("CNPJ Tomador")); + var chave = (InputBoxTuche("Chave CTe")); + var sequenciaEvento = int.Parse(InputBoxTuche("Sequencia Evento")); + var nProtEventoDesacordo = InputBoxTuche("Número do Protocolo do Evento de Desacordo"); + + var servico = new EventoCancelamentoDesacordo(sequenciaEvento, chave, cnpj, nProtEventoDesacordo); + var retorno = servico.CancelarDesacordo(); + + OnSucessoSync(new RetornoEEnvio(retorno)); + } + public void CartaCorrecao() { var config = new ConfiguracaoDao().BuscarConfiguracao(); diff --git a/CTe.AppTeste/MainWindow.xaml b/CTe.AppTeste/MainWindow.xaml index f928d0d3c..d576a74b3 100644 --- a/CTe.AppTeste/MainWindow.xaml +++ b/CTe.AppTeste/MainWindow.xaml @@ -228,6 +228,7 @@ + @@ -243,8 +244,9 @@ + - + diff --git a/CTe.AppTeste/MainWindow.xaml.cs b/CTe.AppTeste/MainWindow.xaml.cs index cedf228b6..2f8db0d57 100644 --- a/CTe.AppTeste/MainWindow.xaml.cs +++ b/CTe.AppTeste/MainWindow.xaml.cs @@ -88,6 +88,11 @@ private void EventoDesacordoCTe_Click(object sender, RoutedEventArgs e) _model.EventoDesacordoCTe(); } + private void EventoCancelaDesacordoCTe_Click(object sender, RoutedEventArgs e) + { + _model.EventoCancelaDesacordoCTe(); + } + private void CartaCorrecao_Click(object sender, RoutedEventArgs e) { _model.CartaCorrecao(); From f526bf9607ba02aab848472fa3a44c77486d45a6 Mon Sep 17 00:00:00 2001 From: Thiago Batista Date: Wed, 1 Apr 2026 12:00:15 -0300 Subject: [PATCH 4/4] =?UTF-8?q?BUG=20-=20consulta=20status=20CTe=20com=20c?= =?UTF-8?q?onfigura=C3=A7=C3=B5es=20nullas=20n=C3=A3o=20=C3=A9=20realizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CTe.Servicos/ConsultaStatus/StatusServico.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CTe.Servicos/ConsultaStatus/StatusServico.cs b/CTe.Servicos/ConsultaStatus/StatusServico.cs index 1b55b13a6..5cb13721e 100644 --- a/CTe.Servicos/ConsultaStatus/StatusServico.cs +++ b/CTe.Servicos/ConsultaStatus/StatusServico.cs @@ -28,6 +28,9 @@ public retConsStatServCte ConsultaStatus(ConfiguracaoServico configuracaoServico public retConsStatServCTe ConsultaStatusV4(ConfiguracaoServico configuracaoServico = null) { + if (configuracaoServico == null) + configuracaoServico = ConfiguracaoServico.Instancia; + var consStatServCte = ClassesFactory.CriaConsStatServCTe(configuracaoServico); if (configuracaoServico.IsValidaSchemas)