コード例 #1
0
        /// <summary>
        /// Efetua a validação de qualquer XML, NFE, Cancelamento, Inutilização, etc..., e retorna se está ok ou não
        /// </summary>
        /// <param name="Arquivo">Nome do arquivo XML a ser validado e assinado</param>
        /// <param name="PastaValidar">Nome da pasta onde fica os arquivos a serem validados</param>
        /// <param name="PastaXMLErro">Nome da pasta onde é para gravar os XML´s validados que apresentaram erro.</param>
        /// <param name="PastaXMLRetorno">Nome da pasta de retorno onde será gravado o XML com o status da validação</param>
        /// <param name="Certificado">Certificado digital a ser utilizado na validação</param>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>28/05/2009</date>
        public void ValidarAssinarXML(string Arquivo, Core.Empresa empresa)
        {
            //Assinar o XML se tiver tag para assinar
            AssinaturaDigital oAD = new AssinaturaDigital();

            oAD.Assinar(Arquivo, empresa, empresa.CodigoMunicipio);
        }
コード例 #2
0
        /// <summary>
        /// Encriptar a tag Assinatura quando for município de Blumenau - SC
        /// </summary>
        private void EncryptAssinatura(Core.Empresa empresa)
        {
            string arquivoXML = NomeArquivoXML;

            XmlDocument doc = new XmlDocument();

            doc.Load(arquivoXML);

            XmlNodeList pedidoCancelamentoNFeList = doc.GetElementsByTagName("PedidoCancelamentoNFe");

            foreach (XmlNode pedidoCancelamentoNFeNode in pedidoCancelamentoNFeList)
            {
                XmlElement pedidoCancelamentoNFeElemento = (XmlElement)pedidoCancelamentoNFeNode;

                XmlNodeList detalheList = doc.GetElementsByTagName("Detalhe");

                foreach (XmlNode detalheNode in detalheList)
                {
                    XmlElement detalheElement = (XmlElement)detalheNode;


                    if (detalheElement.GetElementsByTagName("AssinaturaCancelamento").Count != 0)
                    {
                        //Encryptar a tag Assinatura
                        detalheElement.GetElementsByTagName("AssinaturaCancelamento")[0].InnerText = Criptografia.SignWithRSASHA1(empresa.X509Certificado,
                                                                                                                                  detalheElement.GetElementsByTagName("AssinaturaCancelamento")[0].InnerText);
                    }
                }
            }

            //Salvar o XML com as alterações efetuadas
            doc.Save(arquivoXML);
        }
コード例 #3
0
        /// <summary>
        /// Encriptar a tag Assinatura quando for município de Blumenau - SC
        /// </summary>
        private void EncryptAssinatura(Core.Empresa empresa)
        {
            string arquivoXML = NomeArquivoXML;

            XmlDocument doc = new XmlDocument();

            doc.Load(arquivoXML);

            XmlNodeList pedidoEnvioLoteRPSList = doc.GetElementsByTagName("PedidoEnvioLoteRPS");

            foreach (XmlNode pedidoEnvioLoteRPSNode in pedidoEnvioLoteRPSList)
            {
                XmlElement pedidoEnvioLoteRPSElemento = (XmlElement)pedidoEnvioLoteRPSNode;

                XmlNodeList rpsList = doc.GetElementsByTagName("RPS");

                foreach (XmlNode rpsNode in rpsList)
                {
                    XmlElement rpsElement = (XmlElement)rpsNode;


                    if (rpsElement.GetElementsByTagName("Assinatura").Count != 0)
                    {
                        //Encryptar a tag Assinatura
                        rpsElement.GetElementsByTagName("Assinatura")[0].InnerText = Criptografia.SignWithRSASHA1(empresa.X509Certificado,
                                                                                                                  rpsElement.GetElementsByTagName("Assinatura")[0].InnerText);
                    }
                }
            }

            //Salvar o XML com as alterações efetuadas
            doc.Save(arquivoXML);
        }
コード例 #4
0
        /// <summary>
        /// Fazer a leitura do conteúdo do XML de cancelamento de NFS-e e disponibilizar conteúdo em um objeto para analise
        /// </summary>
        /// <param name="arquivoXML">Arquivo XML que é para efetuar a leitura</param>
        private void PedCanNfse(Core.Empresa empresa, string arquivoXML)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(arquivoXML);

            XmlNodeList infCancList = doc.GetElementsByTagName("CancelarNfseEnvio");

            foreach (XmlNode infCancNode in infCancList)
            {
                XmlElement infCancElemento = (XmlElement)infCancNode;
            }
        }
コード例 #5
0
        /// <summary>
        /// Fazer a leitura do conteúdo do XML de lote rps e disponibiliza o conteúdo em um objeto para analise
        /// </summary>
        /// <param name="arquivoXML">Arquivo XML que é para efetuar a leitura</param>
        private void EnvLoteRps(Core.Empresa emp, string arquivoXML)
        {
            //int emp = Functions.FindEmpresaByThread();

            XmlDocument doc = new XmlDocument();

            doc.Load(arquivoXML);

            XmlNodeList infEnvioList = doc.GetElementsByTagName("EnviarLoteRpsEnvio");

            foreach (XmlNode infEnvioNode in infEnvioList)
            {
                XmlElement infEnvioElemento = (XmlElement)infEnvioNode;
            }
        }
コード例 #6
0
        /// <summary>
        /// Assina o XML sobrepondo-o
        /// </summary>
        /// <param name="arqXMLAssinar">Nome do arquivo XML a ser assinado</param>
        /// <param name="x509Certificado">Certificado a ser utilizado na assinatura</param>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>16/04/2009</date>
        public void Assinar(string arqXMLAssinar, Core.Empresa emp, int UFCod)
        {
            TipoArquivoXML v = new TipoArquivoXML(arqXMLAssinar, UFCod);

            if (!String.IsNullOrEmpty(v.TagAssinatura))
            {
                this.Assinar(arqXMLAssinar, v.TagAssinatura, v.TagAtributoId, emp.X509Certificado, emp);
            }

            //Assinar o lote
            if (!String.IsNullOrEmpty(v.TagLoteAssinatura))
            {
                this.Assinar(arqXMLAssinar, v.TagLoteAssinatura, v.TagLoteAtributoId, emp.X509Certificado, emp);
            }
        }
コード例 #7
0
ファイル: EnvioCompleto.cs プロジェクト: xrsantos/NFSe.Net
        public Core.RespostaEnvioNFSe EnviarLoteRps(Core.Empresa empresa, Core.ArquivosEnvio localArquivos)
        {
            try
            {
                var serializar = new Layouts.Serializador();
                var envio      = new NFSE.Net.Envio.Processar();
                var lote       = serializar.LerXml <Layouts.Betha.EnviarLoteRpsEnvio>(localArquivos.SalvarEnvioLoteEm);

                ExecutarConsultas(() =>
                {
                    envio.ProcessaArquivo(empresa, localArquivos.SalvarEnvioLoteEm, localArquivos.SalvarRetornoEnvioLoteEm, Servicos.RecepcionarLoteRps);
                });

                bool erro = false;
                var  respostaEnvioLote = serializar.TryLerXml <Layouts.Betha.EnviarLoteRpsResposta>(localArquivos.SalvarRetornoEnvioLoteEm, out erro);
                while (true)
                {
                    System.Threading.Thread.Sleep(1000);
                    var respostaSituacao = ConsultarSituacaoLote(empresa, respostaEnvioLote, localArquivos);
                    if (respostaSituacao.Items[0] is ListaMensagemRetorno)
                    {
                        if (((ListaMensagemRetorno)respostaSituacao.Items[0]).MensagemRetorno[0].Codigo == "E92")  //Lote ainda em processamento, tentando denovo.
                        {
                            continue;
                        }
                        //else if (((ListaMensagemRetorno)respostaSituacao.Items[0]).MensagemRetorno[0].Codigo == "E10")  //RPS já enviado, passar para o Consulta RPS e verificar se a data de emissão é a mesma
                        //{
                        //    var respostaRps = ConsultarRps(empresa, lote.LoteRps.ListaRps[0].InfRps.IdentificacaoRps, localArquivos);
                        //    var listaErros = new ListaMensagemRetorno() { MensagemRetorno = respostaRps.ListaMensagemRetorno.Length > 0 ? respostaRps.ListaMensagemRetorno : null };
                        //    return MontarResposta(lote, listaErros, null, respostaRps);
                        //}
                        return(MontarResposta(lote, (ListaMensagemRetorno)respostaSituacao.Items[0], null, null));
                    }
                    else
                    {
                        break;
                    }
                }
                var respostaLote = ConsultarLote(empresa, respostaEnvioLote, localArquivos);
                return(MontarResposta(lote, null, respostaLote.ListaNfse, null));
            }
            catch (System.Reflection.TargetInvocationException e)
            {
                throw e.InnerException;
            }
        }
コード例 #8
0
        private void button6_Click(object sender, EventArgs e)
        {
            System.Net.ServicePointManager.Expect100Continue = false;
            Layouts.Betha.EnviarLoteRpsEnvio envio = RetornarRps();
            Core.Empresa empresa = RetornaEmpresa(false);

            var envioCompleto = new Envio.EnvioCompleto();

            var localSalvarArquivo = Core.ArquivosEnvio.GerarCaminhos(envio.LoteRps.Id, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NotaServico"));

            envioCompleto.SalvarLoteRps(envio, localSalvarArquivo);
            var resposta = envioCompleto.EnviarLoteRps(empresa, localSalvarArquivo);

            foreach (var item in resposta)
            {
                MessageBox.Show(item.MensagemErro);
            }
        }
コード例 #9
0
ファイル: Empresa.cs プロジェクト: xrsantos/NFSe.Net
        /// <summary>
        /// Reseta o certificado da empresa e recria o mesmo
        /// </summary>
        /// <param name="index">identificador da empresa</param>
        /// <returns></returns>
        public static X509Certificate2 ResetCertificado(Core.Empresa empresa)
        {
            empresa.X509Certificado.Reset();


            empresa.X509Certificado = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            //Ajustar o certificado digital de String para o tipo X509Certificate2
            X509Store store = new X509Store("MY", StoreLocation.CurrentUser);

            store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
            X509Certificate2Collection collection  = (X509Certificate2Collection)store.Certificates;
            X509Certificate2Collection collection1 = null;

            if (!string.IsNullOrEmpty(empresa.CertificadoThumbPrint))
            {
                collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByThumbprint, empresa.CertificadoThumbPrint, false);
            }
            else
            {
                collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindBySubjectDistinguishedName, empresa.Certificado, false);
            }

            for (int i = 0; i < collection1.Count; i++)
            {
                //Verificar a validade do certificado
                if (DateTime.Compare(DateTime.Now, collection1[i].NotAfter) == -1)
                {
                    empresa.X509Certificado = collection1[i];
                    break;
                }
            }

            //Se não encontrou nenhum certificado com validade correta, vou pegar o primeiro certificado, porem vai travar na hora de tentar enviar a nota fiscal, por conta da validade. Wandrey 06/04/2011
            if (empresa.X509Certificado == null && collection1.Count > 0)
            {
                empresa.X509Certificado = collection1[0];
            }

            return(empresa.X509Certificado);
        }
コード例 #10
0
        private Core.Empresa RetornaEmpresa(bool criptografado)
        {
            var empresa = new Core.Empresa();

            empresa.Nome = "Empresa teste";
            empresa.CNPJ = "03657739000169";
            empresa.InscricaoMunicipal = "24082-6";
            empresa.CertificadoArquivo = @"C:\Users\danimaribeiro\SkyDrive\Infoger\Certificados\INFOGER.pfx";
            if (criptografado)
            {
                empresa.CertificadoSenha = Certificado.Criptografia.criptografaSenha("123456");
            }
            else
            {
                empresa.CertificadoSenha = "123456";
            }

            empresa.tpAmb           = 2;
            empresa.tpEmis          = 1;
            empresa.CodigoMunicipio = 4204202;
            return(empresa);
        }
コード例 #11
0
ファイル: EnvioCompleto.cs プロジェクト: xrsantos/NFSe.Net
        private Layouts.Betha.ConsultarLoteRpsResposta ConsultarLote(Core.Empresa empresa, EnviarLoteRpsResposta protocolo, Core.ArquivosEnvio localArquivos)
        {
            var consultaSituacaoLote = new Layouts.Betha.ConsultarLoteRpsEnvio();

            consultaSituacaoLote.Prestador      = new tcIdentificacaoPrestador();
            consultaSituacaoLote.Prestador.Cnpj = empresa.CNPJ;
            consultaSituacaoLote.Prestador.InscricaoMunicipal = empresa.InscricaoMunicipal;
            consultaSituacaoLote.Protocolo = protocolo.Items[2].ToString();

            var serializar = new Layouts.Serializador();

            serializar.SalvarXml <Layouts.Betha.ConsultarLoteRpsEnvio>(consultaSituacaoLote, localArquivos.SalvarConsultaLoteRpsEnvioEm);

            var envio = new NFSE.Net.Envio.Processar();

            ExecutarConsultas(() =>
            {
                envio.ProcessaArquivo(empresa, localArquivos.SalvarConsultaLoteRpsEnvioEm, localArquivos.SalvarConsultaLoteRpsRespostaEm, Servicos.ConsultarLoteRps);
            });

            return(serializar.LerXml <Layouts.Betha.ConsultarLoteRpsResposta>(localArquivos.SalvarConsultaLoteRpsRespostaEm));
        }
コード例 #12
0
ファイル: EnvioCompleto.cs プロジェクト: xrsantos/NFSe.Net
        private Layouts.Betha.ConsultarNfseRpsResposta ConsultarRps(Core.Empresa empresa, tcIdentificacaoRps rps, Core.ArquivosEnvio localArquivos)
        {
            var consultaRps = new Layouts.Betha.ConsultarNfsePorRpsEnvio();

            consultaRps.Prestador      = new tcIdentificacaoPrestador();
            consultaRps.Prestador.Cnpj = empresa.CNPJ;
            consultaRps.Prestador.InscricaoMunicipal = empresa.InscricaoMunicipal;
            consultaRps.IdentificacaoRps             = rps;

            var serializar = new Layouts.Serializador();

            serializar.SalvarXml <Layouts.Betha.ConsultarNfsePorRpsEnvio>(consultaRps, localArquivos.SalvarConsultaLoteRpsEnvioEm);

            var envio = new NFSE.Net.Envio.Processar();

            ExecutarConsultas(() =>
            {
                envio.ProcessaArquivo(empresa, localArquivos.SalvarConsultaLoteRpsEnvioEm, localArquivos.SalvarConsultaLoteRpsRespostaEm, Servicos.ConsultarNfsePorRps);
            });

            return(serializar.LerXml <Layouts.Betha.ConsultarNfseRpsResposta>(localArquivos.SalvarConsultaLoteRpsRespostaEm));
        }
コード例 #13
0
        private Core.Empresa RetornaEmpresa(bool criptografado)
        {
            var empresa = new Core.Empresa();

            empresa.Nome = "Empresa teste";
            empresa.CNPJ = "10793118000178";
            empresa.InscricaoMunicipal = "10127260010"; //Inscrição Municipal da T2Ti criada em Belo Horizonte apenas para testes
            empresa.CertificadoArquivo = @"13779920_T2TI_TECNOLOGIA_DA_INFORMACAO_LTDA_ME10793118000178.p12";
            if (criptografado)
            {
                empresa.CertificadoSenha = Certificado.Criptografia.criptografaSenha("00");
            }
            else
            {
                empresa.CertificadoSenha = "00";
            }

            empresa.tpAmb           = 2;
            empresa.tpEmis          = 1;
            empresa.CodigoMunicipio = 3106200;
            return(empresa);
        }
コード例 #14
0
ファイル: ConfiguracaoApp.cs プロジェクト: xrsantos/NFSe.Net
        public static WebServiceProxy DefinirWS(Servicos servico, Core.Empresa emp, int cUF, int tpAmb, int tpEmis, PadroesNFSe padraoNFSe)
        {
            WebServiceProxy wsProxy = null;
            string          key     = servico + " " + cUF + " " + tpAmb + " " + tpEmis;

            while (true)
            {
                if (emp.WSProxy.ContainsKey(key))
                {
                    wsProxy = emp.WSProxy[key];
                }
                else
                {
                    //Definir a URI para conexão com o Webservice
                    string Url = ConfiguracaoApp.DefLocalWSDL(cUF, tpAmb, tpEmis, servico);

                    wsProxy = new WebServiceProxy(Url, emp.X509Certificado, padraoNFSe);
                    emp.WSProxy.Add(key, wsProxy);
                }
                break;
            }
            return(wsProxy);
        }
コード例 #15
0
        /// <summary>
        /// O método assina digitalmente o arquivo XML passado por parâmetro e
        /// grava o XML assinado com o mesmo nome, sobreponto o XML informado por parâmetro.
        /// Disponibiliza também uma propriedade com uma string do xml assinado (this.vXmlStringAssinado)
        /// </summary>
        /// <param name="arqXMLAssinar">Nome do arquivo XML a ser assinado</param>
        /// <param name="tagAssinatura">Nome da tag onde é para ficar a assinatura</param>
        /// <param name="tagAtributoId">Nome da tag que tem o atributo ID, tag que vai ser assinada</param>
        /// <param name="x509Cert">Certificado a ser utilizado na assinatura</param>
        /// <param name="empresa">Índice da empresa que está solicitando a assinatura</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 04/06/2008
        /// </remarks>
        private void Assinar(string arqXMLAssinar,
                             string tagAssinatura,
                             string tagAtributoId,
                             X509Certificate2 x509Cert,
                             Core.Empresa empresa)
        {
            StreamReader SR = null;

            try
            {
                //Abrir o arquivo XML a ser assinado e ler o seu conteúdo
                SR = File.OpenText(arqXMLAssinar);
                string xmlString = SR.ReadToEnd();
                SR.Close();
                SR = null;

                // Create a new XML document.
                XmlDocument doc = new XmlDocument();

                // Format the document to ignore white spaces.
                doc.PreserveWhitespace = false;

                // Load the passed XML file using it’s name.
                doc.LoadXml(xmlString);

                if (doc.GetElementsByTagName(tagAssinatura).Count == 0)
                {
                    throw new Exception("A tag de assinatura " + tagAssinatura.Trim() + " não existe no XML. (Código do Erro: 5)");
                }
                else if (doc.GetElementsByTagName(tagAtributoId).Count == 0)
                {
                    throw new Exception("A tag de assinatura " + tagAtributoId.Trim() + " não existe no XML. (Código do Erro: 4)");
                }
                // Existe mais de uma tag a ser assinada
                else
                {
                    XmlDocument XMLDoc;

                    XmlNodeList lists = doc.GetElementsByTagName(tagAssinatura);
                    foreach (XmlNode nodes in lists)
                    {
                        foreach (XmlNode childNodes in nodes.ChildNodes)
                        {
                            if (!childNodes.Name.Equals(tagAtributoId))
                            {
                                continue;
                            }

                            if (childNodes.NextSibling != null && childNodes.NextSibling.Name.Equals("Signature"))
                            {
                                continue;
                            }

                            // Create a reference to be signed
                            Reference reference = new Reference();
                            reference.Uri = "";

                            // pega o uri que deve ser assinada
                            XmlElement childElemen = (XmlElement)childNodes;
                            if (childElemen.GetAttributeNode("Id") != null)
                            {
                                reference.Uri = "#" + childElemen.GetAttributeNode("Id").Value;
                            }
                            else if (childElemen.GetAttributeNode("id") != null)
                            {
                                reference.Uri = "#" + childElemen.GetAttributeNode("id").Value;
                            }

                            XmlDocument documentoNovo = new XmlDocument();
                            documentoNovo.LoadXml(nodes.OuterXml);
                            // Create a SignedXml object.
                            SignedXml signedXml = new SignedXml(documentoNovo);

                            // Add the key to the SignedXml document
                            signedXml.SigningKey = x509Cert.PrivateKey;

                            // Add an enveloped transformation to the reference.
                            XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
                            reference.AddTransform(env);

                            XmlDsigC14NTransform c14 = new XmlDsigC14NTransform();
                            reference.AddTransform(c14);

                            // Add the reference to the SignedXml object.
                            signedXml.AddReference(reference);

                            // Create a new KeyInfo object
                            KeyInfo keyInfo = new KeyInfo();

                            // Load the certificate into a KeyInfoX509Data object
                            // and add it to the KeyInfo object.
                            keyInfo.AddClause(new KeyInfoX509Data(x509Cert));

                            // Add the KeyInfo object to the SignedXml object.
                            signedXml.KeyInfo = keyInfo;
                            signedXml.ComputeSignature();

                            // Get the XML representation of the signature and save
                            // it to an XmlElement object.
                            XmlElement xmlDigitalSignature = signedXml.GetXml();

                            // Gravar o elemento no documento XML
                            nodes.AppendChild(doc.ImportNode(xmlDigitalSignature, true));
                        }
                    }

                    XMLDoc = new XmlDocument();
                    XMLDoc.PreserveWhitespace = false;
                    XMLDoc = doc;

                    // Atualizar a string do XML já assinada
                    string StringXMLAssinado = XMLDoc.OuterXml;

                    // Gravar o XML Assinado no HD
                    StreamWriter SW_2 = File.CreateText(arqXMLAssinar);
                    SW_2.Write(StringXMLAssinado);
                    SW_2.Close();
                }
            }
            catch (System.Security.Cryptography.CryptographicException ex)
            {
                #region #10316

                /*
                 * Solução para o problema do certificado do tipo A3
                 * Marcelo
                 * 29/07/2013
                 */

#if DEBUG
                Debug.WriteLine("O erro CryptographicException foi lançado");
#endif
                x509Cert = Empresa.ResetCertificado(empresa);

                throw new Exception("O certificado deverá ser reiniciado.\r\n Retire o certificado.\r\nAguarde o LED terminar de piscar.\r\n Recoloque o certificado e informe o PIN novamente.\r\n" + ex.ToString());// #12342 concatenar com a mensagem original
                #endregion
            }
            finally
            {
                if (SR != null)
                {
                    SR.Close();
                }
            }
        }
コード例 #16
0
 public DadosPedSitNfseRps(Core.Empresa empresa)
 {
     tpEmis     = empresa.tpEmis;
     tpAmb      = empresa.tpAmb;
     cMunicipio = empresa.CodigoMunicipio;
 }
コード例 #17
0
 public DadosEnvLoteRps(Core.Empresa emp)
 {
     tpEmis     = emp.tpEmis;
     tpAmb      = emp.tpAmb;
     cMunicipio = emp.CodigoMunicipio;
 }
コード例 #18
0
ファイル: EnvioCompleto.cs プロジェクト: xrsantos/NFSe.Net
        public Core.RespostaCancelamentoNfse CancelarNfse(Layouts.Betha.CancelarNfseEnvio envioCancelamento, Core.Empresa empresa, Core.ArquivosEnvio localArquivos)
        {
            try
            {
                ValidarCaminhos(localArquivos);
                var serializar = new Layouts.Serializador();
                serializar.SalvarXml <Layouts.Betha.CancelarNfseEnvio>(envioCancelamento, localArquivos.SalvarCancelarNfseEnvioEm);

                var envio = new NFSE.Net.Envio.Processar();
                ExecutarConsultas(() =>
                {
                    envio.ProcessaArquivo(empresa, localArquivos.SalvarCancelarNfseEnvioEm, localArquivos.SalvarCancelarNfseRespostaEm, Servicos.CancelarNfse);
                });

                bool erro = false;
                var  respostaEnvioLote = serializar.TryLerXml <Layouts.Betha.CancelarNfseReposta>(localArquivos.SalvarCancelarNfseRespostaEm, out erro);
                if (respostaEnvioLote != null)
                {
                    if (respostaEnvioLote.Item is ListaMensagemRetorno)
                    {
                        var retorno = new Core.RespostaCancelamentoNfse();
                        ListaMensagemRetorno mensagensErro = (ListaMensagemRetorno)respostaEnvioLote.Item;
                        retorno.Sucesso      = false;
                        retorno.CodigoErro   = mensagensErro.MensagemRetorno[0].Codigo;
                        retorno.Correcao     = mensagensErro.MensagemRetorno[0].Correcao;
                        retorno.MensagemErro = mensagensErro.MensagemRetorno[0].Mensagem;
                        return(retorno);
                    }
                    else
                    {
                        var retorno = new Core.RespostaCancelamentoNfse();
                        tcCancelamentoNfse cancelamento = (tcCancelamentoNfse)respostaEnvioLote.Item;
                        retorno.Sucesso = cancelamento.Confirmacao.InfConfirmacaoCancelamento.Sucesso;
                        retorno.DataHoraCancelamento = cancelamento.Confirmacao.InfConfirmacaoCancelamento.DataHora;
                        retorno.NumeroNfse           = cancelamento.Confirmacao.Pedido.InfPedidoCancelamento.IdentificacaoNfse.Numero;
                        return(retorno);
                    }
                }
                else
                {
                    return new Core.RespostaCancelamentoNfse()
                           {
                               Sucesso = false, CodigoErro = "00", MensagemErro = "Erro desconhecido"
                           }
                };
            }
            catch (System.Reflection.TargetInvocationException e)
            {
                throw e.InnerException;
            }
        }
コード例 #19
0
ファイル: ConfiguracaoApp.cs プロジェクト: xrsantos/NFSe.Net
            /// <summary>
            /// Exporta os WSDLs e Schemas da DLL para as pastas do UniNFe
            /// </summary>
            public void load(Core.Empresa empresa)
            {
                List <ArquivoItem> ListArqsAtualizar = new List <ArquivoItem>();

                UpdateWSDL(ListArqsAtualizar);

                try
                {
                    System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom("NFe.Components.Wsdl.dll");
                    string[] x = ass.GetManifestResourceNames();
                    if (x.GetLength(0) > 0)
                    {
                        foreach (string s in x)
                        {
                            string fileoutput = null;
                            switch (Propriedade.TipoAplicativo)
                            {
                            case TipoAplicativo.Nfse:
                                if (s.StartsWith("NFe.Components.Wsdl.NFse."))
                                {
                                    fileoutput = s.Replace("NFe.Components.Wsdl.NFse.", Propriedade.PastaExecutavel + "\\");
                                }
                                break;
                            }

                            if (fileoutput == null)
                            {
                                continue;
                            }

                            if (fileoutput.ToLower().EndsWith(".xsd"))
                            {
                                /// Ex: NFe.Components.Wsdl.NFe.NFe.xmldsig-core-schema_v1.01.xsd
                                ///
                                /// pesquisa pelo nome do XSD
                                int plast = fileoutput.ToLower().LastIndexOf("_v");
                                if (plast == -1)
                                {
                                    plast = fileoutput.IndexOf(".xsd") - 1;
                                }

                                while (fileoutput[plast] != '.')
                                {
                                    --plast;
                                }

                                string fn = fileoutput.Substring(plast + 1);
                                fileoutput = fileoutput.Substring(0, plast).Replace(".", "\\") + "\\" + fn;
                            }
                            else
                            {
                                fileoutput = (fileoutput.Substring(0, fileoutput.LastIndexOf('.')) + "#" + fileoutput.Substring(fileoutput.LastIndexOf('.') + 1)).Replace(".", "\\").Replace("#", ".");
                            }

                            //fileoutput = fileoutput.Replace(NFe.Components.Propriedade.PastaExecutavel, "e:\\temp");
                            //System.Windows.Forms.MessageBox.Show(s + "\r\n"+fileoutput+"\r\n"+Path.GetFileName(fileoutput));
                            //continue;

                            FileInfo    fi   = new FileInfo(fileoutput);
                            ArquivoItem item = new ArquivoItem();
                            item = null;

                            if (fi.Exists)  //danasa 9-2013
                            {
                                if (ListArqsAtualizar.Count > 0)
                                {
                                    item = ListArqsAtualizar.FirstOrDefault(f => f.Arquivo == fi.Name);
                                }
                            }
                            // A comparação é feita (fi.LastWriteTime != item.Data)
                            // Pois intende-se que se a data do arquivo que esta na pasta do UniNFe for superior a data
                            // de quando foi feita a ultima atualizacao do UniNfe, significa que ele foi atualizado manualmente e não devemos
                            // sobrepor o WSDL ou SCHEMA do Usuario - Renan 26/03/2013
                            if (item == null || !(fi.LastWriteTime.ToString("dd/MM/yyyy") != item.Data.ToString("dd/MM/yyyy")))
                            {
                                if (item == null || !item.Manual)
                                {
                                    using (StreamReader FileReader = new StreamReader(ass.GetManifestResourceStream(s)))
                                    {
                                        if (!Directory.Exists(Path.GetDirectoryName(fileoutput)))
                                        {
                                            Directory.CreateDirectory(Path.GetDirectoryName(fileoutput));
                                        }

                                        using (StreamWriter FileWriter = new StreamWriter(fileoutput))
                                        {
                                            FileWriter.Write(FileReader.ReadToEnd());
                                            FileWriter.Close();
                                        }
                                    }
                                }
                            }
                            else if (item != null)
                            {
                                item.Manual = true;
                            }
                        }
                    }

                    GravarVersoesWSDLs(ListArqsAtualizar);
                }


                catch (Exception ex)
                {
                    Auxiliar.WriteLog(ex.ToString());
                }
            }
コード例 #20
0
ファイル: ConfiguracaoApp.cs プロジェクト: xrsantos/NFSe.Net
 /// <summary>
 /// Definir o webservice que será utilizado para o envio do XML
 /// </summary>
 /// <param name="servico">Serviço que será executado</param>
 /// <param name="emp">Index da empresa que será executado o serviço</param>
 /// <param name="cUF">Código da UF</param>
 /// <param name="tpAmb">Código do ambiente que será acessado</param>
 /// <param name="tpEmis">Tipo de emissão do XML</param>
 /// <param name="versaoNFe">Versão da NFe (1 ou 2)</param>
 /// <returns>Retorna o objeto do serviço</returns>
 /// <remarks>
 /// Autor: Wandrey Mundin Ferreira
 /// Data: 04/04/2011
 /// </remarks>
 public static WebServiceProxy DefinirWS(Servicos servico, Core.Empresa emp, int cUF, int tpAmb, int tpEmis)
 {
     return(DefinirWS(servico, emp, cUF, tpAmb, tpEmis, PadroesNFSe.NaoIdentificado));
 }