Beispiel #1
0
        /// <summary>
        /// Retorna a url do serviço de acordo com os dados passados.
        /// </summary>
        /// <param name="versao">Versão da CTe</param>
        /// <param name="uf">UF do serviço</param>
        /// <param name="tipo">Tipo de serviço</param>
        /// <param name="tipoEmissao"></param>
        /// <param name="ambiente">Ambiente</param>
        /// <returns></returns>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public static string GetServiceAndress(CTeVersao versao, DFeSiglaUF uf, TipoServicoCTe tipo, DFeTipoEmissao tipoEmissao, DFeTipoAmbiente ambiente)
        {
            switch (tipo)
            {
            case TipoServicoCTe.DistribuicaoDFe:
                switch (ambiente)
                {
                case DFeTipoAmbiente.Homologacao: return("");

                default: return("");
                }

            default:
                var service = Servicos[versao, tipoEmissao];
                Guard.Against <ACBrException>(service == null, "Versão ou tipo de emissão não encontrada no arquivo de serviços.");
                return(service[ambiente, uf]?[tipo]);
            }
        }
        /// <summary>
        /// Consulta o cadastro do contribuinte.
        /// </summary>
        /// <param name="uf"></param>
        /// <param name="ufConsulta"></param>
        /// <param name="cpfCNPJ"></param>
        /// <param name="IE"></param>
        /// <returns></returns>
        public DFeConsultaCadastroResposta ConsultaCadastro(DFeSiglaUF uf, DFeCodUF ufConsulta, string cpfCNPJ, string IE)
        {
            Guard.Against <ArgumentNullException>(!Enum.IsDefined(typeof(DFeCodUF), uf), nameof(uf));
            Guard.Against <ArgumentNullException>(cpfCNPJ.IsEmpty() && IE.IsEmpty(), nameof(IE));

            lock (serviceLock)
            {
                var request = new StringBuilder();
                request.Append("<ConsCad xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">");
                request.Append("<infCons>");
                request.Append("<xServ>CONS-CAD</xServ>");
                request.Append($"<UF>{uf.GetDFeValue()}</UF>");
                if (cpfCNPJ.IsEmpty())
                {
                    request.Append($"<IE>{IE}</IE>");
                }
                else
                {
                    request.Append(cpfCNPJ.IsCNPJ() ? $"<CNPJ>{cpfCNPJ}</CNPJ>" : $"<CPF>{cpfCNPJ}</CPF>");
                }
                request.Append("</infCons>");
                request.Append("</ConsCad>");

                var dadosMsg = request.ToString();
                ValidateMessage(dadosMsg);

                var doc = new XmlDocument();
                doc.LoadXml(dadosMsg);

                var cabecalho = new DFeWsCabecalho
                {
                    CUf         = ufConsulta.GetDFeValue().ToInt32(),
                    VersaoDados = "2.00"
                };
                var inValue = new ConsultaCadastroRequest(cabecalho, doc);
                var retVal  = Channel.ConsultaCadastro(inValue);

                var retorno =
                    new DFeConsultaCadastroResposta(dadosMsg, retVal.Result.OuterXml, EnvelopeSoap, RetornoWS);
                return(retorno);
            }
        }
Beispiel #3
0
 public DFeServiceEnvironment <TTIpo> this[DFeTipoAmbiente ambiente, DFeSiglaUF uf]
 {
     get { return(Ambientes?.SingleOrDefault(x => x.Ambiente == ambiente && x.UF == uf)); }
 }
Beispiel #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="uf"></param>
 /// <returns></returns>
 public static DFeCodUF ToCodeUf(this DFeSiglaUF uf)
 {
     return((DFeCodUF)Enum.Parse(typeof(DFeCodUF), uf.ToString()));
 }