Beispiel #1
0
        public void SalvarLoteRps(Layouts.Betha.EnviarLoteRpsEnvio lote, Core.ArquivosEnvio localArquivos)
        {
            if (string.IsNullOrWhiteSpace(localArquivos.SalvarEnvioLoteEm))
            {
                throw new ArgumentNullException("localArquivos.SalvarEnvioLoteEm");
            }
            if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(localArquivos.SalvarEnvioLoteEm)))
            {
                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(localArquivos.SalvarEnvioLoteEm));
            }

            var serializar = new Layouts.Serializador();

            serializar.SalvarXml <Layouts.Betha.EnviarLoteRpsEnvio>(lote, localArquivos.SalvarEnvioLoteEm);
        }
Beispiel #2
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;
            }
        }
Beispiel #3
0
        private void ValidarCaminhos(Core.ArquivosEnvio localArquivos)
        {
            if (string.IsNullOrWhiteSpace(localArquivos.SalvarCancelarNfseEnvioEm))
            {
                throw new ArgumentNullException("localArquivos.SalvarEnvioLoteEm");
            }
            if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(localArquivos.SalvarCancelarNfseEnvioEm)))
            {
                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(localArquivos.SalvarCancelarNfseEnvioEm));
            }

            if (string.IsNullOrWhiteSpace(localArquivos.SalvarCancelarNfseRespostaEm))
            {
                throw new ArgumentNullException("localArquivos.SalvarEnvioLoteEm");
            }
            if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(localArquivos.SalvarCancelarNfseRespostaEm)))
            {
                System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(localArquivos.SalvarCancelarNfseRespostaEm));
            }
        }
Beispiel #4
0
        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;
            }
        }
Beispiel #5
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));
        }
Beispiel #6
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));
        }