diff --git a/CTe.Classes/cteOSProc.cs b/CTe.Classes/cteOSProc.cs new file mode 100644 index 000000000..d75ceea22 --- /dev/null +++ b/CTe.Classes/cteOSProc.cs @@ -0,0 +1,32 @@ +using System; +using System.Xml.Serialization; +using CTe.Classes.Protocolo; +using CTe.Classes.Servicos.Tipos; +using DFe.Utils; + +namespace CTe.Classes +{ + [Serializable] + [XmlRoot(Namespace = "http://www.portalfiscal.inf.br/cte", + ElementName = "cteOSProc")] + public class cteOSProc + { + [XmlAttribute] + public versao versao { get; set; } + + public CTe CTeOS { get; set; } + + public protCTe protCTe { get; set; } + + + public static cteOSProc LoadXmlString(string xml) + { + return FuncoesXml.XmlStringParaClasse(xml); + } + + public static cteOSProc LoadXmlArquivo(string caminhoArquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml); + } + } +} \ No newline at end of file diff --git a/CTe.Dacte.Base/CTe/CTeRetrato.frx b/CTe.Dacte.Base/CTe/CTeRetrato.frx index c34023d70..4b032e12f 100644 --- a/CTe.Dacte.Base/CTe/CTeRetrato.frx +++ b/CTe.Dacte.Base/CTe/CTeRetrato.frx @@ -1491,7 +1491,7 @@ namespace FastReport - + @@ -1584,8 +1584,8 @@ namespace FastReport - - + + diff --git a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs index ca22fd62d..04cb5abf5 100644 --- a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs +++ b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs @@ -43,54 +43,60 @@ public class ConsultaProtcoloServico { public retConsSitCTe ConsultaProtocolo(string chave, ConfiguracaoServico configuracaoServico = null) { - var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - if (configuracaoServico.IsValidaSchemas) - consSitCTe.ValidarSchema(configuracaoServico); + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); - consSitCTe.SalvarXmlEmDisco(configuracaoServico); + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); - var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configuracaoServico); + consSitCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico); var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs()); var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); - retorno.SalvarXmlEmDisco(chave, configuracaoServico); + retorno.SalvarXmlEmDisco(chave, configServico); return retorno; } public retConsSitCTe ConsultaProtocoloV4(string chave, ConfiguracaoServico configuracaoServico = null) { - var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); - if (configuracaoServico.IsValidaSchemas) - consSitCTe.ValidarSchema(configuracaoServico); + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); - consSitCTe.SalvarXmlEmDisco(configuracaoServico); + consSitCTe.SalvarXmlEmDisco(configServico); - var webService = WsdlFactory.CriaWsdlConsultaProtocoloV4(configuracaoServico); + var webService = WsdlFactory.CriaWsdlConsultaProtocoloV4(configServico); var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs()); var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); - retorno.SalvarXmlEmDisco(chave, configuracaoServico); + retorno.SalvarXmlEmDisco(chave, configServico); return retorno; } public async Task ConsultaProtocoloAsync(string chave, ConfiguracaoServico configuracaoServico = null) { - var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico); - - if (configuracaoServico.IsValidaSchemas) - consSitCTe.ValidarSchema(configuracaoServico); - - consSitCTe.SalvarXmlEmDisco(configuracaoServico); - - var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico); + + if (configServico.IsValidaSchemas) + consSitCTe.ValidarSchema(configServico); + + consSitCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico); var retornoXml = await webService.cteConsultaCTAsync(consSitCTe.CriaRequestWs()); var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe); - retorno.SalvarXmlEmDisco(chave, configuracaoServico); + retorno.SalvarXmlEmDisco(chave, configServico); return retorno; } diff --git a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs index 6a2c8b595..67350d156 100644 --- a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs +++ b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs @@ -50,36 +50,40 @@ public ConsultaReciboServico(string recibo) public retConsReciCTe Consultar(ConfiguracaoServico configuracaoServico = null) { - var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configuracaoServico); - - if (configuracaoServico.IsValidaSchemas) - consReciCTe.ValidarSchema(configuracaoServico); - - consReciCTe.SalvarXmlEmDisco(configuracaoServico); - - var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico); + + if (configServico.IsValidaSchemas) + consReciCTe.ValidarSchema(configServico); + + consReciCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico); var retornoXml = webService.cteRetRecepcao(consReciCTe.CriaRequestWs()); var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } public async Task ConsultarAsync(ConfiguracaoServico configuracaoServico = null) { - var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configuracaoServico); - - if (configuracaoServico.IsValidaSchemas) - consReciCTe.ValidarSchema(configuracaoServico); - - consReciCTe.SalvarXmlEmDisco(configuracaoServico); - - var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico); + + if (configServico.IsValidaSchemas) + consReciCTe.ValidarSchema(configServico); + + consReciCTe.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico); var retornoXml = await webService.cteRetRecepcaoAsync(consReciCTe.CriaRequestWs()); var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } diff --git a/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs b/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs index 55ce9f7a6..e068c9f3e 100644 --- a/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs +++ b/CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs @@ -79,6 +79,7 @@ public ServicoCTeDistribuicaoDFe(ConfiguracaoServico configuracaoServico, X509Ce public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null) { var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia; + distDFeInt pedDistDFeInt; XmlDocument dadosConsulta; var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico); diff --git a/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs b/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs index b21d20cc0..583b08f54 100644 --- a/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs +++ b/CTe.Servicos/EnviarCte/ServicoEnviarCte.cs @@ -14,10 +14,10 @@ public class ServicoEnviarCte public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null) { var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - + ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao(); - retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List {cte}, configServico); + retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List { cte }, configServico); if (retEnviCte.cStat != 103) { @@ -28,7 +28,6 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico co retConsReciCTe retConsReciCTe = servicoConsultaRecibo.Consultar(configServico); - cteProc cteProc = null; if (retConsReciCTe.cStat == 104) { @@ -54,6 +53,7 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico co public async Task EnviarAsync(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null) { var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao(); retEnviCte retEnviCte = await servicoRecepcao.CTeRecepcaoAsync(lote, new List { cte }, configServico); diff --git a/CTe.Servicos/Eventos/EventoCancelamento.cs b/CTe.Servicos/Eventos/EventoCancelamento.cs index 5584303e0..c644667fb 100644 --- a/CTe.Servicos/Eventos/EventoCancelamento.cs +++ b/CTe.Servicos/Eventos/EventoCancelamento.cs @@ -72,30 +72,33 @@ public EventoCancelamento(CteEletronicoOS cte, int sequenciaEvento, string numer public retEventoCTe Cancelar(ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); - EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configuracaoServico); - RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico); + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico); + RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); return RetornoSefaz; } public retEventoCTe CancelarOs(ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); - EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, evento, configuracaoServico); - RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico); + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, evento, configServico); + RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); return RetornoSefaz; } public async Task CancelarAsync(ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo); - EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configuracaoServico); - RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico); + EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico); + RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico); return RetornoSefaz; } diff --git a/CTe.Servicos/Eventos/FactoryEvento.cs b/CTe.Servicos/Eventos/FactoryEvento.cs index 04eaaca51..f862794e2 100644 --- a/CTe.Servicos/Eventos/FactoryEvento.cs +++ b/CTe.Servicos/Eventos/FactoryEvento.cs @@ -47,7 +47,8 @@ public class FactoryEvento //Vou manter para evitar quebra de código pois a classe e o metodo são publicos public static eventoCTe CriaEvento(CTeEletronico cte, CTeTipoEvento cTeTipoEvento, int sequenciaEvento, EventoContainer container, ConfiguracaoServico configuracaoServico = null) { - return CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); } public static eventoCTe CriaEvento(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null) diff --git a/CTe.Servicos/Eventos/ServicoController.cs b/CTe.Servicos/Eventos/ServicoController.cs index 4754c5c2d..390af483c 100644 --- a/CTe.Servicos/Eventos/ServicoController.cs +++ b/CTe.Servicos/Eventos/ServicoController.cs @@ -50,64 +50,74 @@ public class ServicoController : IServicoController { public retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) { - return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); } public retEventoCTe Executar(CteEletronicoOS cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) { - return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.InfCte.emit.CNPJ, container, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.InfCte.emit.CNPJ, container, configServico); } public async Task ExecutarAsync(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null) { - return await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + return await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico); } public retEventoCTe Executar(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null) { - var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configuracaoServico); - evento.Assina(configuracaoServico); - + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico); + evento.Assina(configServico); + if (configuracaoServico.IsValidaSchemas) - evento.ValidarSchema(configuracaoServico); + evento.ValidarSchema(configServico); - evento.SalvarXmlEmDisco(configuracaoServico); + evento.SalvarXmlEmDisco(configServico); XmlNode retornoXml = null; if (evento.versao == versao.ve200 || evento.versao == versao.ve300) { - var webService = WsdlFactory.CriaWsdlCteEvento(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteEvento(configServico); retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs()); } if (evento.versao == versao.ve400) { - var webService = WsdlFactory.CriaWsdlCteEventoV4(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteEventoV4(configServico); retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs()); } var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } - public async Task ExecutarAsync(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null) + public async Task ExecutarAsync(CTeTipoEvento cTeTipoEvento, + int sequenciaEvento, + string chave, string + cnpj, EventoContainer container, + ConfiguracaoServico configuracaoServico = null) { - var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configuracaoServico); - evento.Assina(configuracaoServico); - - if (configuracaoServico.IsValidaSchemas) - evento.ValidarSchema(configuracaoServico); - - evento.SalvarXmlEmDisco(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico); + evento.Assina(configServico); + + if (configServico.IsValidaSchemas) + evento.ValidarSchema(configServico); + + evento.SalvarXmlEmDisco(configServico); - var webService = WsdlFactory.CriaWsdlCteEvento(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteEvento(configServico); var retornoXml = await webService.cteRecepcaoEventoAsync(evento.CriaXmlRequestWs()); var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } diff --git a/CTe.Servicos/Factory/WsdlFactory.cs b/CTe.Servicos/Factory/WsdlFactory.cs index 1987fdf67..fb633d0e2 100644 --- a/CTe.Servicos/Factory/WsdlFactory.cs +++ b/CTe.Servicos/Factory/WsdlFactory.cs @@ -134,9 +134,11 @@ public static CteRecepcaoEvento CriaWsdlCteEvento(ConfiguracaoServico configurac public static CteRecepcaoEventoV4 CriaWsdlCteEventoV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null) { - var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcaoEvento; + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado); + var url = UrlHelper.ObterUrlServico(configServico).CteRecepcaoEvento; + + var configuracaoWsdl = CriaConfiguracao(url, configServico, certificado); return new CteRecepcaoEventoV4(configuracaoWsdl); } diff --git a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs index da6f10e2e..361674039 100644 --- a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs +++ b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs @@ -78,32 +78,36 @@ public InutilizacaoServico(ConfigInutiliza configInutiliza) public retInutCTe Inutilizar(ConfiguracaoServico configuracaoServico = null) { - var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configuracaoServico); - inutCte.Assinar(configuracaoServico); - inutCte.ValidarShcema(configuracaoServico); - inutCte.SalvarXmlEmDisco(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var webService = WsdlFactory.CriaWsdlCteInutilizacao(configuracaoServico); + var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configServico); + inutCte.Assinar(configServico); + inutCte.ValidarSchema(configServico); + inutCte.SalvarXmlEmDisco(configServico); + + var webService = WsdlFactory.CriaWsdlCteInutilizacao(configServico); var retornoXml = webService.cteInutilizacaoCT(inutCte.CriaRequestWs()); var retorno = retInutCTe.LoadXml(retornoXml.OuterXml, inutCte); - retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configuracaoServico); + retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configServico); return retorno; } public async Task InutilizarAsync(ConfiguracaoServico configuracaoServico = null) { - var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configuracaoServico); - inutCte.Assinar(configuracaoServico); - inutCte.ValidarShcema(configuracaoServico); - inutCte.SalvarXmlEmDisco(configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var inutCte = ClassesFactory.CriaInutCTe(_configInutiliza, configServico); + inutCte.Assinar(configServico); + inutCte.ValidarSchema(configServico); + inutCte.SalvarXmlEmDisco(configServico); - var webService = WsdlFactory.CriaWsdlCteInutilizacao(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteInutilizacao(configServico); var retornoXml = await webService.cteInutilizacaoCTAsync(inutCte.CriaRequestWs()); var retorno = retInutCTe.LoadXml(retornoXml.OuterXml, inutCte); - retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configuracaoServico); + retorno.SalvarXmlEmDisco(inutCte.infInut.Id.Substring(2), configServico); return retorno; } diff --git a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs index b24d962d3..7ac0ee9f0 100644 --- a/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs +++ b/CTe.Servicos/Recepcao/ServicoCTeRecepcao.cs @@ -53,32 +53,36 @@ public class ServicoCTeRecepcao public retEnviCte CTeRecepcao(int lote, List cteEletronicosList, ConfiguracaoServico configuracaoServico = null) { - var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; - var webService = WsdlFactory.CriaWsdlCteRecepcao(configuracaoServico); + var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configServico); + + var webService = WsdlFactory.CriaWsdlCteRecepcao(configServico); OnAntesDeEnviar(enviCte); - var retornoXml = webService.cteRecepcaoLote(enviCte.CriaRequestWs(configuracaoServico)); + var retornoXml = webService.cteRecepcaoLote(enviCte.CriaRequestWs(configServico)); var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } public async Task CTeRecepcaoAsync(int lote, List cteEletronicosList, ConfiguracaoServico configuracaoServico = null) { - var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configuracaoServico); + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + var enviCte = PreparaEnvioCTe(lote, cteEletronicosList, configServico); - var webService = WsdlFactory.CriaWsdlCteRecepcao(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteRecepcao(configServico); OnAntesDeEnviar(enviCte); - var retornoXml = await webService.cteRecepcaoLoteAsync(enviCte.CriaRequestWs(configuracaoServico)); + var retornoXml = await webService.cteRecepcaoLoteAsync(enviCte.CriaRequestWs(configServico)); var retorno = retEnviCte.LoadXml(retornoXml.OuterXml, enviCte); - retorno.SalvarXmlEmDisco(configuracaoServico); + retorno.SalvarXmlEmDisco(configServico); return retorno; } @@ -110,14 +114,14 @@ public retCTe CTeRecepcaoSincronoV4(CTeEletronico cte, ConfiguracaoServico confi cte.ValidaSchema(instanciaConfiguracao); cte.SalvarXmlEmDisco(instanciaConfiguracao); - var webService = WsdlFactory.CriaWsdlCteRecepcaoSincronoV4(configuracaoServico); + var webService = WsdlFactory.CriaWsdlCteRecepcaoSincronoV4(instanciaConfiguracao); //OnAntesDeEnviar(enviCte); - var retornoXml = webService.CTeRecepcaoSincV4(cte.CriaRequestWs(configuracaoServico)); + var retornoXml = webService.CTeRecepcaoSincV4(cte.CriaRequestWs(instanciaConfiguracao)); var retorno = retCTe.LoadXml(retornoXml.OuterXml, cte); - retorno.SalvarXmlEmDisco(cte.Chave(), configuracaoServico); + retorno.SalvarXmlEmDisco(cte.Chave(), instanciaConfiguracao); return retorno; } diff --git a/CTe.Utils/CTe/ExCteOSProc.cs b/CTe.Utils/CTe/ExCteOSProc.cs new file mode 100644 index 000000000..c990a2edf --- /dev/null +++ b/CTe.Utils/CTe/ExCteOSProc.cs @@ -0,0 +1,101 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusNFe */ +/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */ +/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */ +/* */ +/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */ +/* Zeusdev Tecnologia LTDA ME */ +/* */ +/* Você pode obter a última versão desse arquivo no GitHub */ +/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */ +/* */ +/* */ +/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */ +/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */ +/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */ +/* qualquer versão posterior. */ +/* */ +/* 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*/ +/* 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*/ +/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */ +/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ +/* Você também pode obter uma copia da licença em: */ +/* http://www.opensource.org/licenses/lgpl-license.php */ +/* */ +/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ +/* http://www.zeusautomacao.com.br/ */ +/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/********************************************************************************/ + +using System.IO; +using CTe.Classes; +using DFe.Utils; +using cteOSProc = CTe.Classes.cteOSProc; + +namespace CTe.Utils.CTe +{ + public static class ExtCteOSProc + { + /// + /// Carrega um arquivo XML para um objeto da classe cteOSProc + /// + /// + /// arquivo XML + /// Retorna um cteOSProc carregada com os dados do XML + public static cteOSProc CarregarDeArquivoXml(this cteOSProc cteOSProc, string arquivoXml) + { + return FuncoesXml.ArquivoXmlParaClasse(arquivoXml); + } + + /// + /// Converte o objeto cteOSProc para uma string no formato XML + /// + /// + /// Retorna uma string no formato XML com os dados do cteOSProc + public static string ObterXmlString(this cteOSProc cteOSProc) + { + return FuncoesXml.ClasseParaXmlString(cteOSProc); + } + + /// + /// Coverte uma string XML no formato cteOSProc para um objeto cteOSProc + /// + /// + /// + /// Retorna um objeto do tipo cteOSProc + public static cteOSProc CarregarDeXmlString(this cteOSProc cteOSProc, string xmlString) + { + var s = FuncoesXml.ObterNodeDeStringXml(typeof(cteOSProc).Name, xmlString); + return FuncoesXml.XmlStringParaClasse(s); + } + + /// + /// Grava os dados do objeto cteOSProc em um arquivo XML + /// + /// Objeto cteOSProc + /// Diretório com nome do arquivo a ser gravado + public static void SalvarArquivoXml(this cteOSProc cteOSProc, string arquivoXml) + { + FuncoesXml.ClasseParaArquivoXml(cteOSProc, arquivoXml); + } + + public static void SalvarXmlEmDisco(this cteOSProc cteOSProc, ConfiguracaoServico configuracaoServico = null) + { + if (cteOSProc == null) return; + + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + + if (instanciaServico.NaoSalvarXml()) return; + + var caminhoXml = instanciaServico.DiretorioSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, cteOSProc.CTeOS.Chave() + "-cteOSProc.xml"); + + FuncoesXml.ClasseParaArquivoXml(cteOSProc, arquivoSalvar); + } + } +} \ No newline at end of file diff --git a/CTe.Utils/CTe/ExtCTe.cs b/CTe.Utils/CTe/ExtCTe.cs index 7d216f594..e0f3d31f7 100644 --- a/CTe.Utils/CTe/ExtCTe.cs +++ b/CTe.Utils/CTe/ExtCTe.cs @@ -61,7 +61,7 @@ public static class ExtCTe /// Retorna uma NFe carregada com os dados do XML public static CteEletronica CarregarDeArquivoXml(this CteEletronica cte, string arquivoXml) { - var s = FuncoesXml.ObterNodeDeArquivoXml(typeof (CteEletronica).Name, arquivoXml); + var s = FuncoesXml.ObterNodeDeArquivoXml(typeof(CteEletronica).Name, arquivoXml); return FuncoesXml.XmlStringParaClasse(s); } @@ -83,7 +83,7 @@ public static string ObterXmlString(this CteEletronica cte) /// Retorna um objeto do tipo CTe public static CteEletronica CarregarDeXmlString(this CteEletronica cte, string xmlString) { - var s = FuncoesXml.ObterNodeDeStringXml(typeof (CteEletronica).Name, xmlString); + var s = FuncoesXml.ObterNodeDeStringXml(typeof(CteEletronica).Name, xmlString); return FuncoesXml.XmlStringParaClasse(s); } @@ -100,6 +100,7 @@ public static void ValidaSchema(this CteEletronica cte, ConfiguracaoServico conf var xmlValidacao = cte.ObterXmlString(); var servicoInstancia = configuracaoServico ?? ConfiguracaoServico.Instancia; + if (!servicoInstancia.IsValidaSchemas) return; @@ -120,7 +121,7 @@ public static void ValidaSchema(this CteEletronica cte, ConfiguracaoServico conf "versão 2.00 é 3.00"); } - if (cte.infCte.ide.tpCTe != tpCTe.Anulacao && cte.infCte.ide.tpCTe != tpCTe.Complemento) // Ct-e do Tipo Anulação/Complemento não tem Informações do Modal + if (cte.infCte.ide.tpCTe != tpCTe.Anulacao && cte.infCte.ide.tpCTe != tpCTe.Complemento) // Ct-e do Tipo Anulação/Complemento não tem Informações do Modal { var xmlModal = FuncoesXml.ClasseParaXmlString(cte.infCte.infCTeNorm.infModal); @@ -291,7 +292,7 @@ public static infCTeSupl QrCode(this CteEletronica cte, X509Certificate2 certifi qrCode.Append("&"); qrCode.Append("tpAmb=").Append((int)cte.infCte.ide.tpAmb); - if (cte.infCte.ide.tpEmis != tpEmis.teNormal + if (cte.infCte.ide.tpEmis != tpEmis.teNormal && cte.infCte.ide.tpEmis != tpEmis.teSVCRS && cte.infCte.ide.tpEmis != tpEmis.teSVCSP ) diff --git a/CTe.Utils/CTe/ExtEnvCte.cs b/CTe.Utils/CTe/ExtEnvCte.cs index e215f5154..8b698b751 100644 --- a/CTe.Utils/CTe/ExtEnvCte.cs +++ b/CTe.Utils/CTe/ExtEnvCte.cs @@ -47,16 +47,18 @@ public static class ExtEnvCte { public static void ValidaSchema(this enviCTe enviCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = enviCTe.ObterXmlString(); switch (enviCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "enviCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "enviCTe_v2.00.xsd", configServico); break; case versao.ve400: case versao.ve300: - Validador.Valida(xmlValidacao, "enviCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "enviCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -93,7 +95,7 @@ public static XmlDocument CriaRequestWs(this enviCTe enviCTe, ConfiguracaoServic var request = new XmlDocument(); var xml = enviCTe.ObterXmlString(); - + var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; if (instanciaServico.cUF == Estado.PR diff --git a/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs b/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs index 1ad4ec66c..6b73322d1 100644 --- a/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs +++ b/CTe.Utils/DistribuicaoDFe/ExtdistDFeInt.cs @@ -54,16 +54,17 @@ public static string ObterXmlString(this distDFeInt pedDistDFeInt) public static void ValidaSchema(this distDFeInt pedDistDFeInt, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = pedDistDFeInt.ObterXmlString(); - if (pedDistDFeInt.versao.Equals("1.00")) { - Validador.Valida(xmlValidacao, "distDFeInt_v1.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "distDFeInt_v1.00.xsd", configServico); } else if (pedDistDFeInt.versao.Equals("1.10")) { - Validador.Valida(xmlValidacao, "distDFeInt_v1.10.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "distDFeInt_v1.10.xsd", configServico); } else { diff --git a/CTe.Utils/Evento/Extevento.cs b/CTe.Utils/Evento/Extevento.cs index 7ecb83498..9f866503b 100644 --- a/CTe.Utils/Evento/Extevento.cs +++ b/CTe.Utils/Evento/Extevento.cs @@ -74,18 +74,20 @@ public static void Assina(this eventoCTe eventoCTe, ConfiguracaoServico configur public static void ValidarSchema(this eventoCTe eventoCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlEvento = eventoCTe.ObterXmlString(); switch (eventoCTe.versao) { case versao.ve200: - Validador.Valida(xmlEvento, "eventoCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlEvento, "eventoCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEvento, "eventoCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlEvento, "eventoCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlEvento, "eventoCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlEvento, "eventoCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -98,22 +100,24 @@ public static void ValidarSchema(this eventoCTe eventoCTe, ConfiguracaoServico c private static void ValidarSchemaEventoContainer(EventoContainer container, versao versao, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + if (container.GetType() == typeof(evCancCTe)) { - var evCancCTe = (evCancCTe) container; + var evCancCTe = (evCancCTe)container; var xmlEventoCancelamento = evCancCTe.ObterXmlString(); switch (versao) { case versao.ve200: - Validador.Valida(xmlEventoCancelamento, "evCancCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEventoCancelamento, "evCancCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlEventoCancelamento, "evCancCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCancelamento, "evCancCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -133,13 +137,13 @@ private static void ValidarSchemaEventoContainer(EventoContainer container, vers switch (versao) { case versao.ve200: - Validador.Valida(xmlEventoCCe, "evCCeCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evCCeCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEventoCCe, "evCCeCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evCCeCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlEventoCCe, "evCCeCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evCCeCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -157,13 +161,13 @@ private static void ValidarSchemaEventoContainer(EventoContainer container, vers switch (versao) { case versao.ve200: - Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + diff --git a/CTe.Utils/Extensoes/ExtConsReciCTe.cs b/CTe.Utils/Extensoes/ExtConsReciCTe.cs index 57797d21c..8b8a55b1b 100644 --- a/CTe.Utils/Extensoes/ExtConsReciCTe.cs +++ b/CTe.Utils/Extensoes/ExtConsReciCTe.cs @@ -45,15 +45,16 @@ public static class ExtConsReciCTe { public static void ValidarSchema(this consReciCTe consReciCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var xmlValidacao = consReciCTe.ObterXmlString(); switch (consReciCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consReciCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consReciCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consReciCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consReciCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + diff --git a/CTe.Utils/Extensoes/ExtconsSitCTe.cs b/CTe.Utils/Extensoes/ExtconsSitCTe.cs index 5831e5941..8b39caf4f 100644 --- a/CTe.Utils/Extensoes/ExtconsSitCTe.cs +++ b/CTe.Utils/Extensoes/ExtconsSitCTe.cs @@ -46,20 +46,23 @@ public static class ExtconsSitCTe public static void ValidarSchema(this consSitCTe consSitCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = consSitCTe.ObterXmlString(); switch (consSitCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consSitCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consSitCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consSitCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consSitCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlValidacao, "consSitCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consSitCTe_v4.00.xsd", configServico); break; - default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + + default: + throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + "a versão está inválida, somente é permitido " + "versão 2.00 é 3.00"); } diff --git a/CTe.Utils/Extensoes/ExtconsStatServCte.cs b/CTe.Utils/Extensoes/ExtconsStatServCte.cs index 91e99210c..049a1fbff 100644 --- a/CTe.Utils/Extensoes/ExtconsStatServCte.cs +++ b/CTe.Utils/Extensoes/ExtconsStatServCte.cs @@ -45,18 +45,20 @@ public static class ExtconsStatServCte { public static void ValidarSchema(this consStatServCte consStatServCte, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = consStatServCte.ObterXmlString(); switch (consStatServCte.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -82,8 +84,8 @@ public static void SalvarXmlEmDisco(this consStatServCte statuServCte, Configura if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - - var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-ped-sta.xml"); + + var arquivoSalvar = Path.Combine(caminhoXml, DateTime.Now.ParaDataHoraString() + "-ped-sta.xml"); FuncoesXml.ClasseParaArquivoXml(statuServCte, arquivoSalvar); } @@ -101,18 +103,20 @@ public static class ExtconsStatServCTe { public static void ValidarSchema(this consStatServCTe consStatServCte, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; + var xmlValidacao = consStatServCte.ObterXmlString(); switch (consStatServCte.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v3.00.xsd", configServico); break; case versao.ve400: - Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "consStatServCTe_v4.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + diff --git a/CTe.Utils/Extensoes/ExtinutCTe.cs b/CTe.Utils/Extensoes/ExtinutCTe.cs index c13368910..66e9d691b 100644 --- a/CTe.Utils/Extensoes/ExtinutCTe.cs +++ b/CTe.Utils/Extensoes/ExtinutCTe.cs @@ -63,18 +63,19 @@ public static string ObterXmlString(this inutCTe pedInutilizacao) return FuncoesXml.ClasseParaXmlString(pedInutilizacao); } - public static void ValidarShcema(this inutCTe inutCTe, ConfiguracaoServico configuracaoServico = null) + public static void ValidarSchema(this inutCTe inutCTe, ConfiguracaoServico configuracaoServico = null) { + var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var xmlValidacao = inutCTe.ObterXmlString(); switch (inutCTe.versao) { case versao.ve200: - Validador.Valida(xmlValidacao, "inutCTe_v2.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "inutCTe_v2.00.xsd", configServico); break; case versao.ve300: - Validador.Valida(xmlValidacao, "inutCTe_v3.00.xsd", configuracaoServico); + Validador.Valida(xmlValidacao, "inutCTe_v3.00.xsd", configServico); break; default: throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " + @@ -91,7 +92,7 @@ public static void SalvarXmlEmDisco(this inutCTe inutCTe, ConfiguracaoServico co var caminhoXml = instanciaServico.DiretorioSalvarXml; - var arquivoSalvar = Path.Combine(caminhoXml, inutCTe.infInut.Id+ "-ped-inu.xml"); + var arquivoSalvar = Path.Combine(caminhoXml, inutCTe.infInut.Id + "-ped-inu.xml"); FuncoesXml.ClasseParaArquivoXml(inutCTe, arquivoSalvar); } diff --git a/CTe.Utils/Inutilizacao/ExtretInutCTe.cs b/CTe.Utils/Inutilizacao/ExtretInutCTe.cs index c0b4c211d..6e378da2c 100644 --- a/CTe.Utils/Inutilizacao/ExtretInutCTe.cs +++ b/CTe.Utils/Inutilizacao/ExtretInutCTe.cs @@ -60,8 +60,6 @@ public static string ObterXmlString(this retInutCTe retInutCTe) { return FuncoesXml.ClasseParaXmlString(retInutCTe); } - - public static void SalvarXmlEmDisco(this retInutCTe retInutCTe, string chaveNome, ConfiguracaoServico configuracaoServico = null) { var instanciaServico = configuracaoServico ?? ConfiguracaoServico.Instancia; @@ -69,11 +67,10 @@ public static void SalvarXmlEmDisco(this retInutCTe retInutCTe, string chaveNome if (instanciaServico.NaoSalvarXml()) return; var caminhoXml = instanciaServico.DiretorioSalvarXml; - + var arquivoSalvar = Path.Combine(caminhoXml, chaveNome + "-inu.xml"); FuncoesXml.ClasseParaArquivoXml(retInutCTe, arquivoSalvar); } - } } \ No newline at end of file diff --git a/CTe.Utils/Validacao/Validador.cs b/CTe.Utils/Validacao/Validador.cs index 015fc5f7b..1d4773996 100644 --- a/CTe.Utils/Validacao/Validador.cs +++ b/CTe.Utils/Validacao/Validador.cs @@ -60,7 +60,7 @@ public static void Valida(string xml, string schema, ConfiguracaoServico configu schemas.XmlResolver = new XmlUrlResolver(); cfg.Schemas = schemas; - // Quando carregar o eschema, especificar o namespace que ele valida + // Quando carregar o schema, especificar o namespace que ele valida // e a localização do arquivo schemas.Add(null, arquivoSchema); // Especifica o tratamento de evento para os erros de validacao diff --git a/DFe.Classes/Entidades/Estado.cs b/DFe.Classes/Entidades/Estado.cs index 4461718d1..27c38adb2 100644 --- a/DFe.Classes/Entidades/Estado.cs +++ b/DFe.Classes/Entidades/Estado.cs @@ -204,6 +204,12 @@ public enum Estado [XmlEnum("91")] AN = 91, + /// + /// SVRS + /// + [XmlEnum("92")] + SVRS = 92, + /// /// Exterior /// diff --git a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs index 73ab9e5c5..26de0ff81 100644 --- a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs +++ b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs @@ -107,6 +107,10 @@ public MDFeRetMDFe MDFeRecepcaoSinc(MDFeEletronico mdfe, MDFeConfiguracao cfgMdf mdfe.SalvarXmlEmDisco(null, config); var webService = WsdlFactory.CriaWsdlMDFeRecepcaoSinc(config); + + var enviMDFe = ClassesFactory.CriaEnviMDFe(lote: 1, mdfe, config); + OnAntesDeEnviar(enviMDFe); + var retornoXml = webService.mdfeRecepcao(mdfe.CriaXmlRequestWs()); var retorno = MDFeRetMDFe.LoadXml(retornoXml.OuterXml, mdfe); diff --git a/NFe.AppTeste.NetCore/Program.cs b/NFe.AppTeste.NetCore/Program.cs index f06cb64b2..31ee942e2 100644 --- a/NFe.AppTeste.NetCore/Program.cs +++ b/NFe.AppTeste.NetCore/Program.cs @@ -698,7 +698,7 @@ private static det GetDetalhe(int i, CRT crt, ModeloDocumento modelo) //Caso você resolva utilizar método ObterIcmsBasico(), comente esta proxima linha TipoICMS = - crt == CRT.SimplesNacional + crt == CRT.SimplesNacional || crt == CRT.SimplesNacionalMei ? InformarCSOSN(Csosnicms.Csosn102) : InformarICMS(Csticms.Cst00, VersaoServico.Versao310) }, diff --git a/NFe.AppTeste/MainWindow.xaml b/NFe.AppTeste/MainWindow.xaml index f84e452b9..4c8704abc 100644 --- a/NFe.AppTeste/MainWindow.xaml +++ b/NFe.AppTeste/MainWindow.xaml @@ -904,7 +904,7 @@ - +