示例#1
0
        public static string ImportarNFs(List <string> chaves, string guid)
        {
            try
            {
                logger.Info($"{DateTime.Now} - Início consulta NF's: {String.Join(",", chaves)}");
                //ConsultaNfs cnf = new ConsultaNfs();
                var _notaFiscalDAOx = new NotaFiscalDAO();

                foreach (var chave in chaves)
                {
                    // Levi alterou aqui 08/01/2021 - pesquisava qualque coisa do txt. Se fizesse upload de arquivo errado poderia gerar milhares de consultas no siscomex.

                    string chaveaux = chave.Trim();
                    if (chaveaux.Length == 44)
                    {
                        var nf = new NotaFiscalConsultaCCT()
                        {
                            ChaveNF  = chaveaux,
                            SaldoCCT = "0.0",
                            OBS      = string.Empty
                        };

                        ValidarNotasSiscomexUnitario(nf, guid);
                    }
                    else
                    {
                        chaveaux = chaveaux + "                                                      ";
                        var nf = new NotaFiscalConsultaCCT()
                        {
                            ChaveNF      = chaveaux.Substring(0, 44),
                            DataRegistro = System.DateTime.Now.ToString(),
                            SaldoCCT     = "",
                            OBS          = "Chave inválida, somente chaves de 44 dígitos podem se consutadas. Notas formulários não estão disponíveis no Siscomex."
                        };
                        _notaFiscalDAOx.CadastrarNFImportacaoConsulta(nf, guid);
                    }
                    // até aqui
                }
                logger.Info($"{DateTime.Now} - Término consulta NF's");
                return(string.Empty);
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível importar NFs");
            }
        }
示例#2
0
        public int CadastrarNFImportacaoConsulta(NotaFiscalConsultaCCT notaFiscal, string guid)
        {
            try
            {
                using (SqlConnection con = new SqlConnection(Banco.StringConexao()))
                {
                    var      parametros = new DynamicParameters();
                    DateTime dtx        = notaFiscal.DataRegistro.ToDateTime();
                    if (dtx > Convert.ToDateTime("2000-01-01 00:00:00"))
                    {
                        parametros.Add(name: "DataRegistro", value: notaFiscal.DataRegistro.ToDateTime(), direction: ParameterDirection.Input);
                    }
                    else
                    {
                        dtx = System.DateTime.Now;
                        parametros.Add(name: "DataRegistro", value: dtx, direction: ParameterDirection.Input);
                    }
                    parametros.Add(name: "ChaveNF", value: notaFiscal.ChaveNF, direction: ParameterDirection.Input);
                    parametros.Add(name: "SaldoCCT", value: notaFiscal.SaldoCCT, direction: ParameterDirection.Input);
                    parametros.Add(name: "PesoEntradaCCT", value: notaFiscal.PesoEntradaCCT, direction: ParameterDirection.Input);
                    parametros.Add(name: "PesoAferido", value: notaFiscal.PesoAferido, direction: ParameterDirection.Input);
                    parametros.Add(name: "OBS", value: notaFiscal.OBS, direction: ParameterDirection.Input);
                    parametros.Add(name: "Recinto", value: notaFiscal.Recinto, direction: ParameterDirection.Input);
                    parametros.Add(name: "UnidadeNF", value: notaFiscal.UnidadeReceita, direction: ParameterDirection.Input);
                    parametros.Add(name: "Item", value: notaFiscal.Item, direction: ParameterDirection.Input);
                    parametros.Add(name: "Due", value: notaFiscal.DUE, direction: ParameterDirection.Input);
                    parametros.Add(name: "QtdeAverbada", value: notaFiscal.QtdeAverbada, direction: ParameterDirection.Input);
                    parametros.Add(name: "GUID", value: guid, direction: ParameterDirection.Input);
                    parametros.Add(name: "Id", dbType: DbType.Int32, direction: ParameterDirection.Output);

                    return(con.Query <int>(@"INSERT INTO [dbo].[TEMP_CONS_CCT] (REGISTRO, CHAVE, SALDO_CCT, PESO_ENTRADA_CCT, PESO_AFERIDO, OBS,RECINTO, UNIDADE, ITEM, DUE, QTDE_AVERBADA, SESSAO_HASH) VALUES (@DataRegistro, @ChaveNF, @SaldoCCT, @PesoEntradaCCT, @PesoAferido, @OBS, @Recinto, @UnidadeNF, @Item, @Due, @QtdeAverbada, @GUID); SELECT CAST(SCOPE_IDENTITY() AS INT)", parametros).Single());
                }
            }
            catch (SqlException ex)
            {
                throw;
            }
        }
示例#3
0
        private static void ValidarNotasSiscomexUnitario(NotaFiscalConsultaCCT notaFiscalChave, string guid)
        {
            var _notaFiscalDAO      = new NotaFiscalDAO();
            var _recintosDAO        = new RecintosDAO();
            var _unidadesReceitaDAO = new UnidadesReceitaDAO();
            var _estoqueDAO         = new EstoqueDAO(false);

            var numeroNf = string.Empty;
            var cnpjNf   = string.Empty;
            var mesNf    = string.Empty;
            var anoNf    = string.Empty;

            var chaveNf = notaFiscalChave.ChaveNF.Replace(";", "");

            if (chaveNf.Length > 30)
            {
                cnpjNf   = chaveNf.Substring(6, 14);
                numeroNf = chaveNf.Substring(25, 9);
                anoNf    = chaveNf.Substring(2, 2);
                mesNf    = chaveNf.Substring(4, 2);
            }

            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            var saldoNota = AsyncHelpers.RunSync <List <Responses.DadosNotaPreACD> >(() => ServicoSiscomex2.ConsultarDadosNotaPreACD(chaveNf, ConfigurationManager.AppSettings["CpfCertificado"].ToString()));

            stopWatch.Stop();
            LogsService.Logar("ConsultarNFs.aspx", $"Consulta Siscomex: {stopWatch.Elapsed}");

            if (saldoNota != null)
            {
                foreach (var linha in saldoNota)
                {
                    try
                    {
                        if (linha.Sucesso == false)
                        {
                            var informacoesDue = _estoqueDAO.ObterDadosDueConsCCT(chaveNf);

                            string due          = "";
                            string qtdeAverbada = "";

                            if (informacoesDue != null)
                            {
                                if (informacoesDue.Any())
                                {
                                    due          = string.Join("|", informacoesDue.Select(c => c.DUE));
                                    qtdeAverbada = string.Join("|", informacoesDue.Select(c => c.Quantidade));
                                }
                            }

                            var notaFiscal = new NotaFiscalConsultaCCT
                            {
                                ChaveNF      = chaveNf,
                                OBS          = linha.Mensagem,
                                DUE          = due,
                                QtdeAverbada = qtdeAverbada
                            };

                            stopWatch.Reset();
                            stopWatch.Start();
                            _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid);
                            stopWatch.Stop();
                            LogsService.Logar("ConsultarNFs.aspx", $"_notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid): {stopWatch.Elapsed}");
                        }
                        else
                        {
                            string descricaoRecinto = string.Empty;
                            string descricaoUnidade = string.Empty;

                            if (linha.Recinto != null)
                            {
                                var recintoBusca = _recintosDAO.ObterRecintos()
                                                   .Where(c => c.Id == linha.Recinto.ToInt()).FirstOrDefault();

                                if (recintoBusca != null)
                                {
                                    descricaoRecinto = recintoBusca.Descricao;
                                }
                            }
                            else
                            {
                                descricaoRecinto = "Indisponível";
                            }

                            if (linha.UnidadeReceita != null)
                            {
                                var unidadeBusca = _unidadesReceitaDAO.ObterUnidadesRFB()
                                                   .Where(c => c.Codigo.ToInt() == linha.UnidadeReceita.ToInt()).FirstOrDefault();

                                if (unidadeBusca != null)
                                {
                                    descricaoUnidade = unidadeBusca.Descricao;
                                }
                            }
                            else
                            {
                                descricaoUnidade = "Indisponível";
                            }

                            stopWatch.Reset();
                            stopWatch.Start();

                            var pesos = _estoqueDAO.ObterPesoCCT(
                                linha.Recinto,
                                linha.ResponsavelIdentificacao,
                                numeroNf,
                                linha.Registro.Substring(0, 10),
                                $"{anoNf}{mesNf}");

                            var informacoesDue = _estoqueDAO.ObterDadosDueConsCCT(chaveNf);

                            string due          = "";
                            string qtdeAverbada = "";

                            if (informacoesDue != null)
                            {
                                if (informacoesDue.Any())
                                {
                                    due          = string.Join("|", informacoesDue.Select(c => c.DUE));
                                    qtdeAverbada = string.Join("|", informacoesDue.Select(c => c.Quantidade));
                                }
                            }

                            stopWatch.Stop();
                            LogsService.Logar("ConsultarNFs.aspx", $"_estoqueDAO.ObterPesoCCT(): {stopWatch.Elapsed}");

                            if (pesos != null)
                            {
                                var pesoAferido = !string.IsNullOrEmpty(pesos.PesoAferido)
                                    ? pesos.PesoAferido
                                    : "Não Disponível - ";

                                if (!string.IsNullOrEmpty(pesos.MotivoNaoPesagem))
                                {
                                    pesoAferido += "Motivo não pesagem: " + pesos.MotivoNaoPesagem;
                                }

                                var notaFiscal = new NotaFiscalConsultaCCT
                                {
                                    DataRegistro   = linha.Registro,
                                    SaldoCCT       = linha.Saldo.ToString(),
                                    ChaveNF        = chaveNf,
                                    Recinto        = descricaoRecinto,
                                    UnidadeReceita = descricaoUnidade,
                                    OBS            = string.Empty,
                                    Item           = linha.Item,
                                    PesoEntradaCCT = pesos.PesoEntradaCCT,
                                    PesoAferido    = pesoAferido,
                                    DUE            = due,
                                    QtdeAverbada   = qtdeAverbada
                                };

                                stopWatch.Reset();
                                stopWatch.Start();

                                _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid);

                                stopWatch.Stop();
                                LogsService.Logar("ConsultarNFs.aspx", $"Ln 489 - _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid) {stopWatch.Elapsed}");
                            }
                            else
                            {
                                var informacoesDues = _estoqueDAO.ObterDadosDueConsCCT(chaveNf);

                                string nrdue         = "";
                                string qtdeAverbadas = "";

                                if (informacoesDues != null)
                                {
                                    if (informacoesDues.Any())
                                    {
                                        due           = string.Join("|", informacoesDues.Select(c => c.DUE));
                                        qtdeAverbadas = string.Join("|", informacoesDues.Select(c => c.Quantidade));
                                    }
                                }

                                var notaFiscal = new NotaFiscalConsultaCCT
                                {
                                    DataRegistro   = linha.Registro,
                                    SaldoCCT       = linha.Saldo.ToString(),
                                    ChaveNF        = chaveNf,
                                    Recinto        = descricaoRecinto,
                                    UnidadeReceita = descricaoUnidade,
                                    OBS            = string.Empty,
                                    Item           = linha.Item,
                                    PesoAferido    = "Não Disponível",
                                    PesoEntradaCCT = "Não Disponível",
                                    DUE            = nrdue,
                                    QtdeAverbada   = qtdeAverbadas
                                };

                                stopWatch.Reset();
                                stopWatch.Start();

                                _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid);

                                stopWatch.Stop();
                                LogsService.Logar("ConsultarNFs.aspx", $"Ln 513 - _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid) {stopWatch.Elapsed}");
                            }
                        }
                    }
                    catch (Exception)
                    {
                        logger.Info($"{DateTime.Now} - Erro ao consultar NF {notaFiscalChave}");
                    }
                }
            }
            else
            {
                var notaFiscal = new NotaFiscalConsultaCCT
                {
                    ChaveNF = chaveNf,
                    OBS     = "Indisponibilidade Siscomex. Por favor, tente novamente após alguns minutos."
                };

                stopWatch.Reset();
                stopWatch.Start();

                _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid);

                stopWatch.Stop();
                LogsService.Logar("ConsultarNFs.aspx", $"Ln 539 - _notaFiscalDAO.CadastrarNFImportacaoConsulta(notaFiscal, guid); {stopWatch.Elapsed}");
            }
        }
示例#4
0
        public static string ImportarNFs(List <string> chaves, string guid)
        {
            try
            {
                logger.Info($"{DateTime.Now} - Início consulta NF's: {String.Join(",", chaves)}");
                //ConsultaNfs cnf = new ConsultaNfs();
                var _notaFiscalDAOx = new NotaFiscalDAO();

                foreach (var chave in chaves)
                {
                    // Levi alterou aqui 08/01/2021 - pesquisava qualque coisa do txt. Se fizesse upload de arquivo errado poderia gerar milhares de consultas no siscomex.

                    string chaveaux = chave.Trim();
                    if (chaveaux.Length == 44)
                    {
                        var nf = new NotaFiscalConsultaCCT()
                        {
                            ChaveNF  = chaveaux,
                            SaldoCCT = "0.0",
                            OBS      = string.Empty
                        };

                        var chaveNf       = chave.Replace(";", "");
                        var cnpjNf        = chave.Substring(6, 14);
                        var numeroNf      = chave.Substring(25, 9);
                        var anoNf         = chave.Substring(2, 2);
                        var mesNf         = chave.Substring(4, 2);
                        var DataEmissaoNF = $"{anoNf}{mesNf}";
                        var filtro        = (" AND CnpjDestinatario ='" + cnpjNf + "' AND NumeroNF = " + numeroNf + " AND [NotaFiscalEmissao] = " + DataEmissaoNF);

                        var _estoqueDAO = new EstoqueDAO(false);

                        var ds = _estoqueDAO.GerarCsvEstoque(filtro.ToString());

                        if (ds.Rows.Count > 0)
                        {
                            nf.DataRegistro   = ds.Rows[0].ItemArray[7].ToString();                           //DataHoraEntradaEstoque
                            nf.SaldoCCT       = String.Format("{0:#########.000}", ds.Rows[0].ItemArray[53]); //saldoatual ("#########.###")
                            nf.ChaveNF        = chaveaux.Substring(0, 44);
                            nf.Recinto        = ds.Rows[0].ItemArray[19].ToString();                          // CodigoRA;
                            nf.UnidadeReceita = ds.Rows[0].ItemArray[23].ToString();                          //CodigoURF;
                            nf.OBS            = "Pesquisado no banco de dados interno";
                            nf.Item           = Convert.ToInt32(ds.Rows[0].ItemArray[52].ToString());         //item;
                            nf.PesoEntradaCCT = ds.Rows[0].ItemArray[5].ToString();                           //saldo;
                            nf.PesoAferido    = ds.Rows[0].ItemArray[4].ToString();                           //pesoaferido
                            nf.DUE            = "";
                            nf.QtdeAverbada   = "";



                            _notaFiscalDAOx.CadastrarNFImportacaoConsulta(nf, guid);
                        }
                        else
                        {
                            ValidarNotasSiscomexUnitario(nf, guid);
                        }
                    }
                    else
                    {
                        chaveaux = chaveaux + "                                                      ";
                        var nf = new NotaFiscalConsultaCCT()
                        {
                            ChaveNF      = chaveaux.Substring(0, 44),
                            DataRegistro = System.DateTime.Now.ToString(),
                            SaldoCCT     = "",
                            OBS          = "Chave inválida, somente chaves de 44 dígitos podem se consutadas. Notas formulários não estão disponíveis no Siscomex."
                        };
                        _notaFiscalDAOx.CadastrarNFImportacaoConsulta(nf, guid);
                    }
                    // até aqui
                }
                logger.Info($"{DateTime.Now} - Término consulta NF's");
                return(string.Empty);
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível importar NFs");
            }
        }