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();
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();
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/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)
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)
{