예제 #1
0
파일: Extevento.cs 프로젝트: myrp/DFe.NET
        private static void ValidarSchemaEventoContainer(EventoContainer container, versao versao, ConfiguracaoServico configuracaoServico = null)
        {
            if (container.GetType() == typeof(evCancCTe))
            {
                var evCancCTe = (evCancCTe)container;

                var xmlEventoCancelamento = evCancCTe.ObterXmlString();

                switch (versao)
                {
                case versao.ve200:
                    Validador.Valida(xmlEventoCancelamento, "evCancCTe_v2.00.xsd", configuracaoServico);
                    break;

                case versao.ve300:
                    Validador.Valida(xmlEventoCancelamento, "evCancCTe_v3.00.xsd", configuracaoServico);
                    break;

                default:
                    throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " +
                                                        "a versão está inválida, somente é permitido " +
                                                        "versão 2.00 é 3.00");
                }
            }

            if (container.GetType() == typeof(evCCeCTe))
            {
                var evCCeCTe = (evCCeCTe)container;

                var xmlEventoCCe = evCCeCTe.ObterXmlString();

                switch (versao)
                {
                case versao.ve200:
                    Validador.Valida(xmlEventoCCe, "evCCeCTe_v2.00.xsd", configuracaoServico);
                    break;

                case versao.ve300:
                    Validador.Valida(xmlEventoCCe, "evCCeCTe_v3.00.xsd", configuracaoServico);
                    break;

                default:
                    throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " +
                                                        "a versão está inválida, somente é permitido " +
                                                        "versão 2.00 é 3.00");
                }
            }

            if (container.GetType() == typeof(evPrestDesacordo))
            {
                var evPrestDesacordo = (evPrestDesacordo)container;

                var xmlEventoCCe = evPrestDesacordo.ObterXmlString();

                switch (versao)
                {
                case versao.ve200:
                    Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v2.00.xsd", configuracaoServico);
                    break;

                case versao.ve300:
                    Validador.Valida(xmlEventoCCe, "evPrestDesacordo_v3.00.xsd", configuracaoServico);
                    break;

                default:
                    throw new InvalidOperationException("Nos achamos um erro na hora de validar o schema, " +
                                                        "a versão está inválida, somente é permitido " +
                                                        "versão 2.00 é 3.00");
                }
            }
        }
예제 #2
0
 //Vou manter para evitar quebra de código pois a classe e o metodo são publicos
 public static eventoCTe CriaEvento(CTeEletronico cte, CTeTipoEvento cTeTipoEvento, int sequenciaEvento, EventoContainer container, ConfiguracaoServico configuracaoServico = null)
 {
     return(CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico));
 }
예제 #3
0
        public retEventoCTe Executar(TipoEvento tipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container)
        {
            var evento = FactoryEvento.CriaEvento(tipoEvento, sequenciaEvento, chave, cnpj, container);

            evento.Assina();
            evento.ValidarSchema();
            evento.SalvarXmlEmDisco();

            var webService = WsdlFactory.CriaWsdlCteEvento();
            var retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs());

            var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento);

            retorno.SalvarXmlEmDisco();

            return(retorno);
        }
예제 #4
0
 public retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, TipoEvento tipoEvento)
 {
     return(Executar(tipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container));
 }
예제 #5
0
        public static eventoCTe CriaEvento(TipoEvento tipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container)
        {
            var configuracaoServico = ConfiguracaoServico.Instancia;

            var id = new StringBuilder("ID");

            id.Append((int)tipoEvento);
            id.Append(chave);
            id.Append(sequenciaEvento.ToString("D2"));

            return(new eventoCTe
            {
                versao = configuracaoServico.VersaoLayout,
                infEvento = new infEventoEnv
                {
                    tpAmb = configuracaoServico.tpAmb,
                    CNPJ = cnpj,
                    cOrgao = configuracaoServico.cUF,
                    chCTe = chave,
                    dhEvento = DateTime.Now,
                    nSeqEvento = sequenciaEvento,
                    tpEvento = tipoEvento,
                    detEvento = new detEvento
                    {
                        versaoEvento = configuracaoServico.VersaoLayout,
                        EventoContainer = container
                    },
                    Id = id.ToString()
                }
            });
        }
예제 #6
0
 //Vou manter para evitar quebra de código pois a classe e o metodo são publicos
 public static eventoCTe CriaEvento(CTeEletronico cte, TipoEvento tipoEvento, int sequenciaEvento, EventoContainer container)
 {
     return(CriaEvento(tipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container));
 }
예제 #7
0
 public async Task <retEventoCTe> ExecutarAsync(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento)
 {
     return(await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container));
 }