예제 #1
0
        /// <summary>
        /// Busca as configurações da empresa dentro de sua pasta gravadas em um XML chamado UniNfeConfig.Xml
        /// </summary>
        public static void CarregarEmpresasConfiguradas()
        {
            Empresa.Configuracoes.Clear();
            var empresas = Empresas.CarregarEmpresasCadastradas();

            foreach (var item in empresas.ListaEmpresas)
            {
                string caminhoConfiguracaoEmpresa = System.IO.Path.Combine(Propriedade.PastaExecutavel, item.Cnpj, "nfse", Propriedade.NomeArqConfig);
                if (System.IO.File.Exists(caminhoConfiguracaoEmpresa))
                {
                    var serializador = new Layouts.Serializador();
                    var empresa      = serializador.LerXml <Empresa>(caminhoConfiguracaoEmpresa);
                    if (!string.IsNullOrWhiteSpace(empresa.CertificadoSenha))
                    {
                        empresa.CertificadoSenha = Criptografia.descriptografaSenha(empresa.CertificadoSenha);
                    }
                    else
                    {
                        empresa.ErrosValidacao.Add("A senha do certificado é inválida.");
                    }
                    empresa.X509Certificado = BuscaConfiguracaoCertificado(empresa);

                    Empresa.Configuracoes.Add(empresa);
                }
                else
                {
                    throw new Exception(string.Format("O arquivo de configuração da empresa: {0} - {1} não existe ", item.Nome, item.Cnpj));
                }
            }
        }
예제 #2
0
 public static Empresas CarregarEmpresasCadastradas()
 {
     if (System.IO.File.Exists(Propriedade.NomeArqEmpresa))
     {
         try
         {
             var serializar = new Layouts.Serializador();
             return serializar.LerXml<Empresas>(Propriedade.NomeArqEmpresa);
         }
         catch (Exception ex)
         {
             throw new Exception("O arquivo de configuração é inválido. A lista de empresas não pode ser recuperada!", ex);
         }
     }
     else
         throw new Exception("O arquivo de configurações não existe. Verifique as configurações");
 }
예제 #3
0
        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;
            }
        }
예제 #4
0
        private void button3_Click(object sender, EventArgs e)
        {
            System.Net.ServicePointManager.Expect100Continue = false;


            string caminhoXml    = @"C:\NotasEletronicas\30-JeF DISTRIBUIDORA DE\nfse\513-ped-loterps.xml";
            string caminhoSalvar = @"C:\NotasEletronicas\30-JeF DISTRIBUIDORA DE\nfse\513-lote-final.xml";
            var    empresa       = RetornaEmpresa(false);

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

            envio.ProcessaArquivo(empresa, caminhoXml, caminhoSalvar, Servicos.ConsultarLoteRps);

            var serializar = new Layouts.Serializador();
            var retorno    = serializar.LerXml <Layouts.Betha.ConsultarLoteRpsResposta>(caminhoSalvar);

            System.Diagnostics.Process.Start(retorno.ListaNfse.ComplNfse[0].Nfse.InfNfse.OutrasInformacoes);
        }
예제 #5
0
 private void button8_Click(object sender, EventArgs e)
 {
     try
     {
         string caminhoXml    = @"C:\NotasEletronicas\30-JeF DISTRIBUIDORA DE\nfse\496-ped-loterps.xml";
         string caminhoSalvar = @"C:\NotasEletronicas\30-JeF DISTRIBUIDORA DE\nfse\496-consulta-por-rps.xml";
         var    empresa       = RetornaEmpresa(false);
         var    envio         = new NFSE.Net.Envio.Processar();
         envio.ProcessaArquivo(empresa, caminhoXml, caminhoSalvar, Servicos.ConsultarNfsePorRps);
         var serializar = new Layouts.Serializador();
         var retorno    = serializar.LerXml <Layouts.Betha.ConsultarNfseRpsResposta>(caminhoSalvar);
         System.Diagnostics.Process.Start(retorno.ComplNfse.Nfse.InfNfse.OutrasInformacoes);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
예제 #6
0
        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;
            }
        }
예제 #7
0
        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));
        }
예제 #8
0
        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));
        }
예제 #9
0
        /// <summary>
        /// Busca as configurações da empresa dentro de sua pasta gravadas em um XML chamado UniNfeConfig.Xml
        /// </summary>
        public static void CarregarEmpresasConfiguradas()
        {
            Empresa.Configuracoes.Clear();
            var empresas = Empresas.CarregarEmpresasCadastradas();
            foreach (var item in empresas.ListaEmpresas)
            {
                string caminhoConfiguracaoEmpresa = System.IO.Path.Combine(Propriedade.PastaExecutavel, item.Cnpj, "nfse", Propriedade.NomeArqConfig);
                if (System.IO.File.Exists(caminhoConfiguracaoEmpresa))
                {
                    var serializador = new Layouts.Serializador();
                    var empresa = serializador.LerXml<Empresa>(caminhoConfiguracaoEmpresa);
                    if (!string.IsNullOrWhiteSpace(empresa.CertificadoSenha))
                        empresa.CertificadoSenha = Criptografia.descriptografaSenha(empresa.CertificadoSenha);
                    else
                        empresa.ErrosValidacao.Add("A senha do certificado é inválida.");
                    empresa.X509Certificado = BuscaConfiguracaoCertificado(empresa);

                    Empresa.Configuracoes.Add(empresa);
                }
                else
                    throw new Exception(string.Format("O arquivo de configuração da empresa: {0} - {1} não existe ", item.Nome, item.Cnpj));
            }
        }
예제 #10
0
        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);
        }
예제 #11
0
        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);
        }