public void DeveUrlAmEstarCorretaParaNFeAutorizacaoVersao4()
        {
            var url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, VersaoServico.Versao400, Estado.AM,
                                                  TipoAmbiente.Producao, ModeloDocumento.NFe, TipoEmissao.teNormal);

            Assert.Equal("https://nfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4", url);
        }
Esempio n. 2
0
        /// <summary>
        /// Atualiza as versões dos serviços
        /// <para>Obs: As versões do serviços podem variar em função  da UF(<see cref="Estado"/>), do tipo de ambiente(<see cref="TipoAmbiente"/>), do modelo de documento(<see cref="DFe.Classes.Flags.ModeloDocumento"/>) e da forma de emissão(<see cref="TipoEmissao"/>)</para>
        /// </summary>
        private void AtualizaVersoes()
        {
            if (!_defineVersaoServicosAutomaticamente)
            {
                return;
            }

            var enderecosMaisecentes =
                Enderecador.ObterEnderecoServicosMaisRecentes(VersaoLayout, cUF, tpAmb, ModeloDocumento, tpEmis);

            var obterVersao = new Func <ServicoNFe, VersaoServico>(servico =>
                                                                   enderecosMaisecentes.Where(n => n.ServicoNFe == servico).Select(n => n.VersaoServico).FirstOrDefault());


            if (enderecosMaisecentes.Any())
            {
                VersaoRecepcaoEventoCceCancelamento          = obterVersao(ServicoNFe.RecepcaoEventoCancelmento);
                VersaoRecepcaoEventoEpec                     = obterVersao(ServicoNFe.RecepcaoEventoEpec);
                VersaoRecepcaoEventoManifestacaoDestinatario = obterVersao(ServicoNFe.RecepcaoEventoManifestacaoDestinatario);
                VersaoNfeRecepcao          = obterVersao(ServicoNFe.NfeRecepcao);
                VersaoNfeRetRecepcao       = obterVersao(ServicoNFe.NfeRetRecepcao);
                VersaoNfeConsultaCadastro  = obterVersao(ServicoNFe.NfeConsultaCadastro);
                VersaoNfeInutilizacao      = obterVersao(ServicoNFe.NfeInutilizacao);
                VersaoNfeConsultaProtocolo = obterVersao(ServicoNFe.NfeConsultaProtocolo);
                VersaoNfeStatusServico     = obterVersao(ServicoNFe.NfeStatusServico);
                VersaoNFeAutorizacao       = obterVersao(ServicoNFe.NFeAutorizacao);
                VersaoNFeRetAutorizacao    = obterVersao(ServicoNFe.NFeRetAutorizacao);
                VersaoNFeDistribuicaoDFe   = obterVersao(ServicoNFe.NFeDistribuicaoDFe);
                VersaoNfeConsultaDest      = obterVersao(ServicoNFe.NfeConsultaDest);
                VersaoNfeDownloadNF        = obterVersao(ServicoNFe.NfeDownloadNF);
                VersaoNfceAministracaoCSC  = obterVersao(ServicoNFe.NfceAdministracaoCSC);
            }
        }
        public void DeveUrlSpEstarCorretaParaNFeAutorizacaoVersao4()
        {
            var url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, VersaoServico.Versao400, Estado.SP,
                                                  TipoAmbiente.Producao, ModeloDocumento.NFe, TipoEmissao.teNormal);

            Assert.Equal("https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx", url);
        }
Esempio n. 4
0
        /// <summary>
        /// Cria o cliente <see cref="SoapHttpClientProtocol"/> para o serviço de Autorização
        /// </summary>
        /// <param name="cfg">Configuração do serviço</param>
        /// <param name="certificado">Certificado</param>
        /// <returns></returns>
        public static INfeServicoAutorizacao CriaWsdlAutorizacao(ConfiguracaoServico cfg, X509Certificate2 certificado)
        {
            var url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, cfg);

            if (cfg.UsaSvanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.UsaSvcanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVCAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.VersaoNFeAutorizacao == VersaoServico.ve400)
            {
                return(new NFeAutorizacao4(url, certificado, cfg.TimeOut));
            }

            if (cfg.cUF == Estado.PR & cfg.VersaoNFeAutorizacao == VersaoServico.ve310)
            {
                return(new NfeAutorizacao3(url, certificado, cfg.TimeOut));
            }

            return(new NfeAutorizacao(url, certificado, cfg.TimeOut));
        }
Esempio n. 5
0
        public void DeveUrlBaEstarCorretaParaNFeAutorizacaoVersao4()
        {
            var url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, VersaoServico.ve400, Estado.BA,
                                                  TipoAmbiente.Producao, ModeloDocumento.NFe, TipoEmissao.teNormal);

            Assert.Equal("https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx", url);
        }
Esempio n. 6
0
        /// <summary>
        /// Cria o cliente <see cref="SoapHttpClientProtocol"/> para o serviço de Autorização
        /// </summary>
        /// <param name="cfg">Configuração do serviço</param>
        /// <param name="certificado">Certificado</param>
        /// <returns></returns>
        public static INfeServicoAutorizacao CriaWsdlAutorizacao(ConfiguracaoServico cfg, X509Certificate2 certificado, bool compactarMensagem)
        {
            string url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, cfg);

            if (cfg.UsaSvanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.UsaSvcanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVCAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.VersaoNFeAutorizacao == VersaoServico.Versao400)
            {
                return(new NFeAutorizacao4(url, certificado, cfg.TimeOut, compactarMensagem, ConverteVersaoLayout(cfg.VersaoNFeAutorizacao), cfg.cUF));
            }

            if (cfg.cUF == Estado.PR & cfg.VersaoNFeAutorizacao == VersaoServico.Versao310)
            {
                return(new NfeAutorizacao3(url, certificado, cfg.TimeOut));
            }

            return(new NfeAutorizacao(url, certificado, cfg.TimeOut));
        }
Esempio n. 7
0
 /// <summary>
 /// Retorna verdadeiro para as UFs que utilizam SVC-AN, caso o tipo de emissão seja SVC-AN e o documento seja NF-e
 /// </summary>
 /// <param name="cfgServico"></param>
 /// <returns></returns>
 public static bool UsaSvcanNFe4(this ConfiguracaoServico cfgServico, VersaoServico versaoServico)
 {
     return(Enderecador.EstadosQueUsamSvcAnParaNfe().Contains(cfgServico.cUF) &&
            cfgServico.tpEmis == TipoEmissao.teSVCAN &&
            cfgServico.ModeloDocumento == ModeloDocumento.NFe &&
            versaoServico == VersaoServico.ve400
            );
 }
        private INfeServicoAutorizacao CriarServicoAutorizacao(ServicoNFe servico, TipoRecepcaoEvento tipoRecepcaoEvento)
        {
            var url = Enderecador.ObterUrlServico(servico, tipoRecepcaoEvento, _cFgServico);

            if (servico != ServicoNFe.NFeAutorizacao)
            {
                throw new Exception(
                          $"O serviço {servico} não pode ser criado no método {MethodBase.GetCurrentMethod().Name}!");
            }
            if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
            {
                return(new NfeAutorizacao3(url, _certificado, _cFgServico.TimeOut));
            }
            return(new NfeAutorizacao(url, _certificado, _cFgServico.TimeOut));
        }
        private INfeServicoAutorizacao CriarServicoAutorizacao(ServicoNFe servico)
        {
            var url = Enderecador.ObterUrlServico(servico, _cFgServico);

            if (servico != ServicoNFe.NFeAutorizacao)
            {
                throw new Exception(
                          string.Format("O serviço {0} não pode ser criado no método {1}!", servico,
                                        MethodBase.GetCurrentMethod().Name));
            }
            if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
            {
                return(new NfeAutorizacao3(url, _certificado, _cFgServico.TimeOut));
            }
            return(new NfeAutorizacao(url, _certificado, _cFgServico.TimeOut));
        }
        public SvcAnData()
        {
            var tiposAmbiente       = Enum.GetValues(typeof(TipoAmbiente)).Cast <TipoAmbiente>().ToList();
            var servicosAutorizacao = new[] { ServicoNFe.NFeAutorizacao, ServicoNFe.NFeRetAutorizacao };

            foreach (var tipoAmbiente in tiposAmbiente)
            {
                foreach (var estado in Enderecador.EstadosQueUsamSvcAnParaNfe())
                {
                    foreach (var servico in servicosAutorizacao)
                    {
                        Add(estado, tipoAmbiente, servico);
                    }
                }
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Cria o cliente <see cref="SoapHttpClientProtocol"/> para o serviço de Autorização
        /// </summary>
        /// <param name="cfg">Configuração do serviço</param>
        /// <param name="certificado">Certificado</param>
        /// <returns></returns>
        public static INfeServicoAutorizacao CriaWsdlAutorizacao(ConfiguracaoServico cfg, X509Certificate2 certificado, bool compactarMensagem)
        {
            var url = Enderecador.ObterUrlServico(ServicoNFe.NFeAutorizacao, cfg);

            if (cfg.UsaSvanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.UsaSvcanNFe4(cfg.VersaoNFeAutorizacao))
            {
                return(new NFeAutorizacao4SVCAN(url, certificado, cfg.TimeOut));
            }

            if (cfg.VersaoNFeAutorizacao == VersaoServico.ve400)
            {
                DFeSoapConfig soapConfig = new DFeSoapConfig
                {
                    DFeCorpo     = new DFeCorpo("http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4", new NfeTagCorpo(cfg.cUF.GetParametroDeEntradaWsdl(compactarMensagem))),
                    DFeCabecalho = new DFeCabecalho(cfg.cUF, ConverteVersaoLayout(cfg.VersaoNFeAutorizacao), new TagCabecalhoVazia(), "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4"),
                    Metodo       = compactarMensagem ? "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4/nfeAutorizacaoLoteZIP"
                        : "http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4/nfeAutorizacaoLote",
                    Url         = url,
                    Certificado = certificado,
                    TimeOut     = cfg.TimeOut
                };
                return(new NFeAutorizacao4(soapConfig));
            }

            if (cfg.cUF == Estado.PR & cfg.VersaoNFeAutorizacao == VersaoServico.ve310)
            {
                return(new NfeAutorizacao3(url, certificado, cfg.TimeOut));
            }

            return(new NfeAutorizacao(url, certificado, cfg.TimeOut));
        }
Esempio n. 12
0
        private INfeServico CriarServico(ServicoNFe servico)
        {
            var url = Enderecador.ObterUrlServico(servico, _cFgServico);

            switch (servico)
            {
            case ServicoNFe.NfeStatusServico:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeStatusServico3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeStatusServico(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeStatusServico2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaProtocolo:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310)
                {
                    return(new NfeConsulta3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeConsulta(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeConsulta2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRecepcao:
                return(new NfeRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRetRecepcao:
                return(new NfeRetRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NFeAutorizacao:
                throw new Exception(string.Format("O serviço {0} não pode ser criado no método {1}!", servico,
                                                  MethodBase.GetCurrentMethod().Name));

            case ServicoNFe.NFeRetAutorizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
                {
                    return(new NfeRetAutorizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeRetAutorizacao(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeInutilizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeInutilizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeInutilizacao(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeInutilizacao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.RecepcaoEventoCancelmento:
            case ServicoNFe.RecepcaoEventoCartaCorrecao:
            case ServicoNFe.RecepcaoEventoManifestacaoDestinatario:
                return(new RecepcaoEvento(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.RecepcaoEventoEpec:
                return(new RecepcaoEPEC(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaCadastro:
                switch (_cFgServico.cUF)
                {
                case Estado.CE:
                    return(new Wsdl.ConsultaCadastro.CE.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));
                }
                return(new Wsdl.ConsultaCadastro.DEMAIS_UFs.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeDownloadNF:
                return(new NfeDownloadNF(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfceAdministracaoCSC:
                return(new NfceCsc(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NFeDistribuicaoDFe:
                return(new NfeDistDFeInteresse(url, _certificado, _cFgServico.TimeOut));
            }

            return(null);
        }
Esempio n. 13
0
        public static INfeServico CriaWsdlOutros(
            ServicoNFe servico,
            ConfiguracaoServico cfg,
            X509Certificate2 certificado)
        {
            var url = Enderecador.ObterUrlServico(servico, cfg);

            switch (servico)
            {
            case ServicoNFe.NfeStatusServico:
                if (cfg.cUF == Estado.PR & cfg.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeStatusServico3(url, certificado, cfg.TimeOut));
                }
                if (cfg.cUF == Estado.BA & cfg.VersaoNfeStatusServico == VersaoServico.ve310 &
                    cfg.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeStatusServico(url, certificado, cfg.TimeOut));
                }

                if (cfg.IsSvanNFe4())
                {
                    return(new NfeStatusServico4NFeSVAN(url, certificado, cfg.TimeOut));
                }

                if (cfg.VersaoNfeStatusServico == VersaoServico.ve400)
                {
                    return(new NfeStatusServico4(url, certificado, cfg.TimeOut));
                }

                return(new NfeStatusServico2(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfeConsultaProtocolo:

                if (cfg.IsSvanNFe4())
                {
                    return(new NfeConsulta4SVAN(url, certificado, cfg.TimeOut));
                }

                if (cfg.VersaoNfeConsultaProtocolo == VersaoServico.ve400)
                {
                    return(new NfeConsulta4(url, certificado, cfg.TimeOut));
                }

                if (cfg.cUF == Estado.PR & cfg.VersaoNfeConsultaProtocolo == VersaoServico.ve310)
                {
                    return(new NfeConsulta3(url, certificado, cfg.TimeOut));
                }
                if (cfg.cUF == Estado.BA & cfg.VersaoNfeConsultaProtocolo == VersaoServico.ve310 &
                    cfg.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeConsulta(url, certificado, cfg.TimeOut));
                }
                return(new NfeConsulta2(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfeRecepcao:
                return(new NfeRecepcao2(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfeRetRecepcao:
                return(new NfeRetRecepcao2(url, certificado, cfg.TimeOut));

            case ServicoNFe.NFeAutorizacao:
                throw new Exception(string.Format("O serviço {0} não pode ser criado no método {1}!", servico,
                                                  MethodBase.GetCurrentMethod().Name));

            case ServicoNFe.NFeRetAutorizacao:
                if (cfg.IsSvanNFe4())
                {
                    return(new NfeRetAutorizacao4SVAN(url, certificado, cfg.TimeOut));
                }

                if (cfg.VersaoNFeRetAutorizacao == VersaoServico.ve400)
                {
                    return(new NfeRetAutorizacao4(url, certificado, cfg.TimeOut));
                }

                if (cfg.cUF == Estado.PR & cfg.VersaoNFeAutorizacao == VersaoServico.ve310)
                {
                    return(new NfeRetAutorizacao3(url, certificado, cfg.TimeOut));
                }
                return(new NfeRetAutorizacao(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfeInutilizacao:

                if (cfg.IsSvanNFe4())
                {
                    return(new NFeInutilizacao4SVAN(url, certificado, cfg.TimeOut));
                }

                if (cfg.VersaoNfeStatusServico == VersaoServico.ve400)
                {
                    return(new NFeInutilizacao4(url, certificado, cfg.TimeOut));
                }

                if (cfg.cUF == Estado.PR & cfg.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeInutilizacao3(url, certificado, cfg.TimeOut));
                }
                if (cfg.cUF == Estado.BA & cfg.VersaoNfeStatusServico == VersaoServico.ve310 &
                    cfg.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeInutilizacao(url, certificado, cfg.TimeOut));
                }

                return(new NfeInutilizacao2(url, certificado, cfg.TimeOut));

            case ServicoNFe.RecepcaoEventoCancelmento:
            case ServicoNFe.RecepcaoEventoCartaCorrecao:
                if (cfg.IsSvanNFe4())
                {
                    return(new RecepcaoEvento4SVAN(url, certificado, cfg.TimeOut));
                }

                if (cfg.VersaoRecepcaoEventoCceCancelamento == VersaoServico.ve400)
                {
                    return(new RecepcaoEvento4(url, certificado, cfg.TimeOut));
                }

                return(new RecepcaoEvento(url, certificado, cfg.TimeOut));

            case ServicoNFe.RecepcaoEventoManifestacaoDestinatario:
            {
                if (cfg.VersaoRecepcaoEventoManifestacaoDestinatario == VersaoServico.ve400)
                {
                    return(new RecepcaoEvento4AN(url, certificado, cfg.TimeOut));
                }

                return(new RecepcaoEvento(url, certificado, cfg.TimeOut));
            }

            case ServicoNFe.RecepcaoEventoEpec:
                return(new RecepcaoEPEC(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfeConsultaCadastro:
                switch (cfg.cUF)
                {
                case Estado.CE:
                    return(new Wsdl.ConsultaCadastro.CE.CadConsultaCadastro2(url, certificado,
                                                                             cfg.TimeOut));
                }


                if (cfg.VersaoNfeConsultaCadastro == VersaoServico.ve400)
                {
                    return(new Wsdl.ConsultaCadastro.DEMAIS_UFs.CadConsultaCadastro4(url, certificado, cfg.TimeOut));
                }

                return(new Wsdl.ConsultaCadastro.DEMAIS_UFs.CadConsultaCadastro2(url, certificado,
                                                                                 cfg.TimeOut));

            case ServicoNFe.NfeDownloadNF:
                return(new NfeDownloadNF(url, certificado, cfg.TimeOut));

            case ServicoNFe.NfceAdministracaoCSC:
                return(new NfceCsc(url, certificado, cfg.TimeOut));

            case ServicoNFe.NFeDistribuicaoDFe:
                return(new NfeDistDFeInteresse(url, certificado, cfg.TimeOut));
            }

            return(null);
        }
        private INfeServico CriarServico(ServicoNFe servico, TipoRecepcaoEvento tipoRecepcaoEvento)
        {
            var url = Enderecador.ObterUrlServico(servico, tipoRecepcaoEvento, _cFgServico);

            switch (servico)
            {
            case ServicoNFe.NfeStatusServico:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeStatusServico3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeStatusServico(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeStatusServico2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaProtocolo:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310)
                {
                    return(new NfeConsulta3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeConsulta(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeConsulta2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRecepcao:
                return(new NfeRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRetRecepcao:
                return(new NfeRetRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NFeAutorizacao:
                throw new Exception($"O serviço {servico} não pode ser criado no método {MethodBase.GetCurrentMethod().Name}!");

            case ServicoNFe.NFeRetAutorizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
                {
                    return(new NfeRetAutorizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeRetAutorizacao(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeInutilizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeInutilizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeInutilizacao(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeInutilizacao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.RecepcaoEvento:
                if (_cFgServico.cUF == Estado.SP & _cFgServico.VersaoRecepcaoEvento == VersaoServico.ve310 &
                    _cFgServico.ModeloDocumento == ModeloDocumento.NFCe & tipoRecepcaoEvento == TipoRecepcaoEvento.Epec)
                {
                    return(new RecepcaoEPEC(url, _certificado, _cFgServico.TimeOut));
                }
                return(new RecepcaoEvento(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaCadastro:
                switch (_cFgServico.cUF)
                {
                case Estado.CE:
                    return(new Wsdl.ConsultaCadastro.CE.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));
                }
                return(new Wsdl.ConsultaCadastro.DEMAIS_UFs.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeDownloadNF:
                return(new NfeDownloadNF(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfceAdministracaoCSC:
                return(new NfceCsc(url, _certificado, _cFgServico.TimeOut));
            }

            return(null);
        }
Esempio n. 15
0
 /// <summary>
 /// Retorna verdadeiro para as UFs que utilizam a SVAN - Sefaz Virtual do Ambiente Nacional, para serviços com versão 4.0
 /// </summary>
 /// <returns></returns>
 public static bool UsaSvanNFe4(this ConfiguracaoServico cfgServico, VersaoServico versaoServico)
 {
     return(Enderecador.EstadosQueUsamSvanParaNfe().Contains(cfgServico.cUF) &&
            versaoServico == VersaoServico.ve400 &&
            cfgServico.ModeloDocumento == ModeloDocumento.NFe);
 }
        public void DeveUfSvcRsTerServicoDeAutorizacaoParaNFe4(Estado uf, TipoAmbiente tipoAmbiente, ServicoNFe servicoAutorizacao)
        {
            var lista = Enderecador.ObterEnderecoServicosMaisRecentes(VersaoServico.Versao400, uf, tipoAmbiente, ModeloDocumento.NFe, TipoEmissao.teSVCRS);

            Assert.Equal(1, lista.Count(n => n.ServicoNFe == servicoAutorizacao));
        }
Esempio n. 17
0
        private INfeServico CriarServico(ServicoNFe servico, TipoRecepcaoEvento tipoRecepcaoEvento)
        {
            var url = Enderecador.ObterUrlServico(servico, tipoRecepcaoEvento, _cFgServico);

            switch (servico)
            {
            case ServicoNFe.NfeStatusServico:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeStatusServico3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeStatusServico(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeStatusServico2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaProtocolo:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310)
                {
                    return(new NfeConsulta3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeConsultaProtocolo == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeConsulta(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeConsulta2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRecepcao:
                return(new NfeRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeRetRecepcao:
                return(new NfeRetRecepcao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NFeAutorizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
                {
                    return(new NfeAutorizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeAutorizacao(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NFeRetAutorizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNFeAutorizacao == VersaoServico.ve310)
                {
                    return(new NfeRetAutorizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeRetAutorizacao(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeInutilizacao:
                if (_cFgServico.cUF == Estado.PR & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310)
                {
                    return(new NfeInutilizacao3(url, _certificado, _cFgServico.TimeOut));
                }
                if (_cFgServico.cUF == Estado.BA & _cFgServico.VersaoNfeStatusServico == VersaoServico.ve310 & _cFgServico.ModeloDocumento == ModeloDocumento.NFe)
                {
                    return(new NfeInutilizacao(url, _certificado, _cFgServico.TimeOut));
                }
                return(new NfeInutilizacao2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.RecepcaoEvento:
                if (_cFgServico.cUF == Estado.SP & _cFgServico.VersaoRecepcaoEvento == VersaoServico.ve310 &
                    _cFgServico.ModeloDocumento == ModeloDocumento.NFCe & tipoRecepcaoEvento == TipoRecepcaoEvento.Epec)
                {
                    return(new RecepcaoEPEC(url, _certificado, _cFgServico.TimeOut));
                }
                return(new RecepcaoEvento(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeConsultaCadastro:
                switch (_cFgServico.cUF)
                {
                case Estado.CE:
                    return(new Wsdl.ConsultaCadastro.CE.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));
                }
                return(new Wsdl.ConsultaCadastro.DEMAIS_UFs.CadConsultaCadastro2(url, _certificado, _cFgServico.TimeOut));

            case ServicoNFe.NfeDownloadNF:
                return(new NfeDownloadNF(url, _certificado, _cFgServico.TimeOut));
            }

            return(null);
        }