diff --git a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs index c902cb88a..ca22fd62d 100644 --- a/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs +++ b/CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs @@ -35,7 +35,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Consulta; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaProtocolo { diff --git a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs index a3abc6072..6a2c8b595 100644 --- a/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs +++ b/CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs @@ -35,7 +35,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Recepcao.Retorno; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaRecibo { diff --git a/CTe.Servicos/ConsultaStatus/StatusServico.cs b/CTe.Servicos/ConsultaStatus/StatusServico.cs index ae665797e..296f79b6b 100644 --- a/CTe.Servicos/ConsultaStatus/StatusServico.cs +++ b/CTe.Servicos/ConsultaStatus/StatusServico.cs @@ -35,7 +35,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Status; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; namespace CTe.Servicos.ConsultaStatus { diff --git a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs index 997e665ec..da6f10e2e 100644 --- a/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs +++ b/CTe.Servicos/Inutilizacao/InutilizacaoServico.cs @@ -36,7 +36,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Inutilizacao; using CTe.Servicos.Factory; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; using CTe.Utils.Inutilizacao; using DFe.Classes.Flags; diff --git a/CTe.Utils/Evento/Extevento.cs b/CTe.Utils/Evento/Extevento.cs index afbdf82fa..7ecb83498 100644 --- a/CTe.Utils/Evento/Extevento.cs +++ b/CTe.Utils/Evento/Extevento.cs @@ -37,7 +37,7 @@ using CTe.Classes; using CTe.Classes.Servicos.Evento; using CTe.Classes.Servicos.Tipos; -using CTe.Utils.Extencoes; +using CTe.Utils.Extensoes; using CTe.Utils.Validacao; using DFe.Utils; using DFe.Utils.Assinatura; diff --git a/CTe.Utils/Extencoes/ExtConsReciCTe.cs b/CTe.Utils/Extensoes/ExtConsReciCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtConsReciCTe.cs rename to CTe.Utils/Extensoes/ExtConsReciCTe.cs index a05e7e5ee..57797d21c 100644 --- a/CTe.Utils/Extencoes/ExtConsReciCTe.cs +++ b/CTe.Utils/Extensoes/ExtConsReciCTe.cs @@ -39,7 +39,7 @@ using CTe.Utils.Validacao; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtConsReciCTe { diff --git a/CTe.Utils/Extencoes/ExtconsSitCTe.cs b/CTe.Utils/Extensoes/ExtconsSitCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtconsSitCTe.cs rename to CTe.Utils/Extensoes/ExtconsSitCTe.cs index 166f4a934..5831e5941 100644 --- a/CTe.Utils/Extencoes/ExtconsSitCTe.cs +++ b/CTe.Utils/Extensoes/ExtconsSitCTe.cs @@ -39,7 +39,7 @@ using CTe.Utils.Validacao; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtconsSitCTe { diff --git a/CTe.Utils/Extencoes/ExtconsStatServCte.cs b/CTe.Utils/Extensoes/ExtconsStatServCte.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtconsStatServCte.cs rename to CTe.Utils/Extensoes/ExtconsStatServCte.cs index 1bc456602..91e99210c 100644 --- a/CTe.Utils/Extencoes/ExtconsStatServCte.cs +++ b/CTe.Utils/Extensoes/ExtconsStatServCte.cs @@ -39,7 +39,7 @@ using CTe.Utils.Validacao; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtconsStatServCte { diff --git a/CTe.Utils/Extencoes/ExtevCCeCTe.cs b/CTe.Utils/Extensoes/ExtevCCeCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtevCCeCTe.cs rename to CTe.Utils/Extensoes/ExtevCCeCTe.cs index 7e0a7b1c0..853839bd3 100644 --- a/CTe.Utils/Extencoes/ExtevCCeCTe.cs +++ b/CTe.Utils/Extensoes/ExtevCCeCTe.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Evento; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtevCCeCTe { diff --git a/CTe.Utils/Extencoes/ExtevCancCTe.cs b/CTe.Utils/Extensoes/ExtevCancCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtevCancCTe.cs rename to CTe.Utils/Extensoes/ExtevCancCTe.cs index 4fc6a867c..0bddbdf82 100644 --- a/CTe.Utils/Extencoes/ExtevCancCTe.cs +++ b/CTe.Utils/Extensoes/ExtevCancCTe.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Evento; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtevCancCTe { diff --git a/CTe.Utils/Extencoes/ExtevPrestDesacordo.cs b/CTe.Utils/Extensoes/ExtevPrestDesacordo.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtevPrestDesacordo.cs rename to CTe.Utils/Extensoes/ExtevPrestDesacordo.cs index 79fe51339..8eb2bea4e 100644 --- a/CTe.Utils/Extencoes/ExtevPrestDesacordo.cs +++ b/CTe.Utils/Extensoes/ExtevPrestDesacordo.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Evento; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtevPrestDesacordo { diff --git a/CTe.Utils/Extencoes/ExtinutCTe.cs b/CTe.Utils/Extensoes/ExtinutCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtinutCTe.cs rename to CTe.Utils/Extensoes/ExtinutCTe.cs index 87bf4f942..c13368910 100644 --- a/CTe.Utils/Extencoes/ExtinutCTe.cs +++ b/CTe.Utils/Extensoes/ExtinutCTe.cs @@ -40,7 +40,7 @@ using DFe.Utils; using DFe.Utils.Assinatura; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtinutCTe { diff --git a/CTe.Utils/Extencoes/ExtretConsSitCTe.cs b/CTe.Utils/Extensoes/ExtretConsSitCTe.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtretConsSitCTe.cs rename to CTe.Utils/Extensoes/ExtretConsSitCTe.cs index 76d03027a..8fc8bee84 100644 --- a/CTe.Utils/Extencoes/ExtretConsSitCTe.cs +++ b/CTe.Utils/Extensoes/ExtretConsSitCTe.cs @@ -36,7 +36,7 @@ using CTe.Classes.Servicos.Consulta; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsSitCTe { diff --git a/CTe.Utils/Extencoes/ExtretConsStatServ.cs b/CTe.Utils/Extensoes/ExtretConsStatServ.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtretConsStatServ.cs rename to CTe.Utils/Extensoes/ExtretConsStatServ.cs index 4972be434..1d1409554 100644 --- a/CTe.Utils/Extencoes/ExtretConsStatServ.cs +++ b/CTe.Utils/Extensoes/ExtretConsStatServ.cs @@ -34,7 +34,7 @@ using CTe.Classes.Servicos.Status; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsStatServ { diff --git a/CTe.Utils/Extencoes/ExtretConsStatServCte.cs b/CTe.Utils/Extensoes/ExtretConsStatServCte.cs similarity index 99% rename from CTe.Utils/Extencoes/ExtretConsStatServCte.cs rename to CTe.Utils/Extensoes/ExtretConsStatServCte.cs index 1d7600f08..73826d436 100644 --- a/CTe.Utils/Extencoes/ExtretConsStatServCte.cs +++ b/CTe.Utils/Extensoes/ExtretConsStatServCte.cs @@ -36,7 +36,7 @@ using CTe.Classes.Servicos.Status; using DFe.Utils; -namespace CTe.Utils.Extencoes +namespace CTe.Utils.Extensoes { public static class ExtretConsStatServCte { diff --git a/DFe.Utils/ChaveFiscal.cs b/DFe.Utils/ChaveFiscal.cs index 3b6356cff..779a366a0 100644 --- a/DFe.Utils/ChaveFiscal.cs +++ b/DFe.Utils/ChaveFiscal.cs @@ -59,14 +59,19 @@ public static DadosChaveFiscal ObterChave(Estado ufEmitente, DateTimeOffset data { var chave = new StringBuilder(); + if (cnpjEmitente.Length < 14) + { + cnpjEmitente = cnpjEmitente.PadLeft(14, '0'); + } + chave.Append(((int)ufEmitente).ToString("D2")) - .Append(dataEmissao.ToString("yyMM")) - .Append(cnpjEmitente) - .Append(((int)modelo).ToString("D2")) - .Append(serie.ToString("D3")) - .Append(numero.ToString("D9")) - .Append(tipoEmissao.ToString()) - .Append(cNf.ToString("D8")); + .Append(dataEmissao.ToString("yyMM")) + .Append(cnpjEmitente) + .Append(((int)modelo).ToString("D2")) + .Append(serie.ToString("D3")) + .Append(numero.ToString("D9")) + .Append(tipoEmissao.ToString()) + .Append(cNf.ToString("D8")); var digitoVerificador = ObterDigitoVerificador(chave.ToString()); diff --git a/DFe.Utils/StringExtencoes.cs b/DFe.Utils/StringExtencoes.cs index be85b97cb..db3b56047 100644 --- a/DFe.Utils/StringExtencoes.cs +++ b/DFe.Utils/StringExtencoes.cs @@ -3,7 +3,7 @@ namespace Shared.DFe.Utils { - public static class StringExtencoes + public static class StringExtensoes { public static string RemoverAcentos(this string valor) { diff --git a/MDFe.AppTeste/MDFeTesteModel.cs b/MDFe.AppTeste/MDFeTesteModel.cs index 379d24a18..b1b49c3c2 100755 --- a/MDFe.AppTeste/MDFeTesteModel.cs +++ b/MDFe.AppTeste/MDFeTesteModel.cs @@ -31,13 +31,14 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using DFe.Classes.Entidades; using DFe.Classes.Flags; using DFe.Utils; using MDFe.AppTeste.Dao; using MDFe.AppTeste.Entidades; using MDFe.AppTeste.ModelBase; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Flags; using MDFe.Classes.Informacoes; using MDFe.Classes.Informacoes.Evento.CorpoEvento; @@ -612,7 +613,7 @@ public void CriarEnviar() #endregion dados emitente (emit) #region modal - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao100) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao100) { mdfe.InfMDFe.InfModal.Modal = new MDFeRodo { @@ -640,16 +641,16 @@ public void CriarEnviar() } - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.InfModal.Modal = new MDFeRodo { - infANTT = new MDFeInfANTT + InfANTT = new MDFeInfANTT { RNTRC = config.Empresa.RNTRC, // não é obrigatorio - infCIOT = new List + InfCIOT = new List { new infCIOT { @@ -692,7 +693,7 @@ public void CriarEnviar() TpCar = MDFeTpCar.NaoAplicavel }, - lacRodo = new List + LacRodo = new List { new MDFeLacre { @@ -722,7 +723,7 @@ public void CriarEnviar() }; - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.InfDoc.InfMunDescarga[0].InfCTe[0].Peri = new List { @@ -738,7 +739,7 @@ public void CriarEnviar() #region seg - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.Seg = new List(); @@ -766,19 +767,19 @@ public void CriarEnviar() #region Produto Predominante - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { - mdfe.InfMDFe.prodPred = new prodPred + mdfe.InfMDFe.ProdPred = new MDFeProdPred { - tpCarga = tpCarga.CargaGeral, - xProd = "aaaaaaaaaaaaaaaaaaaaa", - infLotacao = new infLotacao + TpCarga = MDFeTpCarga.CargaGeral, + XProd = "aaaaaaaaaaaaaaaaaaaaa", + InfLotacao = new MDFeInfLotacao { - infLocalCarrega = new infLocalCarrega + InfLocalCarrega = new MDFeInfLocalCarrega { CEP = "75950000" }, - infLocalDescarrega = new infLocalDescarrega + InfLocalDescarrega = new MDFeInfLocalDescarrega { CEP = "75950000" } @@ -804,12 +805,12 @@ public void CriarEnviar() #region dados responsavel tecnico - mdfe.InfMDFe.infRespTec = new infRespTec + mdfe.InfMDFe.InfRespTec = new MDFeInfRespTec { CNPJ = "21025760000123", - email = "robertoalvespereira18@gmail.com", - fone = "64981081602", - xContato = "roberto alves" + Email = "robertoalvespereira18@gmail.com", + Fone = "64981081602", + XContato = "roberto alves" }; #endregion @@ -898,7 +899,7 @@ public void GerarESalvar() #endregion dados emitente (emit) #region modal - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao100) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao100) { mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao100; mdfe.InfMDFe.InfModal.Modal = new MDFeRodo @@ -927,17 +928,17 @@ public void GerarESalvar() } - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao300; mdfe.InfMDFe.InfModal.Modal = new MDFeRodo { - infANTT = new MDFeInfANTT + InfANTT = new MDFeInfANTT { RNTRC = config.Empresa.RNTRC, // não é obrigatorio - infCIOT = new List + InfCIOT = new List { new infCIOT { @@ -945,7 +946,7 @@ public void GerarESalvar() CNPJ = "21025760000123" } }, - valePed = new MDFeValePed + ValePed = new MDFeValePed { Disp = new List { @@ -954,7 +955,7 @@ public void GerarESalvar() CNPJForn = "21025760000123", CNPJPg = "21025760000123", NCompra = "838388383", - vValePed = 100.33m + VValePed = 100.33m } } } @@ -980,7 +981,7 @@ public void GerarESalvar() TpCar = MDFeTpCar.NaoAplicavel }, - lacRodo = new List + LacRodo = new List { new MDFeLacre { @@ -1011,7 +1012,7 @@ public void GerarESalvar() }; - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.InfDoc.InfMunDescarga[0].InfCTe[0].Peri = new List { @@ -1027,7 +1028,7 @@ public void GerarESalvar() #region seg - if (MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { mdfe.InfMDFe.Seg = new List(); @@ -1379,17 +1380,17 @@ private static void CarregarConfiguracoesMDFe(Configuracao config) ManterDadosEmCache = config.CertificadoDigital.ManterEmCache, }; - MDFeConfiguracao.ConfiguracaoCertificado = configuracaoCertificado; - MDFeConfiguracao.CaminhoSchemas = config.ConfigWebService.CaminhoSchemas; - MDFeConfiguracao.CaminhoSalvarXml = config.DiretorioSalvarXml; - MDFeConfiguracao.IsSalvarXml = config.IsSalvarXml; + MDFeConfiguracao.Instancia.ConfiguracaoCertificado = configuracaoCertificado; + MDFeConfiguracao.Instancia.CaminhoSchemas = config.ConfigWebService.CaminhoSchemas; + MDFeConfiguracao.Instancia.CaminhoSalvarXml = config.DiretorioSalvarXml; + MDFeConfiguracao.Instancia.IsSalvarXml = config.IsSalvarXml; - MDFeConfiguracao.VersaoWebService.VersaoLayout = config.ConfigWebService.VersaoLayout; + MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout = config.ConfigWebService.VersaoLayout; - MDFeConfiguracao.VersaoWebService.TipoAmbiente = config.ConfigWebService.Ambiente; - MDFeConfiguracao.VersaoWebService.UfEmitente = config.ConfigWebService.UfEmitente; - MDFeConfiguracao.VersaoWebService.TimeOut = config.ConfigWebService.TimeOut; - MDFeConfiguracao.IsAdicionaQrCode = true; + MDFeConfiguracao.Instancia.VersaoWebService.TipoAmbiente = config.ConfigWebService.Ambiente; + MDFeConfiguracao.Instancia.VersaoWebService.UfEmitente = config.ConfigWebService.UfEmitente; + MDFeConfiguracao.Instancia.VersaoWebService.TimeOut = config.ConfigWebService.TimeOut; + MDFeConfiguracao.Instancia.IsAdicionaQrCode = true; } protected virtual void OnSucessoSync(RetornoEEnvio e) diff --git a/MDFe.Classes/Extensoes/ExtMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFe.cs index ea5948056..4841b820b 100644 --- a/MDFe.Classes/Extensoes/ExtMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFe.cs @@ -46,78 +46,79 @@ using System.Text; using MDFEletronico = MDFe.Classes.Informacoes.MDFe; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFe { - public static MDFEletronico Valida(this MDFEletronico mdfe) + public static MDFEletronico Valida(this MDFEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + if (mdfe == null) throw new ArgumentException("Erro de assinatura, MDFe esta null"); var xmlMdfe = FuncoesXml.ClasseParaXmlString(mdfe); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlMdfe, "mdfe_v1.00.xsd"); + Validador.Valida(xmlMdfe, "mdfe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlMdfe, "mdfe_v3.00.xsd"); + Validador.Valida(xmlMdfe, "mdfe_v3.00.xsd", config); break; } var tipoModal = mdfe.InfMDFe.InfModal.Modal.GetType(); var xmlModal = FuncoesXml.ClasseParaXmlString(mdfe.InfMDFe.InfModal); - if (tipoModal == typeof (MDFeRodo)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "mdfeModalRodoviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalRodoviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "mdfeModalRodoviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalRodoviario_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeAereo)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "mdfeModalAereo_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAereo_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "mdfeModalAereo_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAereo_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeAquav)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "mdfeModalAquaviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAquaviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "mdfeModalAquaviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalAquaviario_v3.00.xsd", config); break; } } if (tipoModal == typeof (MDFeFerrov)) { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlModal, "mdfeModalFerroviario_v1.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalFerroviario_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlModal, "mdfeModalFerroviario_v3.00.xsd"); + Validador.Valida(xmlModal, "mdfeModalFerroviario_v3.00.xsd", config); break; } } @@ -125,10 +126,12 @@ public static MDFEletronico Valida(this MDFEletronico mdfe) return mdfe; } - public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null) + public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null, MDFeConfiguracao cfgMdfe = null) { if(mdfe == null) throw new ArgumentException("Erro de assinatura, MDFe esta null"); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var modeloDocumentoFiscal = mdfe.InfMDFe.Ide.Mod; var tipoEmissao = (int) mdfe.InfMDFe.Ide.TpEmis; var codigoNumerico = mdfe.InfMDFe.Ide.CMDF; @@ -138,7 +141,6 @@ public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler var numeroDocumento = mdfe.InfMDFe.Ide.NMDF; int serie = mdfe.InfMDFe.Ide.Serie; - if (cnpj == null) { cnpj = mdfe.InfMDFe.Emit.CPF.PadLeft(14, '0'); @@ -151,10 +153,19 @@ public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler if (eventHandlerChaveMdfe != null) eventHandlerChaveMdfe.Invoke(quemInvocouEventoChaveMDFe, dadosChave.Chave); - mdfe.InfMDFe.Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout; + mdfe.InfMDFe.Versao = config.VersaoWebService.VersaoLayout; mdfe.InfMDFe.Ide.CDV = dadosChave.DigitoVerificador; - var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2); + mdfe.InfMDFeSupl = new MdfeInfMDFeSupl(); + mdfe.InfMDFeSupl.QrCodMDFe = MdfeInfMDFeSupl.GerarQrCode(dadosChave.Chave, mdfe.InfMDFe.Ide.TpAmb); + if (mdfe.InfMDFe.Ide.TpEmis == MDFeTipoEmissao.Contingencia) + { + var encoding = Encoding.UTF8; + var sign = Convert.ToBase64String(CreateSignaturePkcs1(config.X509Certificate2, encoding.GetBytes(mdfe.Chave()))); + mdfe.InfMDFeSupl.QrCodMDFe += "&sign=" + sign; + } + + var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, config.X509Certificate2); mdfe.Signature = assinatura; @@ -166,12 +177,14 @@ public static string XmlString(this MDFEletronico mdfe) return FuncoesXml.ClasseParaXmlString(mdfe); } - public static void SalvarXmlEmDisco(this MDFEletronico mdfe, string nomeArquivo = null) + public static void SalvarXmlEmDisco(this MDFEletronico mdfe, string nomeArquivo = null, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; if (string.IsNullOrEmpty(nomeArquivo)) - nomeArquivo = Path.Combine(MDFeConfiguracao.CaminhoSalvarXml, mdfe.Chave() + "-mdfe.xml"); + nomeArquivo = Path.Combine(config.CaminhoSalvarXml, mdfe.Chave() + "-mdfe.xml"); FuncoesXml.ClasseParaArquivoXml(mdfe, nomeArquivo); } @@ -226,7 +239,7 @@ public static long CodigoIbgeMunicipioEmitente(this MDFEletronico mdfe) return codigo; } - public static infMDFeSupl QrCode(this MDFEletronico mdfe, X509Certificate2 certificadoDigital, + public static MdfeInfMDFeSupl QrCode(this MDFEletronico mdfe, X509Certificate2 certificadoDigital, Encoding encoding = null) { if (encoding == null) @@ -247,9 +260,9 @@ public static infMDFeSupl QrCode(this MDFEletronico mdfe, X509Certificate2 certi break; } - return new infMDFeSupl + return new MdfeInfMDFeSupl { - qrCodMDFe = qrCode.ToString() + QrCodMDFe = qrCode.ToString() }; } diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs index 92ea568db..173921f26 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsReciMDFe.cs @@ -39,21 +39,23 @@ using System.IO; using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsReciMDFe { - public static void ValidaSchema(this MDFeConsReciMDFe consReciMDFe) + public static void ValidaSchema(this MDFeConsReciMDFe consReciMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consReciMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consReciMDFe_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consReciMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consReciMDFe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consReciMDFe_v3.00.xsd", config); break; } } @@ -71,11 +73,13 @@ public static XmlDocument CriaRequestWs(this MDFeConsReciMDFe consReciMDFe) return request; } - public static void SalvarXmlEmDisco(this MDFeConsReciMDFe consReciMDFe) + public static void SalvarXmlEmDisco(this MDFeConsReciMDFe consReciMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, consReciMDFe.NRec + "-ped-rec.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs index c4b99b192..326ae9068 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsSitMDFe.cs @@ -39,21 +39,23 @@ using System.IO; using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsSitMDFe { - public static void ValidarSchema(this MDFeConsSitMDFe consSitMdfe) + public static void ValidarSchema(this MDFeConsSitMDFe consSitMdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlEnvio = consSitMdfe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlEnvio, "consSitMDFe_v1.00.xsd"); + Validador.Valida(xmlEnvio, "consSitMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlEnvio, "consSitMDFe_v3.00.xsd"); + Validador.Valida(xmlEnvio, "consSitMDFe_v3.00.xsd", config); break; } } @@ -71,11 +73,13 @@ public static XmlDocument CriaRequestWs(this MDFeConsSitMDFe consSitMdfe) return request; } - public static void SalvarXmlEmDisco(this MDFeConsSitMDFe consSitMdfe) + public static void SalvarXmlEmDisco(this MDFeConsSitMDFe consSitMdfe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, consSitMdfe.ChMDFe + "-ped-sit.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs index bd4a31bf0..403519b67 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeConsStatServMDFe.cs @@ -39,21 +39,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeConsStatServMDFe { - public static void ValidarSchema(this MDFeConsStatServMDFe consStatServMDFe) + public static void ValidarSchema(this MDFeConsStatServMDFe consStatServMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consStatServMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consStatServMDFe_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consStatServMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consStatServMDFe_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consStatServMDFe_v3.00.xsd", config); break; } } @@ -71,11 +73,13 @@ public static XmlDocument CriaRequestWs(this MDFeConsStatServMDFe consStatServMd return request; } - public static void SalvarXmlEmDisco(this MDFeConsStatServMDFe consStatServMdFe) + public static void SalvarXmlEmDisco(this MDFeConsStatServMDFe consStatServMdFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, "-pedido-status-servico.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs b/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs index 004fe50ef..491a098cf 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeCosMDFeNaoEnc.cs @@ -39,7 +39,7 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeCosMDFeNaoEnc { @@ -48,17 +48,19 @@ public static string XmlString(this MDFeCosMDFeNaoEnc consMDFeNaoEnc) return FuncoesXml.ClasseParaXmlString(consMDFeNaoEnc); } - public static void ValidarSchema(this MDFeCosMDFeNaoEnc consMdFeNaoEnc) + public static void ValidarSchema(this MDFeCosMDFeNaoEnc consMdFeNaoEnc, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValidacao = consMdFeNaoEnc.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v1.00.xsd"); + Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v3.00.xsd"); + Validador.Valida(xmlValidacao, "consMDFeNaoEnc_v3.00.xsd", config); break; } } @@ -71,11 +73,13 @@ public static XmlDocument CriaRequestWs(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc) return request; } - public static void SalvarXmlEmDisco(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc) + public static void SalvarXmlEmDisco(this MDFeCosMDFeNaoEnc cosMdFeNaoEnc, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, cosMdFeNaoEnc.CNPJ + "-ped-sit.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs index fa90a5d1c..77e29cb7d 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEnviMDFe.cs @@ -40,27 +40,29 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEnviMDFe { - public static void Valida(this MDFeEnviMDFe enviMDFe) + public static void Valida(this MDFeEnviMDFe enviMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + if (enviMDFe == null) throw new ArgumentException("Erro de assinatura, EnviMDFe esta null"); var xmlMdfe = FuncoesXml.ClasseParaXmlString(enviMDFe); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlMdfe, "enviMDFe_v1.00.xsd"); + Validador.Valida(xmlMdfe, "enviMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlMdfe, "enviMDFe_v3.00.xsd"); + Validador.Valida(xmlMdfe, "enviMDFe_v3.00.xsd", config); break; } - enviMDFe.MDFe.Valida(); + enviMDFe.MDFe.Valida(config); } public static XmlDocument CriaXmlRequestWs(this MDFeEnviMDFe enviMDFe) @@ -86,17 +88,19 @@ public static string XmlString(this MDFeEnviMDFe enviMDFe) return xmlString; } - public static void SalvarXmlEmDisco(this MDFeEnviMDFe enviMDFe) + public static void SalvarXmlEmDisco(this MDFeEnviMDFe enviMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, enviMDFe.MDFe.Chave() + "-completo-mdfe.xml"); FuncoesXml.ClasseParaArquivoXml(enviMDFe, arquivoSalvar); - enviMDFe.MDFe.SalvarXmlEmDisco(); + enviMDFe.MDFe.SalvarXmlEmDisco(null, config); } } } \ No newline at end of file diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs index 18e1980d9..3adbbf565 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvCancMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvCancMDFe { - public static void ValidaSchema(this MDFeEvCancMDFe evCancMDFe) + public static void ValidaSchema(this MDFeEvCancMDFe evCancMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlCancelamento = evCancMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlCancelamento, "evCancMDFe_v1.00.xsd"); + Validador.Valida(xmlCancelamento, "evCancMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlCancelamento, "evCancMDFe_v3.00.xsd"); + Validador.Valida(xmlCancelamento, "evCancMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs index e0b32c485..e87e5090e 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvEncMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvEncMDFe { - public static void ValidaSchema(this MDFeEvEncMDFe evEncMDFe) + public static void ValidaSchema(this MDFeEvEncMDFe evEncMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlEncerramento = evEncMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlEncerramento, "evEncMDFe_v1.00.xsd"); + Validador.Valida(xmlEncerramento, "evEncMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlEncerramento, "evEncMDFe_v3.00.xsd"); + Validador.Valida(xmlEncerramento, "evEncMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs index 1d6c8361c..2eaec8a35 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvIncCondutorMDFe.cs @@ -37,21 +37,23 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvIncCondutorMDFe { - public static void ValidaSchema(this MDFeEvIncCondutorMDFe evIncCondutorMDFe) + public static void ValidaSchema(this MDFeEvIncCondutorMDFe evIncCondutorMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlIncluirCondutor = evIncCondutorMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v1.00.xsd"); + Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v3.00.xsd"); + Validador.Valida(xmlIncluirCondutor, "evIncCondutorMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs index 022dd0745..7137232ce 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEvIncDFeMDFe.cs @@ -37,18 +37,20 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEvIncDFeMDFe { - public static void ValidaSchema(this MDFeEvIncDFeMDFe evIncDFeMDFe) + public static void ValidaSchema(this MDFeEvIncDFeMDFe evIncDFeMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlIncluirDFe = evIncDFeMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao300: - Validador.Valida(xmlIncluirDFe, "evInclusaoDFeMDFe_v3.00.xsd"); + Validador.Valida(xmlIncluirDFe, "evInclusaoDFeMDFe_v3.00.xsd", config); break; } } diff --git a/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs index 580ea22c3..f6d460da6 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeEventoMDFe.cs @@ -41,21 +41,23 @@ using System.IO; using System.Xml; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeEventoMDFe { - public static void ValidarSchema(this MDFeEventoMDFe evento) + public static void ValidarSchema(this MDFeEventoMDFe evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var xmlValido = evento.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: - Validador.Valida(xmlValido, "eventoMDFe_v1.00.xsd"); + Validador.Valida(xmlValido, "eventoMDFe_v1.00.xsd", config); break; case VersaoServico.Versao300: - Validador.Valida(xmlValido, "eventoMDFe_v3.00.xsd"); + Validador.Valida(xmlValido, "eventoMDFe_v3.00.xsd", config); break; } @@ -64,35 +66,35 @@ public static void ValidarSchema(this MDFeEventoMDFe evento) if (tipoEvento == typeof(MDFeEvCancMDFe)) { var objetoXml = (MDFeEvCancMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } if (tipoEvento == typeof(MDFeEvEncMDFe)) { var objetoXml = (MDFeEvEncMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } if (tipoEvento == typeof(MDFeEvIncCondutorMDFe)) { var objetoXml = (MDFeEvIncCondutorMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } if (tipoEvento == typeof(MDFeEvIncDFeMDFe)) { var objetoXml = (MDFeEvIncDFeMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } - if (tipoEvento == typeof(evPagtoOperMDFe)) + if (tipoEvento == typeof(MDFeEvPagtoOperMDFe)) { - var objetoXml = (evPagtoOperMDFe)evento.InfEvento.DetEvento.EventoContainer; + var objetoXml = (MDFeEvPagtoOperMDFe)evento.InfEvento.DetEvento.EventoContainer; - objetoXml.ValidaSchema(); + objetoXml.ValidaSchema(config); } } @@ -109,17 +111,21 @@ public static string XmlString(this MDFeEventoMDFe evento) return FuncoesXml.ClasseParaXmlString(evento); } - public static void Assinar(this MDFeEventoMDFe evento) + public static void Assinar(this MDFeEventoMDFe evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + evento.Signature = AssinaturaDigital.Assina(evento, evento.InfEvento.Id, - MDFeConfiguracao.X509Certificate2); + config.X509Certificate2); } - public static void SalvarXmlEmDisco(this MDFeEventoMDFe evento, string chave) + public static void SalvarXmlEmDisco(this MDFeEventoMDFe evento, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + if (config.NaoSalvarXml()) return; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, chave + "-ped-eve.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs index e3945835b..b9ff916d3 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsMDFeNao.cs @@ -36,15 +36,17 @@ using MDFe.Classes.Retorno.MDFeConsultaNaoEncerrado; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsMDFeNao { - public static void SalvarXmlEmDisco(this MDFeRetConsMDFeNao retConsMdFeNao, string cnpj) + public static void SalvarXmlEmDisco(this MDFeRetConsMDFeNao retConsMdFeNao, string cnpj, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, cnpj + "-sit.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs index 9c904032b..8846136d9 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsReciMDFe.cs @@ -36,15 +36,17 @@ using MDFe.Classes.Retorno.MDFeRetRecepcao; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsReciMDFe { - public static void SalvarXmlEmDisco(this MDFeRetConsReciMDFe consReciMdFe) + public static void SalvarXmlEmDisco(this MDFeRetConsReciMDFe consReciMdFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, consReciMdFe.NRec + "-pro-rec.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs index 71d6371ac..f5551c731 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsSitMDFe.cs @@ -36,17 +36,19 @@ using MDFe.Classes.Retorno.MDFeConsultaProtocolo; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsSitMDFe { - public static void SalvarXmlEmDisco(this MDFeRetConsSitMDFe retConsSitMdFe, string chave) + public static void SalvarXmlEmDisco(this MDFeRetConsSitMDFe retConsSitMdFe, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; - var arquivoSalvar = Path.Combine(caminhoXml, chave + "-sit.xml"); + var caminhoXml = config.CaminhoSalvarXml; + + var arquivoSalvar = Path.Combine(caminhoXml, chave + "-sit.xml"); FuncoesXml.ClasseParaArquivoXml(retConsSitMdFe, arquivoSalvar); } diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs b/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs index 968a24057..398e911e2 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetConsStatServ.cs @@ -36,15 +36,17 @@ using MDFe.Classes.Retorno.MDFeStatusServico; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetConsStatServ { - public static void SalvarXmlEmDisco(this MDFeRetConsStatServ retConsStatServ) + public static void SalvarXmlEmDisco(this MDFeRetConsStatServ retConsStatServ, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, "-retorno-status-servico.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs index 80acf48c7..4f255e81e 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetEnviMDFe.cs @@ -36,15 +36,17 @@ using MDFe.Classes.Retorno.MDFeRecepcao; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetEnviMDFe { - public static void SalvarXmlEmDisco(this MDFeRetEnviMDFe retEnviMDFe) + public static void SalvarXmlEmDisco(this MDFeRetEnviMDFe retEnviMDFe, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, retEnviMDFe.InfRec.NRec + "-rec.xml"); diff --git a/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs b/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs index 1fe6c4911..a0af8f548 100644 --- a/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtMDFeRetEventoMDFe.cs @@ -36,15 +36,17 @@ using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Utils.Configuracoes; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtMDFeRetEventoMDFe { - public static void SalvarXmlEmDisco(this MDFeRetEventoMDFe retEvento, string chave) + public static void SalvarXmlEmDisco(this MDFeRetEventoMDFe retEvento, string chave, MDFeConfiguracao cfgMdfe = null) { - if (MDFeConfiguracao.NaoSalvarXml()) return; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var caminhoXml = MDFeConfiguracao.CaminhoSalvarXml; + if (config.NaoSalvarXml()) return; + + var caminhoXml = config.CaminhoSalvarXml; var arquivoSalvar = Path.Combine(caminhoXml, chave + "-env.xml"); diff --git a/MDFe.Classes/Extensoes/ExtVersaoServico.cs b/MDFe.Classes/Extensoes/ExtVersaoServico.cs index 93cf49e32..4fafad483 100644 --- a/MDFe.Classes/Extensoes/ExtVersaoServico.cs +++ b/MDFe.Classes/Extensoes/ExtVersaoServico.cs @@ -33,7 +33,7 @@ using MDFe.Utils.Flags; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtVersaoServico { diff --git a/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs b/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs index ad04e149f..e2712abc1 100644 --- a/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs +++ b/MDFe.Classes/Extensoes/ExtevPagtoOperMDFe.cs @@ -4,23 +4,25 @@ using MDFe.Utils.Flags; using MDFe.Utils.Validacao; -namespace MDFe.Classes.Extencoes +namespace MDFe.Classes.Extensoes { public static class ExtevPagtoOperMDFe { - public static void ValidaSchema(this evPagtoOperMDFe evIncDFeMDFe) + public static void ValidaSchema(this MDFeEvPagtoOperMDFe evIncDFeMDFe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var ev = evIncDFeMDFe.XmlString(); - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao300: - Validador.Valida(ev, "evPagtoOperMDFe_v3.00.xsd"); + Validador.Valida(ev, "evPagtoOperMDFe_v3.00.xsd", config); break; } } - public static string XmlString(this evPagtoOperMDFe evIncDFeMDFe) + public static string XmlString(this MDFeEvPagtoOperMDFe evIncDFeMDFe) { return FuncoesXml.ClasseParaXmlString(evIncDFeMDFe); } diff --git a/MDFe.Classes/Informacoes/categCombVeic.cs b/MDFe.Classes/Flags/MDFeCategCombVeic.cs similarity index 91% rename from MDFe.Classes/Informacoes/categCombVeic.cs rename to MDFe.Classes/Flags/MDFeCategCombVeic.cs index 340d9b36a..8ecd8e1eb 100644 --- a/MDFe.Classes/Informacoes/categCombVeic.cs +++ b/MDFe.Classes/Flags/MDFeCategCombVeic.cs @@ -1,8 +1,8 @@ using System.Xml.Serialization; -namespace MDFe.Classes.Informacoes +namespace MDFe.Classes.Flags { - public enum categCombVeic + public enum MDFeCategCombVeic { [XmlEnum("02")] VeiculoComercial2Eixos = 02, diff --git a/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs b/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs new file mode 100644 index 000000000..5403b2d95 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeIndAltoDesemp.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeIndAltoDesemp + { + [XmlEnum("0")] + NaoAltoDesempenho = 0, + [XmlEnum("1")] + AltoDesempenho = 1 + } +} diff --git a/MDFe.Classes/Flags/MDFeIndPag.cs b/MDFe.Classes/Flags/MDFeIndPag.cs new file mode 100644 index 000000000..71e870574 --- /dev/null +++ b/MDFe.Classes/Flags/MDFeIndPag.cs @@ -0,0 +1,12 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Flags +{ + public enum MDFeIndPag + { + [XmlEnum("0")] + PagamentoVista = 0, + [XmlEnum("1")] + PagamentoPrazo = 1 + } +} diff --git a/MDFe.Classes/Flags/MDFeModal.cs b/MDFe.Classes/Flags/MDFeModal.cs index fd4550609..51fcb092b 100644 --- a/MDFe.Classes/Flags/MDFeModal.cs +++ b/MDFe.Classes/Flags/MDFeModal.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ +using System.ComponentModel; using System.Xml.Serialization; namespace MDFe.Classes.Flags @@ -37,12 +38,16 @@ namespace MDFe.Classes.Flags public enum MDFeModal { [XmlEnum("1")] + [Description("Rodoviário")] Rodoviario = 1, [XmlEnum("2")] + [Description("Aéreo")] Aereo = 2, [XmlEnum("3")] + [Description("Aquaviário")] Aquaviario = 3, [XmlEnum("4")] - Ferroviari = 4 + [Description("Ferroviário")] + Ferroviario = 4 } } \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTipoEmissao.cs b/MDFe.Classes/Flags/MDFeTipoEmissao.cs index 7b0b7ae1b..fd92cda97 100644 --- a/MDFe.Classes/Flags/MDFeTipoEmissao.cs +++ b/MDFe.Classes/Flags/MDFeTipoEmissao.cs @@ -39,6 +39,8 @@ public enum MDFeTipoEmissao [XmlEnum("1")] Normal = 1, [XmlEnum("2")] - Contingencia = 2 + Contingencia = 2, + [XmlEnum("3")] + RegimeEspecialNFF = 3 } } \ No newline at end of file diff --git a/MDFe.Classes/Flags/MDFeTipoEmitente.cs b/MDFe.Classes/Flags/MDFeTipoEmitente.cs index 47a76ba2a..d351d7431 100644 --- a/MDFe.Classes/Flags/MDFeTipoEmitente.cs +++ b/MDFe.Classes/Flags/MDFeTipoEmitente.cs @@ -39,6 +39,8 @@ public enum MDFeTipoEmitente [XmlEnum("1")] PrestadorServicoDeTransporte = 1, [XmlEnum("2")] - TransportadorCargaPropria = 2 + TransportadorCargaPropria = 2, + [XmlEnum("3")] + PrestadorServicoDeTransporteCTeGlobalizado = 3 } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/tpCarga.cs b/MDFe.Classes/Flags/MDFeTpCarga.cs similarity index 91% rename from MDFe.Classes/Informacoes/tpCarga.cs rename to MDFe.Classes/Flags/MDFeTpCarga.cs index 080d96136..2a77cfae3 100644 --- a/MDFe.Classes/Informacoes/tpCarga.cs +++ b/MDFe.Classes/Flags/MDFeTpCarga.cs @@ -1,8 +1,8 @@ using System.Xml.Serialization; -namespace MDFe.Classes.Informacoes +namespace MDFe.Classes.Flags { - public enum tpCarga + public enum MDFeTpCarga { [XmlEnum("01")] GranelSolido = 01, diff --git a/MDFe.Classes/Informacoes/tpComp.cs b/MDFe.Classes/Flags/MDFeTpComp.cs similarity index 68% rename from MDFe.Classes/Informacoes/tpComp.cs rename to MDFe.Classes/Flags/MDFeTpComp.cs index a1d20bd47..e3b6378fb 100644 --- a/MDFe.Classes/Informacoes/tpComp.cs +++ b/MDFe.Classes/Flags/MDFeTpComp.cs @@ -1,8 +1,8 @@ using System.Xml.Serialization; -namespace MDFe.Classes.Informacoes +namespace MDFe.Classes.Flags { - public enum tpComp + public enum MDFeTpComp { [XmlEnum("01")] ValePedagio = 01, @@ -11,7 +11,7 @@ public enum tpComp ImpostosTaxasEContribuicoes = 02, [XmlEnum("03")] - DespesasBancariasEmiosDePagamentoOutras = 03, + DespesasBancariasEMeiosDePagamentoOutras = 03, [XmlEnum("99")] Outros = 99 diff --git a/MDFe.Classes/Informacoes/Comp.cs b/MDFe.Classes/Informacoes/Comp.cs deleted file mode 100644 index 8bd242160..000000000 --- a/MDFe.Classes/Informacoes/Comp.cs +++ /dev/null @@ -1,24 +0,0 @@ -using DFe.Classes; -using System; -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class Comp - { - public tpComp tpComp { get; set; } - - [XmlIgnore] - public decimal vComp { get; set; } - - [XmlElement("vComp")] - public decimal vCompProxy - { - get { return vComp.Arredondar(2); } - set { vComp = value.Arredondar(2); } - } - - public string xComp { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs new file mode 100644 index 000000000..01a100836 --- /dev/null +++ b/MDFe.Classes/Informacoes/Evento/CorpoEvento/MDFeEvPagtoOperMDFe.cs @@ -0,0 +1,72 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes.Evento.CorpoEvento +{ + [Serializable] + public class MDFeEvPagtoOperMDFe : MDFeEventoContainer + { + public MDFeEvPagtoOperMDFe() + { + DescEvento = "Pagamento Operacao MDF-e"; + } + + /// + /// 1 - Descrição do evento + /// + [XmlElement("descEvento")] + public string DescEvento { get; set; } + + /// + /// 1 - Número do protocolo de autorização do MDF-e + /// + [XmlElement("nProt")] + public string NProt { get; set; } + + /// + /// 1 - Informações do total de viagens acobertadas pelo Evento “pagamento do frete” + /// + [XmlElement("infViagens")] + public MDFeInfViagens InfViagens { get; set; } + + /// + /// 1 - Grupo de Informações dos pgto do MDF-e + /// + [XmlElement(ElementName = "infPag")] + public List InfPag { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/CorpoEvento/evPagtoOperMDFe.cs b/MDFe.Classes/Informacoes/Evento/CorpoEvento/evPagtoOperMDFe.cs deleted file mode 100644 index 4bc01bb2d..000000000 --- a/MDFe.Classes/Informacoes/Evento/CorpoEvento/evPagtoOperMDFe.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes.Evento.CorpoEvento -{ - [Serializable] - public class evPagtoOperMDFe : MDFeEventoContainer - { - public evPagtoOperMDFe() - { - descEvento = "Pagamento Operacao MDF-e"; - } - - public string descEvento { get; set; } - - public string nProt { get; set; } - - public infViagens infViagens { get; set; } - - [XmlElement(ElementName = "infPag")] - public List infPag { get; set; } - } - - [Serializable] - public class infViagens - { - [XmlIgnore] - public int qtdViagens { get; set; } - - [XmlElement("qtdViagens")] - public string qtdViagensProxy - { - get { return qtdViagens.ToString("D5"); } - set { qtdViagens = int.Parse(value); } - } - - [XmlIgnore] - public int nroViagem { get; set; } - - [XmlElement("nroViagem")] - public string nroViagemProxy - { - get { return nroViagem.ToString("D5"); } - set { nroViagem = int.Parse(value); } - } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs b/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs index 59425616c..5d6c4dff2 100644 --- a/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/Flags/MDFeTipoEvento.cs @@ -50,5 +50,7 @@ public enum MDFeTipoEvento RegistroDePassagemAutomatico = 510620, [XmlEnum("110116")] PagamentoOperacaoMDFe = 110116, + [XmlEnum("310112")] + EncerramentoFisco = 310112 } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs b/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs index cd745363b..d42823310 100644 --- a/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/MDFeDetEvento.cs @@ -52,7 +52,7 @@ public MDFeDetEvento() [XmlElement("evEncMDFe", typeof(MDFeEvEncMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] [XmlElement("evIncCondutorMDFe", typeof(MDFeEvIncCondutorMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] [XmlElement("evIncDFeMDFe", typeof(MDFeEvIncDFeMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] - [XmlElement("evPagtoOperMDFe", typeof(evPagtoOperMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] + [XmlElement("evPagtoOperMDFe", typeof(MDFeEvPagtoOperMDFe), Namespace = "http://www.portalfiscal.inf.br/mdfe")] public MDFeEventoContainer EventoContainer { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs index a4298f59c..9c2bdf845 100644 --- a/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs +++ b/MDFe.Classes/Informacoes/Evento/MDFeInfEvento.cs @@ -45,8 +45,20 @@ namespace MDFe.Classes.Informacoes.Evento [Serializable] public class MDFeInfEvento { + /// + /// Construtor para serialização + /// + private MDFeInfEvento() + { + } + + public MDFeInfEvento(VersaoServico? versaoServico = null) + { + _versaoServico = versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + } + [XmlIgnore] - private readonly VersaoServico _versaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout; + private readonly VersaoServico _versaoServico; [XmlAttribute(AttributeName = "Id")] public string Id { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFe.cs b/MDFe.Classes/Informacoes/MDFe.cs index e2b802bfd..ccc462c5d 100644 --- a/MDFe.Classes/Informacoes/MDFe.cs +++ b/MDFe.Classes/Informacoes/MDFe.cs @@ -51,7 +51,7 @@ public MDFe() public MDFeInfMDFe InfMDFe { get; set; } [XmlElement(ElementName = "infMDFeSupl")] - public infMDFeSupl infMDFeSupl { get; set; } + public MdfeInfMDFeSupl InfMDFeSupl { get; set; } [XmlElement(ElementName = "Signature", Namespace = "http://www.w3.org/2000/09/xmldsig#")] public Signature Signature { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFeAereo.cs b/MDFe.Classes/Informacoes/MDFeAereo.cs index f087f7239..8ffd73335 100644 --- a/MDFe.Classes/Informacoes/MDFeAereo.cs +++ b/MDFe.Classes/Informacoes/MDFeAereo.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Utils; diff --git a/MDFe.Classes/Informacoes/MDFeAquav.cs b/MDFe.Classes/Informacoes/MDFeAquav.cs index bbeaf2d92..1b3150e80 100644 --- a/MDFe.Classes/Informacoes/MDFeAquav.cs +++ b/MDFe.Classes/Informacoes/MDFeAquav.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeAutXML.cs b/MDFe.Classes/Informacoes/MDFeAutXML.cs index 8b23734bd..d2c908015 100644 --- a/MDFe.Classes/Informacoes/MDFeAutXML.cs +++ b/MDFe.Classes/Informacoes/MDFeAutXML.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeComp.cs b/MDFe.Classes/Informacoes/MDFeComp.cs new file mode 100644 index 000000000..5cd0fd5ac --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeComp.cs @@ -0,0 +1,69 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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 DFe.Classes; +using MDFe.Classes.Flags; +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeComp + { + /// + /// 1 - Tipo do Componente. + /// + [XmlElement(ElementName = "tpComp")] + public MDFeTpComp TpComp { get; set; } + + [XmlIgnore] + private decimal _vComp { get; set; } + + /// + /// 1 - Valor do Componente. + /// + [XmlElement(ElementName = "vComp")] + public decimal VComp + { + get { return _vComp.Arredondar(2); } + set { _vComp = value.Arredondar(2); } + } + + /// + /// 1 - Descrição do Componente tipo Outros. + /// + [XmlElement(ElementName = "xComp")] + public string XComp { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeCondutor.cs b/MDFe.Classes/Informacoes/MDFeCondutor.cs index fa2dbad40..eb55e654f 100644 --- a/MDFe.Classes/Informacoes/MDFeCondutor.cs +++ b/MDFe.Classes/Informacoes/MDFeCondutor.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeDisp.cs b/MDFe.Classes/Informacoes/MDFeDisp.cs index 7d25bb5f3..91f86a26b 100644 --- a/MDFe.Classes/Informacoes/MDFeDisp.cs +++ b/MDFe.Classes/Informacoes/MDFeDisp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; @@ -42,33 +43,44 @@ public class MDFeDisp private decimal _vValePed; /// - /// 3 - CNPJ da empresa fornecedora do ValePedágio + /// 4 - CNPJ da empresa fornecedora do ValePedágio /// [XmlElement(ElementName = "CNPJForn")] public string CNPJForn { get; set; } /// - /// 3 - CNPJ do responsável pelo pagamento do Vale-Pedágio + /// 4 - CNPJ do responsável pelo pagamento do Vale-Pedágio /// [XmlElement(ElementName = "CNPJPg")] public string CNPJPg { get; set; } + /// + /// 4 - CNPJ do responsável pelo pagamento do Vale-Pedágio + /// public string CPFPg { get; set; } /// - /// 3 - Número do comprovante de compra + /// 4 - Número do comprovante de compra /// [XmlElement(ElementName = "nCompra")] public string NCompra { get; set; } - public decimal vValePed + /// + /// 4 - Valor do Vale-Pedagio + /// + [XmlElement(ElementName = "vValePed")] + public decimal VValePed { get { return _vValePed.Arredondar(2); } set { _vValePed = value.Arredondar(2); } } - public tpValePed? tpValePed { get; set; } + /// + /// Tipo do Vale Pedágio + /// + [XmlElement(ElementName = "tpValePed")] + public MDFeTpValePed? TpValePed { get; set; } - public bool tpValePedSpecified { get { return tpValePed.HasValue; } } + public bool TpValePedSpecified => TpValePed.HasValue; } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeEmit.cs b/MDFe.Classes/Informacoes/MDFeEmit.cs index 8f6fd2fb3..1850966fd 100644 --- a/MDFe.Classes/Informacoes/MDFeEmit.cs +++ b/MDFe.Classes/Informacoes/MDFeEmit.cs @@ -51,6 +51,10 @@ public MDFeEmit() [XmlElement(ElementName = "CNPJ")] public string CNPJ { get; set; } + /// + /// 2 - CPF do emitente + /// + [XmlElement(ElementName = "CPF")] public string CPF { get; set; } /// @@ -59,6 +63,11 @@ public MDFeEmit() [XmlElement(ElementName = "IE")] public string IE { get; set; } + public bool ShouldSerializeIE() + { + return !string.IsNullOrEmpty(IE); + } + /// /// 2 - Razão social ou Nome do emitente /// diff --git a/MDFe.Classes/Informacoes/MDFeIde.cs b/MDFe.Classes/Informacoes/MDFeIde.cs index 974a556f9..55455e917 100644 --- a/MDFe.Classes/Informacoes/MDFeIde.cs +++ b/MDFe.Classes/Informacoes/MDFeIde.cs @@ -46,12 +46,20 @@ namespace MDFe.Classes.Informacoes [Serializable] public class MDFeIde { - public MDFeIde() + private MDFeIde() { InfMunCarrega = new List(); InfPercurso = new List(); } + public MDFeIde(VersaoServico? versaoServico = null) : this() + { + _versaoServico = versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + } + + [XmlIgnore] + private readonly VersaoServico? _versaoServico; + /// /// 2 - Código da UF do emitente do MDF-e. /// @@ -140,7 +148,8 @@ public string ProxyDhEmi { get { - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + var versaoLayout = _versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + switch (versaoLayout) { case VersaoServico.Versao100: return DhEmi.ParaDataHoraStringSemUtc(); @@ -226,11 +235,41 @@ public string ProxyUFFim /// Proxy para dhIniViagem /// [XmlElement(ElementName = "dhIniViagem")] - public string ProxyDhIniViagem { get; set; } + public string ProxyDhIniViagem + { + get + { + var versaoLayout = _versaoServico ?? MDFeConfiguracao.Instancia.VersaoWebService.VersaoLayout; + switch (versaoLayout) + { + case VersaoServico.Versao100: + return DhIniViagem.ParaDataHoraStringSemUtc(); + case VersaoServico.Versao300: + return DhIniViagem.ParaDataHoraStringUtc(); + default: + throw new InvalidOperationException("Versão Inválida para MDF-e"); + } + } + set + { + if (value is null) + DhIniViagem = null; + else + DhIniViagem = DateTime.Parse(value); + } + } + + /// + /// Indicador de participação do Canal Verde. + /// [XmlElement(ElementName = "indCanalVerde")] public string IndCanalVerde { get; set; } + /// + /// Indicador de MDF-e com inclusão da Carga posterior + /// a emissão por evento de inclusão de DF-e. + /// [XmlElement(ElementName = "indCarregaPosterior")] public string IndCarregaPosterior { get; set; } } diff --git a/MDFe.Classes/Informacoes/MDFeInfANTT.cs b/MDFe.Classes/Informacoes/MDFeInfANTT.cs new file mode 100644 index 000000000..561f646ef --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfANTT.cs @@ -0,0 +1,73 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfANTT + { + /// + /// 2 - Registro Nacional de Transportadores Rodoviários de Carga + /// + [XmlElement(ElementName = "RNTRC")] + public string RNTRC { get; set; } + + /// + /// 2 - Dados do CIOT + /// + [XmlElement(ElementName = "infCIOT")] + public List InfCIOT { get; set; } + + /// + /// 2 - Informações de Vale Pedágio + /// + [XmlElement(ElementName = "valePed")] + public MDFeValePed ValePed { get; set; } + + /// + /// 2 - Grupo de informações dos contratantes do serviço de transporte + /// + [XmlElement(ElementName = "infContratante")] + public List InfContratante { get; set; } + + /// + /// 2 - Informações do Pagamento do Frete + /// + [XmlElement(ElementName = "infPag")] + public List InfPag { get; set; } + } +} diff --git a/MDFe.Classes/Informacoes/MDFeInfAdic.cs b/MDFe.Classes/Informacoes/MDFeInfAdic.cs index e0a2aec81..d3e4a7297 100644 --- a/MDFe.Classes/Informacoes/MDFeInfAdic.cs +++ b/MDFe.Classes/Informacoes/MDFeInfAdic.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfBanc.cs b/MDFe.Classes/Informacoes/MDFeInfBanc.cs new file mode 100644 index 000000000..689d4ae05 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfBanc.cs @@ -0,0 +1,36 @@ +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfBanc + { + /// + /// 1 - Número do Banco. + /// + [XmlElement(ElementName = "codBanco")] + public string CodBanco { get; set; } + + /// + /// 1 - Número da Agência. + /// + [XmlElement(ElementName = "codAgencia")] + public string CodAgencia { get; set; } + + /// + /// 1 -´Número do CNPJ da Instituição de + /// pagamento Eletrônico do frete. + /// + [XmlElement(ElementName = "CNPJIPEF")] + public string CNPJIPEF { get; set; } + + /// + /// 1 -Informar a chave PIX para recebimento do frete. + /// Pode ser email, CPF/ CNPJ (somente numeros), Telefone com a seguinte formatação + /// (+5599999999999) ou a chave aleatória gerada pela instituição. + /// + [XmlElement(ElementName = "PIX")] + public string PIX { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfCTe.cs b/MDFe.Classes/Informacoes/MDFeInfCTe.cs index 0739b7958..fdaaff399 100644 --- a/MDFe.Classes/Informacoes/MDFeInfCTe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfCTe.cs @@ -72,6 +72,11 @@ public class MDFeInfCTe [XmlElement(ElementName = "peri")] public List Peri { get; set; } - public infEntregaParcial infEntregaParcial { get; set; } + /// + /// Grupo de informações da Entrega Parcial (Corte de Voo). + /// MDF-e 3.0 + /// + [XmlElement(ElementName = "infEntregaParcial")] + public MDFeInfEntregaParcial InfEntregaParcial { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfContratante.cs b/MDFe.Classes/Informacoes/MDFeInfContratante.cs new file mode 100644 index 000000000..40839b96a --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfContratante.cs @@ -0,0 +1,33 @@ +using System; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfContratante + { + /// + /// 3 - Razão social ou Nome do contratante + /// + [XmlElement(ElementName = "xNome")] + public string XNome { get; set; } + + /// + /// 3 - Número do CPF do contratante do serviço + /// + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } + + /// + /// 3 - Número do CNPJ do contratante serviço + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 3 - Identificador do contratante em caso de contratante estrangeiro + /// + [XmlElement(ElementName = "idEstrangeiro")] + public string IdEstrangeiro { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfDoc.cs b/MDFe.Classes/Informacoes/MDFeInfDoc.cs index b7cdc632a..f320e95d3 100644 --- a/MDFe.Classes/Informacoes/MDFeInfDoc.cs +++ b/MDFe.Classes/Informacoes/MDFeInfDoc.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs b/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs index 12006e513..9fddb53f9 100644 --- a/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs +++ b/MDFe.Classes/Informacoes/MDFeInfEmbComb.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; @@ -44,6 +45,10 @@ public class MDFeInfEmbComb [XmlElement(ElementName = "cEmbComb")] public string CEmbComb { get; set; } - public string xBalsa { get; set; } + /// + /// 2 - Código da embarcação do comboio + /// + [XmlElement(ElementName = "xBalsa")] + public string XBalsa { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs b/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs new file mode 100644 index 000000000..36b39d2cf --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfEntregaParcial.cs @@ -0,0 +1,19 @@ +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public class MDFeInfEntregaParcial + { + /// + /// 5 - Quantidade total de volumes + /// /// + [XmlElement(ElementName = "qtdTotal")] + public decimal QtdTotal { get; set; } + + /// + /// 5 - Quantidade de volumes enviados no MDF-e + /// + [XmlElement(ElementName = "qtdParcial")] + public decimal QtdParcial { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs b/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs new file mode 100644 index 000000000..96ae6835c --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLocalCarrega.cs @@ -0,0 +1,82 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLocalCarrega + { + /// + /// 1 - Cep onde foi carregado o MDF-e. + /// + [XmlElement(ElementName = "CEP")] + public string CEP { get; set; } + + [XmlIgnore] + private decimal? _latitude { get; set; } + + /// + /// 1- Latitude do ponto geográfico onde foi carregado o MDF-e. + /// + [XmlElement("latitude")] + public string LatitudeProxy + { + get + { + if (_latitude == null) return null; + return _latitude.ToString(); + } + set { _latitude = decimal.Parse(value); } + } + + [XmlIgnore] + private decimal? _longitude { get; set; } + + /// + /// 1 - Longitude do ponto geográfico onde foi carregado o MDF-e. + /// + [XmlElement("longitude")] + public string LongitudeProxy + { + get + { + if (_longitude == null) return null; + return _longitude.ToString(); + } + set { _longitude = decimal.Parse(value); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs b/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs new file mode 100644 index 000000000..43bf82276 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLocalDescarrega.cs @@ -0,0 +1,83 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLocalDescarrega + { + /// + /// 1 - Cep onde foi descarregado o MDF-e. + /// + public string CEP { get; set; } + + [XmlIgnore] + private decimal? _latitude { get; set; } + + /// + /// 1- Latitude do ponto geográfico onde foi + /// descarregado o MDF-e. + /// + [XmlElement("latitude")] + public string LatitudeProxy + { + get + { + if (_latitude == null) return null; + return _latitude.ToString(); + } + set { _latitude = decimal.Parse(value); } + } + + [XmlIgnore] + private decimal? _longitude { get; set; } + + /// + /// 1 - Longitude do ponto geográfico onde foi + /// descarregado o MDF-e. + /// + [XmlElement("longitude")] + public string LongitudeProxy + { + get + { + if (_longitude == null) return null; + return _longitude.ToString(); + } + set { _longitude = decimal.Parse(value); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfLotacao.cs b/MDFe.Classes/Informacoes/MDFeInfLotacao.cs new file mode 100644 index 000000000..68c78f43e --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfLotacao.cs @@ -0,0 +1,63 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfLotacao + { + public MDFeInfLotacao() + { + InfLocalCarrega = new MDFeInfLocalCarrega(); + InfLocalDescarrega = new MDFeInfLocalDescarrega(); + } + + /// + /// 1 - Informações da localização do + /// carregamento do MDF-e de carga lotação + /// + [XmlElement(ElementName = "infLocalCarrega")] + public MDFeInfLocalCarrega InfLocalCarrega { get; set; } + + /// + /// 1 - Informações da localização do + /// descarregamento do MDF-e de carga + /// lotação + /// + [XmlElement(ElementName = "infLocalDescarrega")] + public MDFeInfLocalDescarrega InfLocalDescarrega { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfMDFe.cs b/MDFe.Classes/Informacoes/MDFeInfMDFe.cs index 9d0ddca4d..cae559d12 100644 --- a/MDFe.Classes/Informacoes/MDFeInfMDFe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMDFe.cs @@ -47,8 +47,10 @@ public MDFeInfMDFe() InfModal = new MDFeInfModal(); InfDoc = new MDFeInfDoc(); Tot = new MDFeTot(); + ProdPred = new MDFeProdPred(); Versao = VersaoServico.Versao100; } + /// /// 1 - Versão do leiaute /// @@ -94,8 +96,11 @@ public MDFeInfMDFe() [XmlElement(ElementName = "seg")] public List Seg { get; set; } + /// + /// 1 - Grupo de informações do Produto predominante da carga do MDF-e + /// [XmlElement(ElementName = "prodPred")] - public prodPred prodPred { get; set; } + public MDFeProdPred ProdPred { get; set; } /// /// 1 - Totalizadores da carga transportada e seus documentos fiscais @@ -121,7 +126,10 @@ public MDFeInfMDFe() [XmlElement(ElementName = "infAdic")] public MDFeInfAdic InfAdic { get; set; } + /// + /// 1 - Informações do Responsável Técnico pela emissão do DF-e. + /// [XmlElement(ElementName = "infRespTec")] - public infRespTec infRespTec { get; set; } + public MDFeInfRespTec InfRespTec { get; set; } } } diff --git a/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs b/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs index 7bfbf100d..104b6b4bc 100644 --- a/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMDFeTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfModal.cs b/MDFe.Classes/Informacoes/MDFeInfModal.cs index 5c4d38941..805d4233b 100644 --- a/MDFe.Classes/Informacoes/MDFeInfModal.cs +++ b/MDFe.Classes/Informacoes/MDFeInfModal.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using MDFe.Classes.Contratos; @@ -42,7 +43,7 @@ public class MDFeInfModal { public MDFeInfModal() { - VersaoModal = MDFeVersaoModal.Versao100; + VersaoModal = MDFeVersaoModal.Versao300; } /// diff --git a/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs b/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs index 47edd4572..25c4fb3b1 100644 --- a/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMunCarrega.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs b/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs index 84d8b0a72..5f2cd87af 100644 --- a/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs +++ b/MDFe.Classes/Informacoes/MDFeInfMunDescarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfNFe.cs b/MDFe.Classes/Informacoes/MDFeInfNFe.cs index bab4f0b4b..bc83e8fb3 100644 --- a/MDFe.Classes/Informacoes/MDFeInfNFe.cs +++ b/MDFe.Classes/Informacoes/MDFeInfNFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfPag.cs b/MDFe.Classes/Informacoes/MDFeInfPag.cs new file mode 100644 index 000000000..bbdcfec4a --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfPag.cs @@ -0,0 +1,124 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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 DFe.Classes; +using MDFe.Classes.Flags; +using System; +using System.Collections.Generic; +using System.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfPag + { + public MDFeInfPag() + { + InfPrazo = new List(); + } + + /// + /// 3 - Nome do responsável pelo pagamento. + /// + [XmlElement(ElementName = "xNome")] + public string XNome { get; set; } + + /// + /// 3 - Número do CPF do responsável pelo pagamento. + /// + [XmlElement(ElementName = "CPF")] + public string CPF { get; set; } + + /// + /// 3 - Número do CNPJ do responsável pelo pagamento. + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 3 - Identificador do responsável pelo pagamento + /// em caso de ser estrangeiro. + /// + [XmlElement(ElementName = "idEstrangeiro")] + public string IdEstrangeiro { get; set; } + + /// + /// 3 - Componentes do pagamento do frete. + /// + [XmlElement(ElementName = "Comp")] + public List Comp { get; set; } + + [XmlIgnore] + private decimal _vContrato { get; set; } + + /// + /// 3 - Valor total do Contrato. + /// + [XmlElement("vContrato")] + public decimal VContratoProxy + { + get { return _vContrato.Arredondar(2); } + set { _vContrato = value.Arredondar(2); } + } + + /// + /// 3 - Indicador da forma de pagamento. + /// + [XmlElement(ElementName = "indPag")] + public MDFeIndPag IndPag { get; set; } + + /// + /// 3 - Informações do pagamento a prazo. Informar somente se indPag for à Prazo. + /// + [XmlElement(ElementName = "infPrazo")] + public List InfPrazo { get; set; } + + /// + /// 3 - Informações Bancárias. + /// + [XmlElement(ElementName = "infBanc")] + public MDFeInfBanc InfBanc { get; set; } + + /// + /// 3 - Indicador de operação de transporte de + /// alto desempenho + /// + [XmlElement(ElementName = "indAltoDesemp")] + public MDFeIndAltoDesemp IndAltoDesemp { get; set; } + + public bool ShouldSerializeIndAltoDesemp() + { + return IndAltoDesemp == MDFeIndAltoDesemp.AltoDesempenho; + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfPercurso.cs b/MDFe.Classes/Informacoes/MDFeInfPercurso.cs index 735796666..b3c5199f7 100644 --- a/MDFe.Classes/Informacoes/MDFeInfPercurso.cs +++ b/MDFe.Classes/Informacoes/MDFeInfPercurso.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System.Xml.Serialization; using DFe.Classes.Entidades; using DFe.Classes.Extensoes; @@ -45,14 +46,13 @@ public class MDFeInfPercurso public Estado UFPer { get; set; } /// - /// Proxy para UFPer + /// Proxy para sigla das Unidades da Federação do percurso do veículo /// [XmlElement(ElementName = "UFPer")] - public string ProxyUFPer { + public string ProxyUFPer + { get { return UFPer.GetSiglaUfString(); } set { UFPer = UFPer.SiglaParaEstado(value); } } - - } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfPrazo.cs b/MDFe.Classes/Informacoes/MDFeInfPrazo.cs new file mode 100644 index 000000000..7974a2e8d --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfPrazo.cs @@ -0,0 +1,83 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Xml.Serialization; +using DFe.Classes; +using DFe.Utils; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfPrazo + { + [XmlIgnore] + private short _nParcela { get; set; } + + /// + /// 1 - Número da parcela. + /// + [XmlElement("nParcela")] + public string NParcelaProxy + { + get { return _nParcela.ToString("D3"); } + set { _nParcela = short.Parse(value); } + } + + [XmlIgnore] + private DateTime _dVenc { get; set; } + + /// + /// Proxy para Data de Vencimento da parcela. + /// + [XmlElement("dVenc")] + public string DVencProxy + { + get { return _dVenc.ParaDataString(); } + set { _dVenc = DateTime.Parse(value); } + } + + [XmlIgnore] + private decimal _vParcela { get; set; } + + /// + /// 1 - Valor da parcela. + /// + [XmlElement("vParcela")] + public decimal VParcelaProxy + { + get { return _vParcela.Arredondar(2); } + set { _vParcela = value.Arredondar(2); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfRespTec.cs b/MDFe.Classes/Informacoes/MDFeInfRespTec.cs new file mode 100644 index 000000000..6251f3df7 --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfRespTec.cs @@ -0,0 +1,90 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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*/ +/* 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.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public class MDFeInfRespTec + { + /// + /// 2 - CNPJ da pessoa jurídica responsável técnica pelo sistema + /// utilizado na emissão do documento fiscal eletrônico + /// + [XmlElement(ElementName = "CNPJ")] + public string CNPJ { get; set; } + + /// + /// 2 - Nome da pessoa a ser contatada + /// + [XmlElement(ElementName = "xContato")] + public string XContato { get; set; } + + /// + /// 2 - E-mail da pessoa jurídica a ser contatada + /// + [XmlElement(ElementName = "email")] + public string Email { get; set; } + + /// + /// 2 - Telefone da pessoa jurídica a ser contatada + /// + [XmlElement(ElementName = "fone")] + public string Fone { get; set; } + + [XmlIgnore] + private int? IdCSRT { get; set; } + + public bool IdCSRTSpecified + { + get { return IdCSRT.HasValue; } + } + + /// + /// 2 - Identificador do código de segurança do responsável técnico + /// + [XmlElement(ElementName = "idCSRT")] + public string ProxyIdCSRT + { + get { return IdCSRT != null ? IdCSRT.Value.ToString("D3") : null; } + set { IdCSRT = int.Parse(value); } + } + + /// + /// 2 - Hash do token do código de segurança do responsável técnico + /// + [XmlElement(ElementName = "hashCSRT")] + public string HashCSRT { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs b/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs index 1c876c2a9..2c9c9d898 100644 --- a/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs +++ b/MDFe.Classes/Informacoes/MDFeInfTermCarreg.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs b/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs index 650402c83..ec9044ab0 100644 --- a/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs +++ b/MDFe.Classes/Informacoes/MDFeInfTermDescarreg.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs b/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs index b98218d3a..1c6b4d215 100644 --- a/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidCarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs b/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs index cf36498c3..053da34e4 100644 --- a/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidCargaVazia.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System.Xml.Serialization; using MDFe.Classes.Flags; diff --git a/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs b/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs index 9287d5dd6..f662c24ae 100644 --- a/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeInfUnidTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeInfViagens.cs b/MDFe.Classes/Informacoes/MDFeInfViagens.cs new file mode 100644 index 000000000..7b7497d4e --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeInfViagens.cs @@ -0,0 +1,68 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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.Xml.Serialization; +using System; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeInfViagens + { + [XmlIgnore] + private int _qtdViagens { get; set; } + + /// + /// 2 - Proxy para quantidade total de viagens realizadas com o pagamento do frete. + /// + [XmlElement("qtdViagens")] + public string QtdViagensProxy + { + get { return _qtdViagens.ToString("D5"); } + set { _qtdViagens = int.Parse(value); } + } + + [XmlIgnore] + private int _nroViagem { get; set; } + + /// + /// 2 - Proxy para número de referência da viagem do MDF-e referenciado. + /// + [XmlElement("nroViagem")] + public string NroViagemProxy + { + get { return _nroViagem.ToString("D5"); } + set { _nroViagem = int.Parse(value); } + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs b/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs index 2ead7e9c8..6a8f591fc 100644 --- a/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs +++ b/MDFe.Classes/Informacoes/MDFeLacUnidCarga.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs b/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs index 9e09d0b20..d51d79411 100644 --- a/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs +++ b/MDFe.Classes/Informacoes/MDFeLacUnidTransp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeLacre.cs b/MDFe.Classes/Informacoes/MDFeLacre.cs index f422b0199..28c7057bc 100644 --- a/MDFe.Classes/Informacoes/MDFeLacre.cs +++ b/MDFe.Classes/Informacoes/MDFeLacre.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; diff --git a/MDFe.Classes/Informacoes/MDFeProdPred.cs b/MDFe.Classes/Informacoes/MDFeProdPred.cs new file mode 100644 index 000000000..5b6413cff --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeProdPred.cs @@ -0,0 +1,79 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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; +using System.Xml.Serialization; +using MDFe.Classes.Flags; + +namespace MDFe.Classes.Informacoes +{ + [Serializable] + public class MDFeProdPred + { + public MDFeProdPred() + { + InfLotacao = new MDFeInfLotacao(); + } + + /// + /// 1 - Tipo da Carga. + /// Conforme Rosulação ANTT + /// + [XmlElement(ElementName = "tpCarga")] + public MDFeTpCarga TpCarga { get; set; } + + /// + /// 1 - Descrição do produto predominante. + /// + [XmlElement(ElementName = "xProd")] + public string XProd { get; set; } + + /// + /// 1- GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barras. + /// + [XmlElement(ElementName = "cEAN")] + public string CEan { get; set; } + + /// + /// 1 - Código NCM + /// + [XmlElement(ElementName = "NCM")] + public string Ncm { get; set; } + + /// + /// 1 - Informações da carga lotação. Informar somente quando MDF-e for de carga lotação + /// + [XmlElement(ElementName = "infLotacao")] + public MDFeInfLotacao InfLotacao { get; set; } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeProp.cs b/MDFe.Classes/Informacoes/MDFeProp.cs index 9496eda9f..f1a58cae8 100644 --- a/MDFe.Classes/Informacoes/MDFeProp.cs +++ b/MDFe.Classes/Informacoes/MDFeProp.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -91,7 +92,7 @@ public string ProxyUF } /// - /// 3 - Tipo Proprietário + /// 3 - Tipo Proprietário ou possuidor /// [XmlElement(ElementName = "tpProp")] public MDFeTpProp MDFeTpProp { get; set; } diff --git a/MDFe.Classes/Informacoes/MDFeRodo.cs b/MDFe.Classes/Informacoes/MDFeRodo.cs index 90d1a594d..5b39f5c07 100644 --- a/MDFe.Classes/Informacoes/MDFeRodo.cs +++ b/MDFe.Classes/Informacoes/MDFeRodo.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -41,7 +42,7 @@ namespace MDFe.Classes.Informacoes public class MDFeRodo : MDFeModalContainer { [XmlElement(ElementName = "infANTT")] - public MDFeInfANTT infANTT { get; set; } + public MDFeInfANTT InfANTT { get; set; } /// /// 1 - Registro Nacional de Transportadores Rodoviários de Carga @@ -79,25 +80,10 @@ public class MDFeRodo : MDFeModalContainer [XmlElement(ElementName = "codAgPorto")] public string CodAgPorto { get; set; } + /// + /// 1 - Lacres + /// [XmlElement(ElementName = "lacRodo")] - public List lacRodo { get; set; } - } - - [Serializable] - public class MDFeInfANTT - { - [XmlElement(ElementName = "RNTRC")] - public string RNTRC { get; set; } - - [XmlElement(ElementName = "infCIOT")] - public List infCIOT { get; set; } - - public MDFeValePed valePed { get; set; } - - [XmlElement(ElementName = "infContratante")] - public List infContratante { get; set; } - - [XmlElement(ElementName = "infPag")] - public List infPag { get; set; } + public List LacRodo { get; set; } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeTot.cs b/MDFe.Classes/Informacoes/MDFeTot.cs index 6af9c9813..f5d89b0bc 100644 --- a/MDFe.Classes/Informacoes/MDFeTot.cs +++ b/MDFe.Classes/Informacoes/MDFeTot.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; diff --git a/MDFe.Classes/Informacoes/MDFeTpValePed.cs b/MDFe.Classes/Informacoes/MDFeTpValePed.cs new file mode 100644 index 000000000..3248fe92f --- /dev/null +++ b/MDFe.Classes/Informacoes/MDFeTpValePed.cs @@ -0,0 +1,49 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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.Xml.Serialization; + +namespace MDFe.Classes.Informacoes +{ + public enum MDFeTpValePed + { + [XmlEnum("01")] + Tag = 01, + + [XmlEnum("02")] + Cupom = 02, + + [XmlEnum("03")] + Cartao = 03 + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeTrem.cs b/MDFe.Classes/Informacoes/MDFeTrem.cs index 830e13241..7195c1099 100644 --- a/MDFe.Classes/Informacoes/MDFeTrem.cs +++ b/MDFe.Classes/Informacoes/MDFeTrem.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Utils; diff --git a/MDFe.Classes/Informacoes/MDFeVag.cs b/MDFe.Classes/Informacoes/MDFeVag.cs index 16333678e..3b6e87196 100644 --- a/MDFe.Classes/Informacoes/MDFeVag.cs +++ b/MDFe.Classes/Informacoes/MDFeVag.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes; diff --git a/MDFe.Classes/Informacoes/MDFeValePed.cs b/MDFe.Classes/Informacoes/MDFeValePed.cs index 3579023e3..2687d82d7 100644 --- a/MDFe.Classes/Informacoes/MDFeValePed.cs +++ b/MDFe.Classes/Informacoes/MDFeValePed.cs @@ -30,9 +30,11 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; +using MDFe.Classes.Flags; namespace MDFe.Classes.Informacoes { @@ -45,8 +47,15 @@ public class MDFeValePed [XmlElement(ElementName = "disp")] public List Disp { get; set; } - public categCombVeic? categCombVeic { get; set; } + /// + /// 3 - Categoria de Combinação Veicular + /// + [XmlElement(ElementName = "categCombVeic", IsNullable = true)] + public MDFeCategCombVeic? CategCombVeic { get; set; } + + public bool CategCombVeicSpecified => CategCombVeic.HasValue; + + public bool ShouldSerializeCategCombVeic() => CategCombVeicSpecified; - public bool categCombVeicSpecified { get { return categCombVeic.HasValue; } } } } \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/MDFeVeicReboque.cs b/MDFe.Classes/Informacoes/MDFeVeicReboque.cs index b48a89746..b930cb80e 100644 --- a/MDFe.Classes/Informacoes/MDFeVeicReboque.cs +++ b/MDFe.Classes/Informacoes/MDFeVeicReboque.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -87,16 +88,22 @@ public class MDFeVeicReboque public MDFeTpCar TpCar { get; set; } [XmlIgnore] - public Estado UF { get; set; } + public Estado? UF { get; set; } [XmlElement(ElementName = "UF")] public string ProxyUF { get { - return UF.GetSiglaUfString(); + return UF.HasValue ? UF.Value.GetSiglaUfString() : null; + } + set + { + if (!string.IsNullOrEmpty(value)) + UF = new Estado().SiglaParaEstado(value); + else + UF = null; } - set { UF = UF.SiglaParaEstado(value); } } public bool TaraSpecified { get { return Tara.HasValue; } } diff --git a/MDFe.Classes/Informacoes/MDFeVeicTracao.cs b/MDFe.Classes/Informacoes/MDFeVeicTracao.cs index 50a91a0c1..ddb570534 100644 --- a/MDFe.Classes/Informacoes/MDFeVeicTracao.cs +++ b/MDFe.Classes/Informacoes/MDFeVeicTracao.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Collections.Generic; using System.Xml.Serialization; @@ -79,7 +80,7 @@ public class MDFeVeicTracao public int? CapM3 { get; set; } /// - /// 2 - Proprietários do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e + /// 2 - Proprietário ou possuidor do Veículo. Só preenchido quando o veículo não pertencer à empresa emitente do MDF-e /// [XmlElement(ElementName = "prop")] public MDFeProp Prop { get; set; } @@ -103,10 +104,10 @@ public class MDFeVeicTracao public MDFeTpCar TpCar { get; set; } /// - /// 2 - UF em que veículo está licenciado + /// 3 - UF em que veículo está licenciado /// [XmlIgnore] - public Estado UF { get; set; } + public Estado? UF { get; set; } /// /// Proxy para obter a sigla uf @@ -116,9 +117,15 @@ public string ProxyUF { get { - return UF.GetSiglaUfString(); + return UF.HasValue ? UF.Value.GetSiglaUfString() : null; + } + set + { + if (!string.IsNullOrEmpty(value)) + UF = new Estado().SiglaParaEstado(value); + else + UF = null; } - set { UF = UF.SiglaParaEstado(value); } } public bool CapKGSpecified { get { return CapKG.HasValue; } } diff --git a/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs b/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs new file mode 100644 index 000000000..d714f4200 --- /dev/null +++ b/MDFe.Classes/Informacoes/MdfeInfMDFeSupl.cs @@ -0,0 +1,54 @@ +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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.Text; +using System.Xml.Serialization; +using DFe.Classes.Flags; + +namespace MDFe.Classes.Informacoes +{ + public class MdfeInfMDFeSupl + { + /// + /// 1 - Texto com o QR-Code para consulta do MDF-e + /// + [XmlElement(ElementName = "qrCodMDFe")] + public string QrCodMDFe { get; set; } + + public static string GerarQrCode(string chave, TipoAmbiente tipoAmbiente) + { + var qrCode = new StringBuilder(@"https://dfe-portal.svrs.rs.gov.br/mdfe/qrCode"); + return qrCode.Append("?").Append("chMDFe=").Append(chave).Append("&").Append("tpAmb=").Append((int)tipoAmbiente).ToString(); + } + } +} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs b/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs index ca6b09ad9..53ea62dd5 100644 --- a/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs +++ b/MDFe.Classes/Informacoes/RetRecepcao/MDFeConsReciMDFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Flags; diff --git a/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs b/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs index 68d59015d..719abd940 100644 --- a/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs +++ b/MDFe.Classes/Informacoes/StatusServico/MDFeConsStatServMDFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Flags; diff --git a/MDFe.Classes/Informacoes/indPag.cs b/MDFe.Classes/Informacoes/indPag.cs deleted file mode 100644 index 22b9f3502..000000000 --- a/MDFe.Classes/Informacoes/indPag.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - public enum indPag - { - [XmlEnum("0")] - PagamentoAVista = 0, - - [XmlEnum("1")] - PagamentoAPrazo = 1 - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infBanc.cs b/MDFe.Classes/Informacoes/infBanc.cs deleted file mode 100644 index 80472a474..000000000 --- a/MDFe.Classes/Informacoes/infBanc.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infBanc - { - public string codBanco { get; set; } - public string codAgencia { get; set; } - public string CNPJIPEF { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infContratante.cs b/MDFe.Classes/Informacoes/infContratante.cs deleted file mode 100644 index 7a71f9962..000000000 --- a/MDFe.Classes/Informacoes/infContratante.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MDFe.Classes.Informacoes -{ - public class infContratante - { - public string xNome { get; set; } - public string CPF { get; set; } - public string CNPJ { get; set; } - public string idEstrangeiro { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infEntregaParcial.cs b/MDFe.Classes/Informacoes/infEntregaParcial.cs deleted file mode 100644 index 6864c8b42..000000000 --- a/MDFe.Classes/Informacoes/infEntregaParcial.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MDFe.Classes.Informacoes -{ - public class infEntregaParcial - { - public decimal qtdTotal { get; set; } - - public decimal qtdParcial { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infLocalCarrega.cs b/MDFe.Classes/Informacoes/infLocalCarrega.cs deleted file mode 100644 index 06bc77ad1..000000000 --- a/MDFe.Classes/Informacoes/infLocalCarrega.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infLocalCarrega - { - public string CEP { get; set; } - - [XmlIgnore] - public decimal? latitude { get; set; } - - [XmlElement("latitude")] - public string latitudeProxy - { - get - { - if (latitude == null) return null; - return latitude.ToString(); - } - set { latitude = decimal.Parse(value); } - } - - [XmlIgnore] - public decimal? Longitude { get; set; } - - [XmlElement("Longitude")] - public string LongitudeProxy - { - get - { - if (Longitude == null) return null; - return Longitude.ToString(); - } - set { Longitude = decimal.Parse(value); } - } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infLocalDescarrega.cs b/MDFe.Classes/Informacoes/infLocalDescarrega.cs deleted file mode 100644 index 9f551140d..000000000 --- a/MDFe.Classes/Informacoes/infLocalDescarrega.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infLocalDescarrega - { - public string CEP { get; set; } - - [XmlIgnore] - public decimal? latitude { get; set; } - - [XmlElement("latitude")] - public string latitudeProxy - { - get - { - if (latitude == null) return null; - return latitude.ToString(); - } - set { latitude = decimal.Parse(value); } - } - - [XmlIgnore] - public decimal? Longitude { get; set; } - - [XmlElement("Longitude")] - public string LongitudeProxy - { - get - { - if (Longitude == null) return null; - return Longitude.ToString(); - } - set { Longitude = decimal.Parse(value); } - } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infLotacao.cs b/MDFe.Classes/Informacoes/infLotacao.cs deleted file mode 100644 index df5f77d05..000000000 --- a/MDFe.Classes/Informacoes/infLotacao.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infLotacao - { - public infLocalCarrega infLocalCarrega { get; set; } - - public infLocalDescarrega infLocalDescarrega { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infMDFeSupl.cs b/MDFe.Classes/Informacoes/infMDFeSupl.cs deleted file mode 100644 index 7be54e4aa..000000000 --- a/MDFe.Classes/Informacoes/infMDFeSupl.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MDFe.Classes.Informacoes -{ - public class infMDFeSupl - { - public string qrCodMDFe { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infPag.cs b/MDFe.Classes/Informacoes/infPag.cs deleted file mode 100644 index 254df6b9e..000000000 --- a/MDFe.Classes/Informacoes/infPag.cs +++ /dev/null @@ -1,36 +0,0 @@ -using DFe.Classes; -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infPag - { - public string xNome { get; set; } - public string CPF { get; set; } - public string CNPJ { get; set; } - public string idEstrangeiro { get; set; } - - [XmlElement(ElementName = "Comp")] - public List Comp { get; set; } - - [XmlIgnore] - public decimal vContrato { get; set; } - - [XmlElement("vContrato")] - public decimal vContratoProxy - { - get { return vContrato.Arredondar(2); } - set { vContrato = value.Arredondar(2); } - } - - public indPag indPag { get; set; } - - [XmlElement(ElementName = "infPrazo")] - public List infPrazo { get; set; } - - public infBanc infBanc { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infPrazo.cs b/MDFe.Classes/Informacoes/infPrazo.cs deleted file mode 100644 index 6278fcfc4..000000000 --- a/MDFe.Classes/Informacoes/infPrazo.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Xml.Serialization; -using DFe.Classes; -using DFe.Utils; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class infPrazo - { - [XmlIgnore] - public short nParcela { get; set; } - - [XmlElement("nParcela")] - public string nParcelaProxy - { - get { return nParcela.ToString("D3"); } - set { nParcela = short.Parse(value); } - } - - [XmlIgnore] - public DateTime dVenc { get; set; } - - [XmlElement("dVenc")] - public string dVencProxy - { - get { return dVenc.ParaDataString(); } - set { dVenc = DateTime.Parse(value); } - } - - [XmlIgnore] - public decimal vParcela { get; set; } - - [XmlElement("vParcela")] - public decimal vParcelaProxy - { - get { return vParcela.Arredondar(2); } - set { vParcela = value.Arredondar(2); } - } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/infRespTec.cs b/MDFe.Classes/Informacoes/infRespTec.cs deleted file mode 100644 index 9138322a0..000000000 --- a/MDFe.Classes/Informacoes/infRespTec.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - public class infRespTec - { - public string CNPJ { get; set; } - public string xContato { get; set; } - public string email { get; set; } - public string fone { get; set; } - - [XmlIgnore] - public int? idCSRT { get; set; } - public bool idCSRTSpecified - { - get { return idCSRT.HasValue; } - } - - - [XmlElement(ElementName = "idCSRT")] - public string ProxyidCSRT - { - get { return idCSRT != null ? idCSRT.Value.ToString("D3") : null; } - set { idCSRT = int.Parse(value); } - } - - public string hashCSRT { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/prodPred.cs b/MDFe.Classes/Informacoes/prodPred.cs deleted file mode 100644 index 3a9003256..000000000 --- a/MDFe.Classes/Informacoes/prodPred.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace MDFe.Classes.Informacoes -{ - [Serializable] - public class prodPred - { - public tpCarga tpCarga { get; set; } - - public string xProd { get; set; } - - public string cEAN { get; set; } - - public string NCM { get; set; } - - public infLotacao infLotacao { get; set; } - } -} \ No newline at end of file diff --git a/MDFe.Classes/Informacoes/tpValePed.cs b/MDFe.Classes/Informacoes/tpValePed.cs deleted file mode 100644 index 89859fdbc..000000000 --- a/MDFe.Classes/Informacoes/tpValePed.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Xml.Serialization; - -namespace MDFe.Classes.Informacoes -{ - public enum tpValePed - { - [XmlEnum("01")] - Tag = 01, - - [XmlEnum("02")] - Cupom = 02, - - [XmlEnum("03")] - Cartao = 03 - } -} \ No newline at end of file diff --git a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs index e3a61c2bd..7c3a5186c 100644 --- a/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs +++ b/MDFe.Classes/Retorno/MDFeRetRecepcao/MDFeRetConsReciMDFe.cs @@ -30,6 +30,7 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using System; using System.Xml.Serialization; using DFe.Classes.Entidades; @@ -77,7 +78,7 @@ public string CUFProxy } [XmlElement(ElementName = "protMDFe")] - public MDFeProtMDFe ProtMdFe { get; set; } + public MDFeProtMDFe ProtMDFe { get; set; } public static MDFeRetConsReciMDFe LoadXml(string xml) { diff --git a/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs b/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs index 13796047c..78843daaf 100755 --- a/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs +++ b/MDFe.Damdfe.Base/ConfiguracaoDamdfe.cs @@ -40,12 +40,36 @@ public class ConfiguracaoDamdfe { public ConfiguracaoDamdfe() { - this.Logomarca = null; - this.DocumentoCancelado = false; - this.DocumentoEncerrado = false; - this.QuebrarLinhasObservacao = false; + Logomarca = null; + DocumentoCancelado = false; + DocumentoEncerrado = false; + QuebrarLinhasObservacao = false; + MargemDireita = 6; + MargemEsquerda = 6; + MargemSuperior = 8; + MargemInferior = 8; } + /// + /// Margem direita da página em MM + /// + public float MargemDireita { get; set; } + + /// + /// Margem esquerda da página em MM + /// + public float MargemEsquerda { get; set; } + + /// + /// Margem superior da página em MM + /// + public float MargemSuperior { get; set; } + + /// + /// Margem inferior da página em MM + /// + public float MargemInferior { get; set; } + /// /// Logomarca do emitente a ser impressa no DAMDFe do MDFe /// @@ -83,5 +107,18 @@ public Image ObterLogo() var image = Image.FromStream(ms); return image; } + + /// + /// Retorna um objeto do tipo MemoryStream a partir da logo armazenada na propriedade Logomarca + /// + /// + public MemoryStream ObterLogoMemory() + { + if (Logomarca == null) + return new MemoryStream(); + var ms = new MemoryStream(Logomarca); + + return ms; + } } } \ No newline at end of file diff --git a/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx b/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx index 67da28e99..32548a22c 100644 --- a/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx +++ b/MDFe.Damdfe.Base/MDFe/MDFeRetrato.frx @@ -1,5 +1,5 @@  - + using System; using System.IO; using System.Collections; @@ -86,7 +86,7 @@ namespace FastReport if (versao300) { - var infSupl = ((infMDFeSupl)Report.GetColumnValue("MDFeProcMDFe.MDFe.infMDFeSupl")); + var infSupl = ((MdfeInfMDFeSupl)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFeSupl")); Barcode1.Visible = false; if (infSupl != null) @@ -113,15 +113,16 @@ namespace FastReport veic.Init(); while (veic.HasMoreRows) { - txtPlaca.Text += Environment.NewLine + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); + //txtPlaca.Text += Environment.NewLine + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); + txtPlaca.Text += ((String)Report.GetParameterValue("NewLine")) + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Placa")); string rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicReboque.Prop.RNTRC")); if ( string.IsNullOrEmpty(rntrc) ) rntrc = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.RNTRC")); - txtRntrc.Text += Environment.NewLine + rntrc; + txtRntrc.Text += ((String)Report.GetParameterValue("NewLine")) + rntrc; veic.Next(); } - + //Condutores txtCpf.Text = ""; txtNome.Text = ""; @@ -129,10 +130,10 @@ namespace FastReport moto.Init(); while (moto.HasMoreRows) { - txtCpf.Text += FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.CPF"), 'd') + Environment.NewLine; - txtNome.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.XNome")) + Environment.NewLine; + txtCpf.Text += FormatarCampo((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.CPF"), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNome.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.VeicTracao.Condutor.XNome")) + ((String)Report.GetParameterValue("NewLine")); moto.Next(); - } + } //Vales Pedágio txtCnpjResp.Text = ""; @@ -142,9 +143,9 @@ namespace FastReport vale.Init(); while (vale.HasMoreRows) { - txtCnpjResp.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJPg")), 'd') + Environment.NewLine; - txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJForn")), 'd') + Environment.NewLine; - txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.NCompra")) + Environment.NewLine; + txtCnpjResp.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJPg")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.CNPJForn")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.ValePed.Disp.NCompra")) + ((String)Report.GetParameterValue("NewLine")); vale.Next(); } @@ -161,9 +162,9 @@ namespace FastReport var cnpj = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CNPJPg")); var cpf = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CPFPg")); - txtCnpjResp.Text += FormatarCampo(cpf != null && cpf != string.Empty ? cpf : cnpj, 'd') + Environment.NewLine; - txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CNPJForn")), 'd') + Environment.NewLine; - txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.NCompra")) + Environment.NewLine; + txtCnpjResp.Text += FormatarCampo(cpf != null && cpf != string.Empty ? cpf : cnpj, 'd') + ((String)Report.GetParameterValue("NewLine")); + txtCnpjFornec.Text += FormatarCampo(((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.CNPJForn")), 'd') + ((String)Report.GetParameterValue("NewLine")); + txtNumComprovante.Text += ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.valePed.Disp.NCompra")) + ((String)Report.GetParameterValue("NewLine")); valePed.Next(); } } @@ -183,26 +184,26 @@ namespace FastReport if (apolice.Length > 20) apolice = apolice.Substring(0,20); - txtSeguroResponsavel.Text += ((MDFeRespSeg)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Seg.InfResp.RespSeg") == MDFeRespSeg.EmitenteDoMDFe ? "1 - EMITENTE" :"2 - CONTRATANTE") + Environment.NewLine; - txtSeguroSeguradora.Text += seguradora + Environment.NewLine; - txtSeguroApolice.Text += apolice + Environment.NewLine; + txtSeguroResponsavel.Text += ((MDFeRespSeg)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Seg.InfResp.RespSeg") == MDFeRespSeg.EmitenteDoMDFe ? "1 - EMITENTE" :"2 - CONTRATANTE") + ((String)Report.GetParameterValue("NewLine")); + txtSeguroSeguradora.Text += seguradora + ((String)Report.GetParameterValue("NewLine")); + txtSeguroApolice.Text += apolice + ((String)Report.GetParameterValue("NewLine")); seguros.Next(); } - var contratantes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.infContratante"); + var contratantes = Report.GetDataSource("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.InfANTT.InfContratante"); contratantes.Init(); while (contratantes.HasMoreRows) { - string cnpj = string.IsNullOrEmpty((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.infContratante.CNPJ")) ? - ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.infContratante.CPF")) : - ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.infANTT.infContratante.CNPJ")); + string cnpj = string.IsNullOrEmpty((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.InfANTT.InfContratante.CNPJ")) ? + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.InfANTT.InfContratante.CPF")) : + ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfModal.Modal.InfANTT.InfContratante.CNPJ")); - txtContratantes.Text = FormatarCampo(cnpj, 'd') + Environment.NewLine; + txtContratantes.Text = FormatarCampo(cnpj, 'd') + ((String)Report.GetParameterValue("NewLine")); contratantes.Next(); } } - + //Totais qtdeCTe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QCTe")); qtdeCTe = qtdeCTe ?? 0; @@ -211,71 +212,71 @@ namespace FastReport qtdeNFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QNFe")); qtdeNFe = qtdeNFe ?? 0; Text39.Text = qtdeNFe.ToString(); - + qtdeMDFe = ((Nullable<Int32>)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Tot.QMDFe")); qtdeMDFe = qtdeMDFe ?? 0; Text40.Text = qtdeMDFe.ToString(); - DataDocumentoCancelado.Visible = ((Boolean)Report.GetParameterValue("DoocumentoCancelado")) || ((Boolean)Report.GetParameterValue("DocumentoEncerrado")); + DataDocumentoCancelado.Visible = ((Boolean)Report.GetParameterValue("DocumentoCancelado")) || ((Boolean)Report.GetParameterValue("DocumentoEncerrado")); Text60.Text = ((Boolean)Report.GetParameterValue("DocumentoEncerrado")) ? "DOCUMENTO ENCERRADO" : "DOCUMENTO CANCELADO"; Text61.Visible = ((TipoAmbiente)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.Ide.TpAmb")) == TipoAmbiente.Homologacao; if ((Boolean)Report.GetParameterValue("QuebrarLinhasObservacao")) - Text57.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfAdic.InfCpl")).Replace(";",Environment.NewLine); + Text57.Text = ((String)Report.GetColumnValue("MDFeProcMDFe.MDFe.InfMDFe.InfAdic.InfCpl")).Replace(";",((String)Report.GetParameterValue("NewLine"))); } } } - - - - - + + + + + - - - - - + + + + + - + - + - - + + - + - + - + - - + + - + - + - + @@ -284,314 +285,303 @@ namespace FastReport - + - - - - + + + + - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - + + + + - + - + - + - - - + + + + - + - - - - + + + + - + - + - - + + + + + - - + + + + + + - + + + - - + + - + - + - - + + - + - - + + - + - + - + - - + + + + + + + + + + + + - + - + - - + + - + - - + + - + - + - + - + + + + + + + + - + - + - - + + - + - - + + - + - + - + - + + + + + + + + - - - + + + - + - + - - - - - - - + + + + + + + - - - + - + - - - + - - - - + + + + - + - + - + - + - + - - - - + + + - - + + - - + + - - - + + + - + - + - + - + - - + + - + - + - + @@ -599,26 +589,26 @@ namespace FastReport - - - + + + - + - + - + - + - - + + @@ -626,12 +616,15 @@ namespace FastReport - - - - + + + + + + + - + @@ -639,14 +632,14 @@ namespace FastReport - + - + @@ -713,17 +706,17 @@ namespace FastReport - + - + - + - + diff --git a/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs b/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs index 61f37c5d5..7fc9415f8 100755 --- a/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs +++ b/MDFe.Damdfe.Fast/DamdfeFrMDFe.cs @@ -32,12 +32,13 @@ /********************************************************************************/ using System.IO; -using FastReport; -using MDFe.Damdfe.Base; using System; using DFe.Utils; +using FastReport; +using FastReport.Export.Html; using FastReport.Export.Pdf; using MDFe.Classes.Retorno; +using MDFe.Damdfe.Base; namespace MDFe.Damdfe.Fast { @@ -73,8 +74,8 @@ public void RegisterData(MDFeProcMDFe proc) { Relatorio.RegisterData(new[] { proc }, "MDFeProcMDFe", 20); Relatorio.GetDataSource("MDFeProcMDFe").Enabled = true; - } - + } + public void Configurar(ConfiguracaoDamdfe config) { Relatorio.SetParameterValue("DoocumentoCancelado", config.DocumentoCancelado); @@ -164,5 +165,80 @@ public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase export Relatorio.Export(exportBase, outputStream); outputStream.Position = 0; } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public MemoryStream ExportarPdf() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + FastReport.Utils.Config.WebMode = true; + Relatorio.Prepare(); + + var pdfExport = new PDFExport(); + + var stream = new MemoryStream(); + Relatorio.Report.Export(pdfExport, stream); + //pdfExport.Export(Relatorio, stream); + Relatorio.Dispose(); + pdfExport.Dispose(); + + stream.Position = 0; + + return stream; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public Stream ObterHTML() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + Relatorio.Prepare(); + + using (var html = new HTMLExport()) + { + html.EmbedPictures = true; + html.SinglePage = false; + html.SubFolder = false; + html.Layers = true; + html.Navigator = false; + html.Pictures = true; + html.EnableMargins = true; + html.SaveStreams = true; + html.Wysiwyg = true; + + var stream = new MemoryStream(); + Relatorio.Export(html, stream); + + return stream; + } + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + /// Caminho/arquivo onde deve ser salvo o HTML do DAMDFe + public void ExportarHTML(string arquivo) + { + Relatorio.Prepare(); + + var html = new HTMLExport + { + EmbedPictures = true, + SinglePage = true, + EnableVectorObjects = true, + Wysiwyg = true, + SubFolder = false, + Layers = true, + Navigator = false, + Pictures = true, + EnableMargins = true + }; + + Relatorio.Export(html, arquivo); + } } } \ No newline at end of file diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll index f02708d20..b87e4f0df 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.Bars.dll differ diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll index 32de88aa0..1f7146fb5 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.Editor.dll differ diff --git a/MDFe.Damdfe.Fast/Dlls/FastReport.dll b/MDFe.Damdfe.Fast/Dlls/FastReport.dll index f20ad7ab4..f73bc2fca 100755 Binary files a/MDFe.Damdfe.Fast/Dlls/FastReport.dll and b/MDFe.Damdfe.Fast/Dlls/FastReport.dll differ diff --git a/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs b/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs index a68f4678b..b4baec28d 100644 --- a/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs +++ b/MDFe.Damdfe.OpenFast/DamdfeFrMDFe.cs @@ -35,6 +35,7 @@ using System.IO; using DFe.Utils; using FastReport; +using FastReport.Export.Html; using FastReport.Export.PdfSimple; using MDFe.Classes.Retorno; using MDFe.Damdfe.Base; @@ -73,15 +74,21 @@ public void RegisterData(MDFeProcMDFe proc) { Relatorio.RegisterData(new[] { proc }, "MDFeProcMDFe", 20); Relatorio.GetDataSource("MDFeProcMDFe").Enabled = true; - } - + } + public void Configurar(ConfiguracaoDamdfe config) { - Relatorio.SetParameterValue("DoocumentoCancelado", config.DocumentoCancelado); + Relatorio.SetParameterValue("NewLine", Environment.NewLine); + Relatorio.SetParameterValue("Tabulation", "\t"); + Relatorio.SetParameterValue("DocumentoCancelado", config.DocumentoCancelado); Relatorio.SetParameterValue("DocumentoEncerrado", config.DocumentoEncerrado); Relatorio.SetParameterValue("Desenvolvedor", config.Desenvolvedor); Relatorio.SetParameterValue("QuebrarLinhasObservacao", config.QuebrarLinhasObservacao); - ((PictureObject)Relatorio.FindObject("poEmitLogo")).SetImageData(config.Logomarca); + ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = config.ObterLogo(); + ((ReportPage)Relatorio.FindObject("Page1")).LeftMargin = config.MargemEsquerda; + ((ReportPage)Relatorio.FindObject("Page1")).RightMargin = config.MargemDireita; + ((ReportPage)Relatorio.FindObject("Page1")).TopMargin = config.MargemSuperior; + ((ReportPage)Relatorio.FindObject("Page1")).BottomMargin = config.MargemInferior; } /// @@ -133,5 +140,57 @@ public void ExportarPdf(Stream outputStream, FastReport.Export.ExportBase export Relatorio.Export(exportBase, outputStream); outputStream.Position = 0; } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public MemoryStream ExportarPdf() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + FastReport.Utils.Config.WebMode = true; + + Relatorio.Prepare(); + + var pdfExport = new PDFSimpleExport(); + + var stream = new MemoryStream(); + Relatorio.Report.Export(pdfExport, stream); + //pdfExport.Export(Relatorio, stream); + Relatorio.Dispose(); + pdfExport.Dispose(); + + stream.Position = 0; + + return stream; + } + + /// + /// Converte o DAMDFe para HTML e salva-o no caminho/arquivo indicado + /// + public Stream ObterHTML() + { + Relatorio.DoublePass = true; + Relatorio.SmoothGraphics = false; + Relatorio.Prepare(); + + using (var html = new HTMLExport()) + { + html.EmbedPictures = true; + html.SinglePage = false; + html.SubFolder = false; + html.Layers = true; + html.Navigator = false; + html.Pictures = true; + html.EnableMargins = true; + html.SaveStreams = true; + html.Wysiwyg = true; + + var stream = new MemoryStream(); + Relatorio.Export(html, stream); + + return stream; + } + } } } \ No newline at end of file diff --git a/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs b/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs index 97397aaa5..ee8fbab58 100644 --- a/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs +++ b/MDFe.Servicos/ConsultaNaoEncerradosMDFe/ServicoMDFeConsultaNaoEncerrados.cs @@ -31,25 +31,26 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeConsultaNaoEncerrado; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.ConsultaNaoEncerradosMDFe { public class ServicoMDFeConsultaNaoEncerrados { - public MDFeRetConsMDFeNao MDFeConsultaNaoEncerrados(string cnpjCpf) + public MDFeRetConsMDFeNao MDFeConsultaNaoEncerrados(string cnpjCpf, MDFeConfiguracao cfgMdfe = null) { - var consMDFeNaoEnc = ClassesFactory.CriarConsMDFeNaoEnc(cnpjCpf); - consMDFeNaoEnc.ValidarSchema(); - consMDFeNaoEnc.SalvarXmlEmDisco(); + var consMDFeNaoEnc = ClassesFactory.CriarConsMDFeNaoEnc(cnpjCpf, cfgMdfe); + consMDFeNaoEnc.ValidarSchema(cfgMdfe); + consMDFeNaoEnc.SalvarXmlEmDisco(cfgMdfe); - var webService = WsdlFactory.CriaWsdlMDFeConsNaoEnc(); + var webService = WsdlFactory.CriaWsdlMDFeConsNaoEnc(cfgMdfe); var retornoXml = webService.mdfeConsNaoEnc(consMDFeNaoEnc.CriaRequestWs()); var retorno = MDFeRetConsMDFeNao.LoadXmlString(retornoXml.OuterXml, consMDFeNaoEnc); - retorno.SalvarXmlEmDisco(cnpjCpf); + retorno.SalvarXmlEmDisco(cnpjCpf, cfgMdfe); return retorno; } diff --git a/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs b/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs index fd0d579d0..000e28879 100644 --- a/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs +++ b/MDFe.Servicos/ConsultaProtocoloMDFe/ServicoMDFeConsultaProtocolo.cs @@ -31,25 +31,26 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeConsultaProtocolo; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.ConsultaProtocoloMDFe { public class ServicoMDFeConsultaProtocolo { - public MDFeRetConsSitMDFe MDFeConsultaProtocolo(string chave) + public MDFeRetConsSitMDFe MDFeConsultaProtocolo(string chave, MDFeConfiguracao cfgMdfe = null) { - var consSitMdfe = ClassesFactory.CriarConsSitMDFe(chave); - consSitMdfe.ValidarSchema(); - consSitMdfe.SalvarXmlEmDisco(); + var consSitMdfe = ClassesFactory.CriarConsSitMDFe(chave, cfgMdfe); + consSitMdfe.ValidarSchema(cfgMdfe); + consSitMdfe.SalvarXmlEmDisco(cfgMdfe); - var webService = WsdlFactory.CriaWsdlMDFeConsulta(); + var webService = WsdlFactory.CriaWsdlMDFeConsulta(cfgMdfe); var retornoXml = webService.mdfeConsultaMDF(consSitMdfe.CriaRequestWs()); var retorno = MDFeRetConsSitMDFe.LoadXml(retornoXml.OuterXml, consSitMdfe); - retorno.SalvarXmlEmDisco(chave); + retorno.SalvarXmlEmDisco(chave, cfgMdfe); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs b/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs index d5be00246..161ea4685 100644 --- a/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs +++ b/MDFe.Servicos/EventosMDFe/Contratos/IServicoController.cs @@ -30,15 +30,17 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe.Contratos { public interface IServicoController { - MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento); + MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento, MDFeConfiguracao cfgMdfe = null); } } \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/EventoCancelar.cs b/MDFe.Servicos/EventosMDFe/EventoCancelar.cs index c2d395ffd..4a9f55e5c 100644 --- a/MDFe.Servicos/EventosMDFe/EventoCancelar.cs +++ b/MDFe.Servicos/EventosMDFe/EventoCancelar.cs @@ -34,17 +34,20 @@ using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoCancelar { - public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, string justificativa) + public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, string justificativa, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var cancelamento = ClassesFactory.CriaEvCancMDFe(protocolo, justificativa); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, cancelamento, MDFeTipoEvento.Cancelamento); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, cancelamento, MDFeTipoEvento.Cancelamento, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs b/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs index 6db3608d8..e7de8b41c 100644 --- a/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs +++ b/MDFe.Servicos/EventosMDFe/EventoEncerramento.cs @@ -31,31 +31,35 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ - using DFe.Classes.Entidades; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoEncerramento { - public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var encerramento = ClassesFactory.CriaEvEncMDFe(mdfe, protocolo); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento, config); return retorno; } - public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, Estado estadoEncerramento, long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramento(MDFeEletronico mdfe, Estado estadoEncerramento, long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var encerramento = ClassesFactory.CriaEvEncMDFe(estadoEncerramento, codigoMunicipioEncerramento, protocolo); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, encerramento, MDFeTipoEvento.Encerramento, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs b/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs index 9fd492106..32d640724 100644 --- a/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs +++ b/MDFe.Servicos/EventosMDFe/EventoInclusaoCondutor.cs @@ -34,17 +34,20 @@ using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class EventoInclusaoCondutor { - public MDFeRetEventoMDFe MDFeEventoIncluirCondutor(MDFeEletronico mdfe, byte sequenciaEvento, string nome, string cpf) + public MDFeRetEventoMDFe MDFeEventoIncluirCondutor(MDFeEletronico mdfe, byte sequenciaEvento, string nome, string cpf, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var incluirCodutor = ClassesFactory.CriaEvIncCondutorMDFe(nome, cpf); - var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, incluirCodutor, MDFeTipoEvento.InclusaoDeCondutor); + var retorno = new ServicoController().Executar(mdfe, sequenciaEvento, incluirCodutor, MDFeTipoEvento.InclusaoDeCondutor, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs b/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs index f4a924289..9dd35c33c 100644 --- a/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs +++ b/MDFe.Servicos/EventosMDFe/EventoInclusaoDFe.cs @@ -36,6 +36,7 @@ using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; using System.Collections.Generic; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe @@ -43,11 +44,13 @@ namespace MDFe.Servicos.EventosMDFe public class EventoInclusaoDFe { public MDFeRetEventoMDFe MDFeEventoIncluirDFe(MDFeEletronico mdfe, byte sequenciaEvento, string protocolo, - string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos) + string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var inclusao = ClassesFactory.CriaEvIncDFeMDFe(protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos); - return new ServicoController().Executar(mdfe, sequenciaEvento, inclusao, MDFeTipoEvento.InclusaoDFe); + return new ServicoController().Executar(mdfe, sequenciaEvento, inclusao, MDFeTipoEvento.InclusaoDFe, config); } } } \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs b/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs index cb72cae21..26e27ef71 100644 --- a/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs +++ b/MDFe.Servicos/EventosMDFe/EventoPagamentoOperacao.cs @@ -1,24 +1,61 @@ -using System.Collections.Generic; +/********************************************************************************/ +/* Projeto: Biblioteca ZeusMDFe */ +/* Biblioteca C# para emissão de Manifesto Eletrônico Fiscal de Documentos */ +/* (https://mdfe-portal.sefaz.rs.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.Collections.Generic; using MDFe.Classes.Informacoes; -using MDFe.Classes.Informacoes.Evento.CorpoEvento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.EventosMDFe { public class EventoPagamentoOperacao { public MDFeRetEventoMDFe MDFeEventoPagamentoOperacao(Classes.Informacoes.MDFe mdfe, byte sequencia, - string protocolo, infViagens infViagens, List infPagamentos) + string protocolo, MDFeInfViagens infViagens, List infPagamentos, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoPagamento = ClassesFactory.CriaEvPagtoOperMDFe( - protocolo - , infViagens - , infPagamentos + protocolo, + infViagens, + infPagamentos ); - return new ServicoController().Executar(mdfe, sequencia, eventoPagamento, MDFeTipoEvento.PagamentoOperacaoMDFe); + var retorno = new ServicoController().Executar(mdfe, sequencia, eventoPagamento, MDFeTipoEvento.PagamentoOperacaoMDFe, config); + + return retorno; } } } \ No newline at end of file diff --git a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs index 44f325230..f566c4bf0 100644 --- a/MDFe.Servicos/EventosMDFe/FactoryEvento.cs +++ b/MDFe.Servicos/EventosMDFe/FactoryEvento.cs @@ -32,7 +32,7 @@ /********************************************************************************/ using System; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Utils.Configuracoes; @@ -42,20 +42,22 @@ namespace MDFe.Servicos.EventosMDFe { public static class FactoryEvento { - public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipoEvento, byte sequenciaEvento, MDFeEventoContainer evento) + public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipoEvento, byte sequenciaEvento, MDFeEventoContainer evento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoMDFe = new MDFeEventoMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - InfEvento = new MDFeInfEvento + Versao = config.VersaoWebService.VersaoLayout, + InfEvento = new MDFeInfEvento(config.VersaoWebService.VersaoLayout) { Id = "ID" + (long)tipoEvento + MDFe.Chave() + sequenciaEvento.ToString("D2"), - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, + TpAmb = config.VersaoWebService.TipoAmbiente, COrgao = MDFe.UFEmitente(), ChMDFe = MDFe.Chave(), DetEvento = new MDFeDetEvento { - VersaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout, + VersaoServico = config.VersaoWebService.VersaoLayout, EventoContainer = evento }, DhEvento = DateTime.Now, @@ -72,7 +74,7 @@ public static MDFeEventoMDFe CriaEvento(MDFeEletronico MDFe, MDFeTipoEvento tipo eventoMDFe.InfEvento.CPF = cpfEmitente; } - eventoMDFe.Assinar(); + eventoMDFe.Assinar(config); return eventoMDFe; } diff --git a/MDFe.Servicos/EventosMDFe/ServicoController.cs b/MDFe.Servicos/EventosMDFe/ServicoController.cs index f48723b49..72bf4a0c7 100644 --- a/MDFe.Servicos/EventosMDFe/ServicoController.cs +++ b/MDFe.Servicos/EventosMDFe/ServicoController.cs @@ -31,36 +31,39 @@ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.Evento; using MDFe.Classes.Informacoes.Evento.Flags; using MDFe.Classes.Retorno.MDFeEvento; using MDFe.Servicos.EventosMDFe.Contratos; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; using MDFeEletronico = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe { public class ServicoController : IServicoController { - public MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento) + public MDFeRetEventoMDFe Executar(MDFeEletronico mdfe, byte sequenciaEvento, MDFeEventoContainer eventoContainer, MDFeTipoEvento tipoEvento, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var evento = FactoryEvento.CriaEvento(mdfe, tipoEvento, sequenciaEvento, - eventoContainer); - + eventoContainer, + config); string chave = mdfe.Chave(); - evento.ValidarSchema(); - evento.SalvarXmlEmDisco(chave); + evento.ValidarSchema(config); + evento.SalvarXmlEmDisco(chave, config); - var webService = WsdlFactory.CriaWsdlMDFeRecepcaoEvento(); + var webService = WsdlFactory.CriaWsdlMDFeRecepcaoEvento(config); var retornoXml = webService.mdfeRecepcaoEvento(evento.CriaXmlRequestWs()); var retorno = MDFeRetEventoMDFe.LoadXml(retornoXml.OuterXml, evento); - retorno.SalvarXmlEmDisco(chave); + retorno.SalvarXmlEmDisco(chave, config); return retorno; } diff --git a/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs b/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs index 8a175dc84..653dae482 100644 --- a/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs +++ b/MDFe.Servicos/EventosMDFe/ServicoMDFeEvento.cs @@ -28,13 +28,15 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using MDFe.Classes.Informacoes.Evento.CorpoEvento; using MDFe.Classes.Retorno.MDFeEvento; using System.Collections.Generic; using DFe.Classes.Entidades; using MDFe.Classes.Informacoes; +using MDFe.Utils.Configuracoes; using MDFeEletronica = MDFe.Classes.Informacoes.MDFe; namespace MDFe.Servicos.EventosMDFe @@ -43,51 +45,65 @@ public class ServicoMDFeEvento { public MDFeRetEventoMDFe MDFeEventoIncluirCondutor( MDFeEletronica mdfe, byte sequenciaEvento, string nome, - string cpf) + string cpf, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoIncluirCondutor = new EventoInclusaoCondutor(); - return eventoIncluirCondutor.MDFeEventoIncluirCondutor(mdfe, sequenciaEvento, nome, cpf); + return eventoIncluirCondutor.MDFeEventoIncluirCondutor(mdfe, sequenciaEvento, nome, cpf, config); } public MDFeRetEventoMDFe MDFeEventoIncluirDFe( MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, - string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos) + string codigoMunicipioCarregamento, string nomeMunicipioCarregamento, List informacoesDocumentos, + MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoIncluirDFe = new EventoInclusaoDFe(); - return eventoIncluirDFe.MDFeEventoIncluirDFe(mdfe, sequenciaEvento, protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos); + return eventoIncluirDFe.MDFeEventoIncluirDFe(mdfe, sequenciaEvento, protocolo, codigoMunicipioCarregamento, nomeMunicipioCarregamento, informacoesDocumentos, config); } - public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoEncerramento = new EventoEncerramento(); - return eventoEncerramento.MDFeEventoEncerramento(mdfe, sequenciaEvento, protocolo); + return eventoEncerramento.MDFeEventoEncerramento(mdfe, sequenciaEvento, protocolo, config); } - public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, Estado estadoEncerramento, long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo) + public MDFeRetEventoMDFe MDFeEventoEncerramentoMDFeEventoEncerramento(MDFeEletronica mdfe, Estado estadoEncerramento, + long codigoMunicipioEncerramento, byte sequenciaEvento, string protocolo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoEncerramento = new EventoEncerramento(); - return eventoEncerramento.MDFeEventoEncerramento(mdfe, estadoEncerramento, codigoMunicipioEncerramento, sequenciaEvento, protocolo); + return eventoEncerramento.MDFeEventoEncerramento(mdfe, estadoEncerramento, codigoMunicipioEncerramento, sequenciaEvento, protocolo, config); } public MDFeRetEventoMDFe MDFeEventoCancelar(MDFeEletronica mdfe, byte sequenciaEvento, string protocolo, - string justificativa) + string justificativa, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoCancelamento = new EventoCancelar(); - return eventoCancelamento.MDFeEventoCancelar(mdfe, sequenciaEvento, protocolo, justificativa); + return eventoCancelamento.MDFeEventoCancelar(mdfe, sequenciaEvento, protocolo, justificativa, config); } public MDFeRetEventoMDFe MDFeEventoPagamentoOperacaoTransporte(MDFeEletronica mdfe, byte sequenciaEvneto, - string protocolo, infViagens infViagens, List infPagamentos) + string protocolo, MDFeInfViagens infViagens, List infPagamentos, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var eventoPagamentoOperacao = new EventoPagamentoOperacao(); return eventoPagamentoOperacao.MDFeEventoPagamentoOperacao(mdfe, sequenciaEvneto, protocolo, - infViagens, infPagamentos); + infViagens, infPagamentos, config); } } } \ No newline at end of file diff --git a/MDFe.Servicos/Factory/ClassesFactory.cs b/MDFe.Servicos/Factory/ClassesFactory.cs index ba7819ee3..b395f7461 100644 --- a/MDFe.Servicos/Factory/ClassesFactory.cs +++ b/MDFe.Servicos/Factory/ClassesFactory.cs @@ -30,7 +30,8 @@ /* http://www.zeusautomacao.com.br/ */ /* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; + +using MDFe.Classes.Extensoes; using MDFe.Classes.Informacoes.ConsultaNaoEncerrados; using MDFe.Classes.Informacoes.ConsultaProtocolo; using MDFe.Classes.Informacoes.Evento.CorpoEvento; @@ -48,25 +49,25 @@ namespace MDFe.Servicos.Factory { public static class ClassesFactory { - public static MDFeCosMDFeNaoEnc CriarConsMDFeNaoEnc(string cnpjCpf) + public static MDFeCosMDFeNaoEnc CriarConsMDFeNaoEnc(string documento, MDFeConfiguracao cfgMdfe = null) { - var documentoUnico = cnpjCpf; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; var consMDFeNaoEnc = new MDFeCosMDFeNaoEnc { - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, XServ = "CONSULTAR NÃO ENCERRADOS" }; - if (documentoUnico.Length == 11) + if (documento.Length == 11) { - consMDFeNaoEnc.CPF = cnpjCpf; + consMDFeNaoEnc.CPF = documento; } - if (documentoUnico.Length == 14) + if (documento.Length == 14) { - consMDFeNaoEnc.CNPJ = cnpjCpf; + consMDFeNaoEnc.CNPJ = documento; } return consMDFeNaoEnc; @@ -83,12 +84,14 @@ public static MDFeEvIncDFeMDFe CriaEvIncDFeMDFe(string protocolo, string codigoM }; } - public static MDFeConsSitMDFe CriarConsSitMDFe(string chave) + public static MDFeConsSitMDFe CriarConsSitMDFe(string chave, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var consSitMdfe = new MDFeConsSitMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, XServ = "CONSULTAR", ChMDFe = chave }; @@ -153,47 +156,53 @@ public static MDFeEvIncCondutorMDFe CriaEvIncCondutorMDFe(string nome, string cp return incluirCodutor; } - public static MDFeEnviMDFe CriaEnviMDFe(long lote, MDFeEletronico mdfe) + public static MDFeEnviMDFe CriaEnviMDFe(long lote, MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var enviMdfe = new MDFeEnviMDFe { MDFe = mdfe, IdLote = lote.ToString(), - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout + Versao = config.VersaoWebService.VersaoLayout }; return enviMdfe; } - public static MDFeConsReciMDFe CriaConsReciMDFe(string numeroRecibo) + public static MDFeConsReciMDFe CriaConsReciMDFe(string numeroRecibo, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var consReciMDFe = new MDFeConsReciMDFe { - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, NRec = numeroRecibo }; return consReciMDFe; } - public static MDFeConsStatServMDFe CriaConsStatServMDFe() + public static MDFeConsStatServMDFe CriaConsStatServMDFe(MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + return new MDFeConsStatServMDFe { - TpAmb = MDFeConfiguracao.VersaoWebService.TipoAmbiente, - Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout, + TpAmb = config.VersaoWebService.TipoAmbiente, + Versao = config.VersaoWebService.VersaoLayout, XServ = "STATUS" }; } - public static evPagtoOperMDFe CriaEvPagtoOperMDFe(string protocolo, infViagens infViagens, List infPagamentos) + public static MDFeEvPagtoOperMDFe CriaEvPagtoOperMDFe(string protocolo, MDFeInfViagens infViagens, List infPagamentos) { - return new evPagtoOperMDFe + return new MDFeEvPagtoOperMDFe { - infViagens = infViagens, - nProt = protocolo, - infPag = infPagamentos + InfViagens = infViagens, + NProt = protocolo, + InfPag = infPagamentos }; } } diff --git a/MDFe.Servicos/Factory/WsdlFactory.cs b/MDFe.Servicos/Factory/WsdlFactory.cs index 6be63f876..8bb927104 100644 --- a/MDFe.Servicos/Factory/WsdlFactory.cs +++ b/MDFe.Servicos/Factory/WsdlFactory.cs @@ -33,7 +33,7 @@ using CTe.CTeOSDocumento.Common; using DFe.Classes.Extensoes; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Servicos.Enderecos.Helper; using MDFe.Utils.Configuracoes; using MDFe.Wsdl.Gerado.MDFeStatusServico; @@ -48,80 +48,96 @@ namespace MDFe.Servicos.Factory { public static class WsdlFactory { - public static MDFeConsNaoEnc CriaWsdlMDFeConsNaoEnc() + public static MDFeConsNaoEnc CriaWsdlMDFeConsNaoEnc(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeConsNaoEnc; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeConsNaoEnc; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); var ws = new MDFeConsNaoEnc(configuracaoWsdl); return ws; } - public static MDFeConsulta CriaWsdlMDFeConsulta() + public static MDFeConsulta CriaWsdlMDFeConsulta(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeConsulta; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeConsulta; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeConsulta(configuracaoWsdl); } - public static MDFeRecepcaoEvento CriaWsdlMDFeRecepcaoEvento() + public static MDFeRecepcaoEvento CriaWsdlMDFeRecepcaoEvento(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRecepcaoEvento; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, versao); + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcaoEvento; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeRecepcaoEvento(configuracaoWsdl); } - public static MDFeRecepcao CriaWsdlMDFeRecepcao() + public static MDFeRecepcao CriaWsdlMDFeRecepcao(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRecepcao; - var versaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcao; + var versaoServico = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versaoServico); + var configuracaoWsdl = CriaConfiguracao(url, versaoServico, config); return new MDFeRecepcao(configuracaoWsdl); } - public static MDFeRecepcaoSinc CriaWsdlMDFeRecepcaoSinc() + public static MDFeRecepcaoSinc CriaWsdlMDFeRecepcaoSinc(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRecepcaoSinc; - var versaoServico = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, versaoServico); + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRecepcaoSinc; + var versaoServico = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versaoServico, config); return new MDFeRecepcaoSinc(configuracaoWsdl); } - public static MDFeRetRecepcao CriaWsdlMDFeRetRecepcao() + public static MDFeRetRecepcao CriaWsdlMDFeRetRecepcao(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeRetRecepcao; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeRetRecepcao; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); - var configuracaoWsdl = CriaConfiguracao(url, versao); + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeRetRecepcao(configuracaoWsdl); } - public static MDFeStatusServico CriaWsdlMDFeStatusServico() + public static MDFeStatusServico CriaWsdlMDFeStatusServico(MDFeConfiguracao cfgMdfe = null) { - var url = UrlHelper.ObterUrlServico(MDFeConfiguracao.VersaoWebService.TipoAmbiente).MDFeStatusServico; - var versao = MDFeConfiguracao.VersaoWebService.VersaoLayout.GetVersaoString(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var configuracaoWsdl = CriaConfiguracao(url, versao); + var url = UrlHelper.ObterUrlServico(config.VersaoWebService.TipoAmbiente).MDFeStatusServico; + var versao = config.VersaoWebService.VersaoLayout.GetVersaoString(); + + var configuracaoWsdl = CriaConfiguracao(url, versao, config); return new MDFeStatusServico(configuracaoWsdl); } - private static WsdlConfiguracao CriaConfiguracao(string url, string versao) + private static WsdlConfiguracao CriaConfiguracao(string url, string versao, MDFeConfiguracao cfgMdfe = null) { - var codigoEstado = MDFeConfiguracao.VersaoWebService.UfEmitente.GetCodigoIbgeEmString(); - var certificadoDigital = MDFeConfiguracao.X509Certificate2; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + + var codigoEstado = config.VersaoWebService.UfEmitente.GetCodigoIbgeEmString(); + var certificadoDigital = config.X509Certificate2; return new WsdlConfiguracao { @@ -129,7 +145,7 @@ private static WsdlConfiguracao CriaConfiguracao(string url, string versao) Versao = versao, CodigoIbgeEstado = codigoEstado, Url = url, - TimeOut = MDFeConfiguracao.VersaoWebService.TimeOut + TimeOut = config.VersaoWebService.TimeOut }; } } diff --git a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs index 771d82091..73ab9e5c5 100644 --- a/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs +++ b/MDFe.Servicos/RecepcaoMDFe/ServicoMDFeRecepcao.cs @@ -28,12 +28,12 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ using System; using DFe.Utils; -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Flags; using MDFe.Classes.Retorno.MDFeRecepcao; using MDFe.Classes.Retorno.MDFeRetRecepcao.Sincrono; @@ -50,11 +50,13 @@ public class ServicoMDFeRecepcao public event EventHandler AntesDeEnviar; public event EventHandler GerouChave; - public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) + public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { - var enviMDFe = ClassesFactory.CriaEnviMDFe(lote, mdfe); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - switch (MDFeConfiguracao.VersaoWebService.VersaoLayout) + var enviMDFe = ClassesFactory.CriaEnviMDFe(lote, mdfe, config); + + switch (config.VersaoWebService.VersaoLayout) { case VersaoServico.Versao100: mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao100; @@ -66,43 +68,45 @@ public MDFeRetEnviMDFe MDFeRecepcao(long lote, MDFeEletronico mdfe) break; } - enviMDFe.MDFe.Assina(GerouChave, this); + enviMDFe.MDFe.Assina(GerouChave, this, config); - if (MDFeConfiguracao.IsAdicionaQrCode && MDFeConfiguracao.VersaoWebService.VersaoLayout == VersaoServico.Versao300) + if (config.IsAdicionaQrCode && config.VersaoWebService.VersaoLayout == VersaoServico.Versao300) { - mdfe.infMDFeSupl = mdfe.QrCode(MDFeConfiguracao.X509Certificate2); + mdfe.InfMDFeSupl = mdfe.QrCode(config.X509Certificate2); } - enviMDFe.Valida(); - enviMDFe.SalvarXmlEmDisco(); + enviMDFe.Valida(config); + enviMDFe.SalvarXmlEmDisco(config); - var webService = WsdlFactory.CriaWsdlMDFeRecepcao(); + var webService = WsdlFactory.CriaWsdlMDFeRecepcao(config); OnAntesDeEnviar(enviMDFe); var retornoXml = webService.mdfeRecepcaoLote(enviMDFe.CriaXmlRequestWs()); var retorno = MDFeRetEnviMDFe.LoadXml(retornoXml.OuterXml, enviMDFe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; } - public MDFeRetMDFe MDFeRecepcaoSinc(MDFeEletronico mdfe) + public MDFeRetMDFe MDFeRecepcaoSinc(MDFeEletronico mdfe, MDFeConfiguracao cfgMdfe = null) { + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + mdfe.InfMDFe.InfModal.VersaoModal = MDFeVersaoModal.Versao300; mdfe.InfMDFe.Ide.ProxyDhIniViagem = mdfe.InfMDFe.Ide.DhIniViagem.ParaDataHoraStringUtc(); - mdfe.Assina(GerouChave, this); + mdfe.Assina(GerouChave, this, config); - if (MDFeConfiguracao.IsAdicionaQrCode) + if (config.IsAdicionaQrCode) { - mdfe.infMDFeSupl = mdfe.QrCode(MDFeConfiguracao.X509Certificate2); + mdfe.InfMDFeSupl = mdfe.QrCode(config.X509Certificate2); } - mdfe.Valida(); - mdfe.SalvarXmlEmDisco(); + mdfe.Valida(config); + mdfe.SalvarXmlEmDisco(null, config); - var webService = WsdlFactory.CriaWsdlMDFeRecepcaoSinc(); + var webService = WsdlFactory.CriaWsdlMDFeRecepcaoSinc(config); var retornoXml = webService.mdfeRecepcao(mdfe.CriaXmlRequestWs()); var retorno = MDFeRetMDFe.LoadXml(retornoXml.OuterXml, mdfe); diff --git a/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs b/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs index 443da825d..744547f4f 100644 --- a/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs +++ b/MDFe.Servicos/RetRecepcaoMDFe/ServicoMDFeRetRecepcao.cs @@ -28,28 +28,31 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeRetRecepcao; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.RetRecepcaoMDFe { public class ServicoMDFeRetRecepcao { - public MDFeRetConsReciMDFe MDFeRetRecepcao(string numeroRecibo) + public MDFeRetConsReciMDFe MDFeRetRecepcao(string numeroRecibo, MDFeConfiguracao cfgMdfe = null) { - var consReciMdfe = ClassesFactory.CriaConsReciMDFe(numeroRecibo); - consReciMdfe.ValidaSchema(); - consReciMdfe.SalvarXmlEmDisco(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var webService = WsdlFactory.CriaWsdlMDFeRetRecepcao(); + var consReciMdfe = ClassesFactory.CriaConsReciMDFe(numeroRecibo, config); + consReciMdfe.ValidaSchema(config); + consReciMdfe.SalvarXmlEmDisco(config); + + var webService = WsdlFactory.CriaWsdlMDFeRetRecepcao(config); var retornoXml = webService.mdfeRetRecepcao(consReciMdfe.CriaRequestWs()); var retorno = MDFeRetConsReciMDFe.LoadXml(retornoXml.OuterXml, consReciMdfe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; } diff --git a/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs b/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs index 7d73b02ce..9d50f7491 100644 --- a/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs +++ b/MDFe.Servicos/StatusServicoMDFe/ServicoMDFeStatusServico.cs @@ -28,28 +28,31 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ -using MDFe.Classes.Extencoes; +using MDFe.Classes.Extensoes; using MDFe.Classes.Retorno.MDFeStatusServico; using MDFe.Servicos.Factory; +using MDFe.Utils.Configuracoes; namespace MDFe.Servicos.StatusServicoMDFe { public class ServicoMDFeStatusServico { - public MDFeRetConsStatServ MDFeStatusServico() + public MDFeRetConsStatServ MDFeStatusServico(MDFeConfiguracao cfgMdfe = null) { - var consStatServMDFe = ClassesFactory.CriaConsStatServMDFe(); - consStatServMDFe.ValidarSchema(); - consStatServMDFe.SalvarXmlEmDisco(); + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; - var webService = WsdlFactory.CriaWsdlMDFeStatusServico(); + var consStatServMDFe = ClassesFactory.CriaConsStatServMDFe(config); + consStatServMDFe.ValidarSchema(config); + consStatServMDFe.SalvarXmlEmDisco(config); + + var webService = WsdlFactory.CriaWsdlMDFeStatusServico(config); var retornoXml = webService.mdfeStatusServicoMDF(consStatServMDFe.CriaRequestWs()); var retorno = MDFeRetConsStatServ.LoadXml(retornoXml.OuterXml, consStatServMDFe); - retorno.SalvarXmlEmDisco(); + retorno.SalvarXmlEmDisco(config); return retorno; diff --git a/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs b/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs index fca3252a6..e31c301e2 100644 --- a/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs +++ b/MDFe.Utils/Configuracoes/MDFeConfiguracao.cs @@ -32,47 +32,88 @@ /********************************************************************************/ using System.Security.Cryptography.X509Certificates; -using DFe.Classes.Entidades; -using DFe.Classes.Flags; using DFe.Utils; using DFe.Utils.Assinatura; using System; -using VersaoServico = MDFe.Utils.Flags.VersaoServico; +using System.ComponentModel; +using System.IO; +using System.Runtime.CompilerServices; +using NFe.Utils.Annotations; namespace MDFe.Utils.Configuracoes { - public class MDFeConfiguracao : IDisposable + public class MDFeConfiguracao : IDisposable, INotifyPropertyChanged { - private static MDFeVersaoWebService _versaoWebService; + private static volatile MDFeConfiguracao _instancia; + private static readonly object SyncRoot = new object(); + + private string _caminhoSchemas; + private bool _deveSalvarXmls; + private MDFeVersaoWebService _versaoWebService; + private X509Certificate2 _certificado; public MDFeConfiguracao() { VersaoWebService = new MDFeVersaoWebService(); + ConfiguracaoCertificado = new ConfiguracaoCertificado(); } - public static ConfiguracaoCertificado ConfiguracaoCertificado { get; set; } + static MDFeConfiguracao() + { + } - public static bool IsSalvarXml { get; set; } - public static string CaminhoSchemas { get; set; } - public static string CaminhoSalvarXml { get; set; } - public static bool IsAdicionaQrCode { get; set; } + public ConfiguracaoCertificado ConfiguracaoCertificado { get; set; } - public static MDFeVersaoWebService VersaoWebService + /// + /// Informar se a biblioteca deve salvar o xml de envio e de retorno + /// + public bool IsSalvarXml + { + get { return _deveSalvarXmls; } + set + { + if (!value) + CaminhoSalvarXml = ""; + _deveSalvarXmls = value; + } + } + + /// + /// Diretório onde estão armazenados os schemas para validação + /// + public string CaminhoSchemas + { + get { return _caminhoSchemas; } + set + { + if (!string.IsNullOrEmpty(value) && !Directory.Exists(value)) + throw new Exception("Diretório " + value + " não encontrado!"); + _caminhoSchemas = value; + } + } + + /// + /// Diretório onde os xmls de envio/retorno devem ser salvos + /// + public string CaminhoSalvarXml { get; set; } + + public bool IsAdicionaQrCode { get; set; } + + public MDFeVersaoWebService VersaoWebService { get { return GetMdfeVersaoWebService(); } set { _versaoWebService = value; } } - private static MDFeVersaoWebService GetMdfeVersaoWebService() + private MDFeVersaoWebService GetMdfeVersaoWebService() { - if(_versaoWebService == null) + if (_versaoWebService == null) _versaoWebService = new MDFeVersaoWebService(); return _versaoWebService; } - - private static X509Certificate2 _certificado = null; - public static X509Certificate2 X509Certificate2 + + public X509Certificate2 X509Certificate2 { get { @@ -84,40 +125,79 @@ public static X509Certificate2 X509Certificate2 } } - public static bool NaoSalvarXml() + public bool NaoSalvarXml() { return !IsSalvarXml; } - private static X509Certificate2 ObterCertificado() + private X509Certificate2 ObterCertificado() { return CertificadoDigital.ObterCertificado(ConfiguracaoCertificado); } - public void Dispose() + /// + /// Instância do Singleton de MDFeConfiguracao + /// + public static MDFeConfiguracao Instancia { - if (!ConfiguracaoCertificado.ManterDadosEmCache && _certificado != null) + get { - _certificado.Reset(); - _certificado = null; + if (_instancia != null) return _instancia; + lock (SyncRoot) + { + if (_instancia != null) return _instancia; + _instancia = new MDFeConfiguracao(); + } + + return _instancia; } + set + { + lock (SyncRoot) + { + if (value != null) + _instancia = value; + } + } + } + + /// + /// Limpa a instancia atual caso exista + /// + public static void LimparInstancia() + { + _instancia = null; + } + + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + private void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + var handler = PropertyChanged; + if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); + } + + public void Dispose() + { + LimparCertificado(); } ~MDFeConfiguracao() { - if (!ConfiguracaoCertificado.ManterDadosEmCache && _certificado != null) + LimparCertificado(); + } + + private void LimparCertificado() + { + var naoDeveManterCertificadoEmCache = + !ConfiguracaoCertificado.ManterDadosEmCache && _certificado != null; + + if (naoDeveManterCertificadoEmCache) { _certificado.Reset(); _certificado = null; } } } - - public class MDFeVersaoWebService - { - public int TimeOut { get; set; } - public Estado UfEmitente { get; set; } - public TipoAmbiente TipoAmbiente { get; set; } - public VersaoServico VersaoLayout { get; set; } - } } diff --git a/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs b/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs new file mode 100644 index 000000000..7feabba9a --- /dev/null +++ b/MDFe.Utils/Configuracoes/MDFeVersaoWebService.cs @@ -0,0 +1,14 @@ +using DFe.Classes.Entidades; +using DFe.Classes.Flags; +using VersaoServico = MDFe.Utils.Flags.VersaoServico; + +namespace MDFe.Utils.Configuracoes +{ + public class MDFeVersaoWebService + { + public int TimeOut { get; set; } + public Estado UfEmitente { get; set; } + public TipoAmbiente TipoAmbiente { get; set; } + public VersaoServico VersaoLayout { get; set; } + } +} diff --git a/MDFe.Utils/MDFe.Utils.csproj b/MDFe.Utils/MDFe.Utils.csproj index b936198c1..c75c15535 100755 --- a/MDFe.Utils/MDFe.Utils.csproj +++ b/MDFe.Utils/MDFe.Utils.csproj @@ -9,6 +9,7 @@ + diff --git a/MDFe.Utils/Validacao/Validador.cs b/MDFe.Utils/Validacao/Validador.cs index d34d1ee71..07b0d4961 100644 --- a/MDFe.Utils/Validacao/Validador.cs +++ b/MDFe.Utils/Validacao/Validador.cs @@ -28,8 +28,9 @@ /* */ /* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */ /* http://www.zeusautomacao.com.br/ */ -/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */ +/* Rua Comendador Francisco José da Cunha, 111 - Itabaiana - SE - 49500-000 */ /********************************************************************************/ + using MDFe.Utils.Configuracoes; using System; using System.IO; @@ -40,9 +41,10 @@ namespace MDFe.Utils.Validacao { public class Validador { - public static void Valida(string xml, string schema) + public static void Valida(string xml, string schema, MDFeConfiguracao cfgMdfe = null) { - var pathSchema = MDFeConfiguracao.CaminhoSchemas; + var config = cfgMdfe ?? MDFeConfiguracao.Instancia; + var pathSchema = config.CaminhoSchemas; if (!Directory.Exists(pathSchema)) throw new Exception("Diretório de Schemas não encontrado: \n" + pathSchema); @@ -55,14 +57,16 @@ public static void Valida(string xml, string schema) // Carrega o arquivo de esquema var schemas = new XmlSchemaSet(); schemas.XmlResolver = new XmlUrlResolver(); - cfg.Schemas = schemas; + // Quando carregar o eschema, 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 cfg.ValidationEventHandler += ValidationEventHandler; - // cria um leitor para validação + + // Cria um leitor para validação var validator = XmlReader.Create(new StringReader(xml), cfg); try {