diff --git a/.vs/Zeus NFe/v15/.suo b/.vs/Zeus NFe/v15/.suo index 7dcad0ff8..f75e7c3b1 100644 Binary files a/.vs/Zeus NFe/v15/.suo and b/.vs/Zeus NFe/v15/.suo differ diff --git a/CTe.AppTeste/CTeTesteModel.cs b/CTe.AppTeste/CTeTesteModel.cs index 5353b4245..6db81315d 100644 --- a/CTe.AppTeste/CTeTesteModel.cs +++ b/CTe.AppTeste/CTeTesteModel.cs @@ -1031,6 +1031,10 @@ public void CriarEnviarCTe2e3() var numeroLote = InputBoxTuche("Número Lote"); var servicoRecepcao = new ServicoCTeRecepcao(); + + // Evento executado antes do envio do CT-e para o WebService + // servicoRecepcao.AntesDeEnviar += AntesEnviarLoteCte; + var retornoEnvio = servicoRecepcao.CTeRecepcao(int.Parse(numeroLote), new List { cteEletronico }); OnSucessoSync(new RetornoEEnvio(retornoEnvio)); @@ -1039,6 +1043,14 @@ public void CriarEnviarCTe2e3() new ConfiguracaoDao().SalvarConfiguracao(config); } + private void AntesEnviarLoteCte(object sender, AntesEnviarRecepcao e) + { + e.enviCTe.CTe.ForEach(cte => + { + MessageBoxTuche(cte.Chave()); + }); + } + private static int GetRandom() { diff --git a/CTe.Servicos/CTe.Servicos.csproj b/CTe.Servicos/CTe.Servicos.csproj index fb6c09bb1..12249f97e 100644 --- a/CTe.Servicos/CTe.Servicos.csproj +++ b/CTe.Servicos/CTe.Servicos.csproj @@ -54,6 +54,7 @@ + diff --git a/CTe.Servicos/Recepcao/AntesEnviarRecepcao.cs b/CTe.Servicos/Recepcao/AntesEnviarRecepcao.cs new file mode 100644 index 000000000..d071b111a --- /dev/null +++ b/CTe.Servicos/Recepcao/AntesEnviarRecepcao.cs @@ -0,0 +1,20 @@ +using System; +using CTe.Classes.Servicos.Recepcao; + +namespace CTe.Servicos.Recepcao +{ + public class AntesEnviarRecepcao : EventArgs + { + private readonly enviCTe _enviCTe; + + public AntesEnviarRecepcao(enviCTe enviCTe) + { + _enviCTe = enviCTe; + } + + public enviCTe enviCTe + { + get { return _enviCTe; } + } + } +} \ No newline at end of file diff --git a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs index 2e12c23ec..35b8037ef 100644 --- a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs +++ b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs @@ -31,6 +31,7 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System; using System.Collections.Generic; using CTe.Classes; using CTe.Classes.Servicos.Recepcao; @@ -44,6 +45,8 @@ namespace CTe.Servicos.Recepcao { public class ServicoCTeRecepcao { + public event EventHandler AntesDeEnviar; + public retEnviCte CTeRecepcao(int lote, List cteEletronicosList) { var instanciaConfiguracao = ConfiguracaoServico.Instancia; @@ -73,6 +76,9 @@ public retEnviCte CTeRecepcao(int lote, List cteEletronicosList) enviCte.SalvarXmlEmDisco(); var webService = WsdlFactory.CriaWsdlCteRecepcao(); + + OnAntesDeEnviar(enviCte); + var retornoXml = webService.cteRecepcaoLote(enviCte.CriaRequestWs()); var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); @@ -80,5 +86,11 @@ public retEnviCte CTeRecepcao(int lote, List cteEletronicosList) return retorno; } + + protected virtual void OnAntesDeEnviar(enviCTe enviCTe) + { + var handler = AntesDeEnviar; + if (handler != null) handler(this, new AntesEnviarRecepcao(enviCTe)); + } } } \ No newline at end of file diff --git a/MDFe.AppTeste/MDFeTesteModel.cs b/MDFe.AppTeste/MDFeTesteModel.cs index e23789388..c29e01448 100755 --- a/MDFe.AppTeste/MDFeTesteModel.cs +++ b/MDFe.AppTeste/MDFeTesteModel.cs @@ -18,6 +18,7 @@ /* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */ /* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */ /* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ +/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/ /* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */ /* */ /* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/ @@ -778,6 +779,10 @@ public void CriarEnviar() #endregion var servicoRecepcao = new ServicoMDFeRecepcao(); + + // Evento executado antes do envio da mdf-e para a sefaz + //servicoRecepcao.AntesDeEnviar += AntesEnviar; + var retornoEnvio = servicoRecepcao.MDFeRecepcao(1, mdfe); OnSucessoSync(new RetornoEEnvio(retornoEnvio)); @@ -786,6 +791,11 @@ public void CriarEnviar() new ConfiguracaoDao().SalvarConfiguracao(config); } + private void AntesEnviar(object sender, AntesDeEnviar e) + { + MessageBoxTuche(e.enviMdFe.MDFe.Chave()); + } + private static int GetRandom() { var rand = new Random(); diff --git a/MDFe.Servicos/MDFe.Servicos.csproj b/MDFe.Servicos/MDFe.Servicos.csproj index 533a6e1bb..51b6f5f3e 100755 --- a/MDFe.Servicos/MDFe.Servicos.csproj +++ b/MDFe.Servicos/MDFe.Servicos.csproj @@ -51,6 +51,7 @@ + diff --git a/MDFe.Servicos/RecepcaoMDFe/AntesDeEnviar.cs b/MDFe.Servicos/RecepcaoMDFe/AntesDeEnviar.cs new file mode 100644 index 000000000..169a202c6 --- /dev/null +++ b/MDFe.Servicos/RecepcaoMDFe/AntesDeEnviar.cs @@ -0,0 +1,21 @@ +using System; +using MDFe.Classes.Servicos.Autorizacao; + +namespace MDFe.Servicos.RecepcaoMDFe +{ + public class AntesDeEnviar : EventArgs + { + private MDFeEnviMDFe _enviMdFe; + + public AntesDeEnviar(MDFeEnviMDFe enviMdfe) + { + _enviMdFe = enviMdfe; + } + + public MDFeEnviMDFe enviMdFe + { + get { return _enviMdFe; } + set { _enviMdFe = value; } + } + } +} \ No newline at end of file diff --git a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs index 80ccb3fc2..b051e6448 100755 --- a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs +++ b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs @@ -31,9 +31,11 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System; using MDFe.Classes.Extencoes; using MDFe.Classes.Flags; using MDFe.Classes.Retorno.MDFeRecepcao; +using MDFe.Classes.Servicos.Autorizacao; using MDFe.Servicos.Factory; using MDFe.Utils.Configuracoes; using MDFe.Utils.Flags; @@ -43,6 +45,8 @@ namespace MDFe.Servicos.RecepcaoMDFe { public class ServicoMDFeRecepcao { + public event EventHandler AntesDeEnviar; + public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) { var enviMDFe = ClassesFactory.CriaEnviMDFe(lote, mdfe); @@ -62,6 +66,9 @@ public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) enviMDFe.SalvarXmlEmDisco(); var webService = WsdlFactory.CriaWsdlMDFeRecepcao(); + + OnAntesDeEnviar(enviMDFe); + var retornoXml = webService.mdfeRecepcaoLote(enviMDFe.CriaXmlRequestWs()); var retorno = MDFeRetEnviMDFe.LoadXml(retornoXml.OuterXml, enviMDFe); @@ -69,5 +76,11 @@ public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) return retorno; } + + protected virtual void OnAntesDeEnviar(MDFeEnviMDFe enviMdfe) + { + var handler = AntesDeEnviar; + if (handler != null) handler(this, new AntesDeEnviar(enviMdfe)); + } } } \ No newline at end of file