public override void Iniciar()
        {
            obs                       = "";
            SpdNFeX.CNPJ              = Funcoes.LimpaStr(Empresa.Cnpj);
            SpdNFeX.UF                = Empresa.UF;;
            SpdNFeX.NomeCertificado   = Empresa.Certificado;
            SpdNFeX.VersaoManual      = "3.0";
            SpdNFeX.FraseContingencia = "DANFE em Contingencia";
            SpdNFeX.FraseHomologacao  = "SEM VALOR FISCAL";

            string diretorioAplicacao = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

            SpdNFeX.ModeloRetrato  = diretorioAplicacao + @"\Templates\vm30\Danfe\Retrato.rtm";
            SpdNFeX.ModeloPaisagem = diretorioAplicacao + @"\Templates\vm30\Danfe\Paisagem.rtm";

            SpdNFeX.LogotipoEmitente = @"Templates\Logo.bmp";
        }
        private void DadosDestinatario()
        {
            string cnpjcpf = Funcoes.LimpaStr(Nota.PessoaCNPJCPF);

            if (Nota.PessoaCidadeIBGE == "9999999")
            {
                SpdNFeDataSetX.SetCampo(("CNPJ_E02="));                      // CNPJ do Destinatário
                SpdNFeDataSetX.SetCampo(("IE_E17="));                        // Inscrição Estadual do Destinatário
                SpdNFeDataSetX.SetCampo(("xMun_E11=EXTERIOR"));              // Nome da Cidade do Destinatário
                SpdNFeDataSetX.SetCampo(("UF_E12=EX"));                      // Sigla do Estado do Destinatário
                SpdNFeDataSetX.SetCampo(("cPais_E14=" + Nota.Cliente.PaisIBGE));
                SpdNFeDataSetX.SetCampo(("xPais_E15=" + Nota.Cliente.Pais)); // Nome do País do Destinatário
            }
            else
            {
                SpdNFeDataSetX.SetCampo(("xMun_E11=" + Nota.PessoaCidade)); // Nome da Cidade do Destinatário
                SpdNFeDataSetX.SetCampo(("UF_E12=" + Nota.PessoaUF));       // Sigla do Estado do Destinatário
                SpdNFeDataSetX.SetCampo(("cPais_E14=1058"));                // Código do Pais do Destinatário (Tabela do BACEN)
                SpdNFeDataSetX.SetCampo(("xPais_E15=BRASIL"));              // Nome do País do Destinatário

                if (cnpjcpf.Length > 11)
                {
                    SpdNFeDataSetX.SetCampo(("CNPJ_E02=" + cnpjcpf));                           // CNPJ do Destinatário
                    SpdNFeDataSetX.SetCampo(("IE_E17=" + Funcoes.LimpaStr(Nota.PessoaInscRG))); // Inscrição Estadual do Destinatário
                }
                else
                {
                    SpdNFeDataSetX.SetCampo(("CPF_E03=" + cnpjcpf));                                                                     // CPF do Destinatário
                    SpdNFeDataSetX.SetCampo(("CNPJ_E02=null"));                                                                          // CNPJ do Destinatário
                    SpdNFeDataSetX.SetCampo(("IE_E17=" + (String.IsNullOrEmpty(Nota.PessoaInscRG) == true ? null : Nota.PessoaInscRG))); // Inscrição Estadual do Destinatário
                }
            }
            SpdNFeDataSetX.SetCampo(("xNome_E04=" + Nota.PessoaNome));    // Razao social ou Nome do Destinatário
            SpdNFeDataSetX.SetCampo(("xLgr_E06=" + Nota.PessoaEndereco)); // Logradouro do Destinatario
            SpdNFeDataSetX.SetCampo(("nro_E07=" + Nota.PessoaNumero));    // Numero do Logradouro do Destinatario
            if (!String.IsNullOrEmpty(Nota.Cliente.Complemento))
            {
                SpdNFeDataSetX.SetCampo(("xCpl_E08=" + Nota.Cliente.Complemento));
            }
            SpdNFeDataSetX.SetCampo(("xBairro_E09=" + Nota.PessoaBairro));                  // Bairro do Destinatario
            SpdNFeDataSetX.SetCampo(("cMun_E10=" + Nota.PessoaCidadeIBGE));                 // Código do Município do Destinatário (Tabela IBGE)
            SpdNFeDataSetX.SetCampo(("CEP_E13=" + Funcoes.LimpaStr(Nota.PessoaCEP)));       // Cep do Destinatário
            SpdNFeDataSetX.SetCampo(("fone_E16=" + Funcoes.LimpaStr(Nota.PessoaTelefone))); // Fone do Destinatário
        }
        public override string InutilizarNFe(string _ano, string _serie, string _numeroInicio, string _numeroFim, string _justificativa, string _cnpj = null)
        {
            List <string> retorno  = new List <string>();
            string        aXmlNota = "";

            aXmlNota = SpdNFeX.InutilizarNF("", _ano, Funcoes.LimpaStr(Empresa.Cnpj), "55", _serie, _numeroInicio, _numeroFim, _justificativa);

            XDocument documentoXml = XDocument.Load(new StreamReader(new MemoryStream(ASCIIEncoding.UTF8.GetBytes(aXmlNota))));
            var       noh          = (from c in documentoXml.Root.Elements() where c.Name.LocalName == "infInut" select c).Single <XElement>();

            string valorRetorno = (from c in noh.Elements() where c.Name.LocalName == "cStat" select c).Single <XElement>().Value;

            if (valorRetorno == "102")
            {
                return("");
            }
            else
            {
                string motivoErro = (from c in noh.Elements() where c.Name.LocalName == "xMotivo" select c).Single <XElement>().Value;
                return(motivoErro);
            }
        }
        public void VisualizarDANFE()
        {
            if (Nota.Empresa.ComponenteDfe == 0)
            {
                string aXmlNota = Funcoes.AbrirArquivo(SpdNFeX.DiretorioXmlDestinatario + Nota.ChaveNota + "-nfe.xml");
                SpdNFeX.VisualizarDanfe("0000", aXmlNota, "Templates\\vm50a\\Danfe\\Retrato.rtm");
                ExportarDanfe(aXmlNota, Nota.ChaveNota);
            }
            else
            {
                NFeFacade facade = new NFeFacade();

                if (Nota.ModeloDocto == 65)
                {
                    string aXmlNota = Funcoes.AbrirArquivo(DiretorioXML + "\\" + Nota.ChaveNota + "-nfe.xml");
                    facade.VisualizarDanfeNFCe(aXmlNota, _configuracoes.ConfiguracaoDanfeNfce, _configuracoes.ConfiguracaoCsc.CIdToken, _configuracoes.ConfiguracaoCsc.Csc);
                }
                else
                {
                    string aXmlNota = Funcoes.AbrirArquivo(DiretorioXML + "\\" + Nota.ChaveNota + "-nfe.xml");
                    facade.VisualizarDanfe(aXmlNota);
                }
            }
        }
        /// <summary>
        /// Configura o HttpClient para comunicação com o Manager e-Doc
        /// </summary>
        /// <param name="client">HttpClient a ser configurado</param>
        /// <param name="metodo">Método que será utilizado so Manager e-Doc (Consulta, Envia ...)</param>
        /// <param name="parms">Lista onde será adicionado os parâmetros basicos para comunicação</param>
        /// <param name="uri">Uri com o endereço e porta do Manager e-Doc</param>
        /// <param name="conteudo">Dados dos parâmetros a ser adicionado na URL</param>
        private void IniciaHttpClientManagerEdoc(HttpClient client, string metodo, Dictionary <string, string> parms, out string uri, out string conteudo)
        {
            client.DefaultRequestHeaders.Accept.Add(
                new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                       Convert.ToBase64String(
                                                                                           System.Text.ASCIIEncoding.ASCII.GetBytes(
                                                                                               string.Format("{0}:{1}", ConfigManager.usuario, ConfigManager.senha))));
            parms["grupo"]       = ConfigManager.grupo;
            parms["cnpj"]        = Funcoes.LimpaStr(ConfigManager.cnpj);
            parms["ignorarModo"] = "True";
            uri = ConfigManager.host;
            if (!uri.Contains("http://"))
            {
                uri = "http://" + ConfigManager.host;
            }
            if (!uri.Substring(uri.Length - 1, 1).Contains('/'))
            {
                uri += "/";
            }
            uri      = uri + "ManagerAPIWeb/nfce/" + metodo + "?";
            conteudo = string.Join("&", parms.Select(x => x.Key + "=" + x.Value).ToArray());
        }