Ejemplo n.º 1
0
        protected async void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                var id = Request.QueryString["id"].ToInt();

                if (id > 0)
                {
                    var dueBusca = _documentoUnicoExportacaoDAO.ObterDUEPorId(id);

                    if (dueBusca.CriadoPorNF > 0)
                    {
                        this.gvNotasFiscais.DataSource = _documentoUnicoExportacaoDAO.ObterNotasPorDueId(id);
                        this.gvNotasFiscais.DataBind();

                        foreach (GridViewRow linhaGrid in this.gvNotasFiscais.Rows)
                        {
                            if (linhaGrid.Cells[0].Text != "EXP")
                            {
                                var chaveNf    = linhaGrid.Cells[1].Text;
                                var quantidade = linhaGrid.Cells[4].Text.ToDecimal();

                                var saldoDue = _documentoUnicoExportacaoDAO.ObterQuantidadeDUEPorNF(chaveNf);

                                var saldoNota = await ServicoSiscomex2.ConsultarDadosNotaPreACD(chaveNf, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                                foreach (var linha in saldoNota)
                                {
                                    if (linha != null)
                                    {
                                        if (linha.Sucesso == false)
                                        {
                                            linhaGrid.BackColor = System.Drawing.Color.MistyRose;
                                        }
                                        else
                                        {
                                            quantidade = quantidade - saldoDue;

                                            if (!((quantidade) <= (decimal)linha.Saldo))
                                            {
                                                linhaGrid.BackColor = System.Drawing.Color.LightYellow;
                                            }
                                            else
                                            {
                                                linhaGrid.BackColor = System.Drawing.Color.LightGreen;
                                            }

                                            linhaGrid.Cells[5].Text  = linha.Saldo.ToString();
                                            linhaGrid.Cells[6].Text  = saldoDue.ToString();
                                            linhaGrid.Cells[11].Text = linha.Item.ToString();
                                            linhaGrid.Cells[12].Text = linha.Recinto;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        List <NotaFiscal> notasExportacao = _documentoUnicoExportacaoDAO.ObterNotasExportacaoPorDueId(id).ToList();

                        if (notasExportacao.Count() == 0)
                        {
                            var itensDUE = _documentoUnicoExportacaoDAO.ObterItensDUE(id);

                            foreach (var itemDue in itensDUE)
                            {
                                var notaExportacao = _notaFiscalDAO.ObterNotasExportacaoPorChave(itemDue.NF);

                                if (notaExportacao != null)
                                {
                                    notasExportacao.Add(notaExportacao);
                                }
                            }
                        }

                        var notasGrid = new List <NotaFiscal>();

                        foreach (var notaExportacao in notasExportacao)
                        {
                            notasGrid.Add(notaExportacao);

                            var notasRemessa = _documentoUnicoExportacaoDAO.ObterNotasRemessaPorDueId(notaExportacao.ChaveNF).ToList();

                            foreach (var notaRemessa in notasRemessa)
                            {
                                notasGrid.Add(notaRemessa);
                            }
                        }

                        this.gvNotasFiscais.DataSource = notasGrid.ToList();
                        this.gvNotasFiscais.DataBind();

                        foreach (GridViewRow linhaGrid in this.gvNotasFiscais.Rows)
                        {
                            if (linhaGrid.Cells[0].Text != "EXP")
                            {
                                var chaveNf    = linhaGrid.Cells[1].Text;
                                var quantidade = linhaGrid.Cells[4].Text.ToDecimal();

                                var saldoDue = _documentoUnicoExportacaoDAO.ObterQuantidadeDUEPorNF(chaveNf);

                                var saldoNota = await ServicoSiscomex2.ConsultarDadosNotaPreACD(chaveNf, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                                foreach (var linha in saldoNota)
                                {
                                    if (linha != null)
                                    {
                                        if (linha.Sucesso == false)
                                        {
                                            linhaGrid.BackColor = System.Drawing.Color.MistyRose;
                                        }
                                        else
                                        {
                                            quantidade = quantidade - saldoDue;

                                            if (!((quantidade) <= (decimal)linha.Saldo))
                                            {
                                                linhaGrid.BackColor = System.Drawing.Color.LightYellow;
                                            }
                                            else
                                            {
                                                linhaGrid.BackColor = System.Drawing.Color.LightGreen;
                                            }

                                            linhaGrid.Cells[5].Text  = linha.Saldo.ToString();
                                            linhaGrid.Cells[6].Text  = saldoDue.ToString();
                                            linhaGrid.Cells[11].Text = linha.Item.ToString();
                                            linhaGrid.Cells[12].Text = linha.Recinto;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private async void ValidarNotasSiscomex(List <NotaFiscalConsultaCCT> notasFiscais)
        {
            var contador = 0;

            var listaGrid = new List <ConsultaNfs>();
            var numeroNf  = string.Empty;
            var cnpjNf    = string.Empty;

            var totalNotas = notasFiscais.Count;
            var acumulador = 0;

            foreach (var linhaGrid in notasFiscais)
            {
                acumulador++;

                HttpContext.Current.Session["PROGRESSO"] = $"Processando {acumulador} de {totalNotas} Notas Fiscais. Aguarde...";

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

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

                var saldoNota = await ServicoSiscomex2.ConsultarDadosNotaPreACD(chaveNf, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                if (saldoNota != null)
                {
                    foreach (var linha in saldoNota)
                    {
                        contador += 1;

                        if (linha.Sucesso == false)
                        {
                            listaGrid.Add(new ConsultaNfs
                            {
                                Id          = contador,
                                ChaveNF     = chaveNf,
                                Observacoes = linha.Mensagem
                            });
                        }
                        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";
                            }

                            var pesos = _estoqueDAO.ObterPesoCCT(linha.Recinto, linha.ResponsavelIdentificacao, numeroNf, "", "");

                            if (pesos != null)
                            {
                                listaGrid.Add(new ConsultaNfs
                                {
                                    Id             = contador,
                                    DataRegistro   = linha.Registro,
                                    SaldoCCT       = linha.Saldo.ToString(),
                                    ChaveNF        = chaveNf,
                                    Recinto        = descricaoRecinto,
                                    UnidadeReceita = descricaoUnidade,
                                    Observacoes    = linha.MotivoNaoPesagem,
                                    Item           = linha.Item.ToString(),
                                    PesoEntradaCCT = pesos.PesoEntradaCCT,
                                    PesoAferido    = linha.PesoAferido.ToString()
                                });
                            }
                            else
                            {
                                listaGrid.Add(new ConsultaNfs
                                {
                                    Id             = contador,
                                    DataRegistro   = linha.Registro,
                                    SaldoCCT       = linha.Saldo.ToString(),
                                    ChaveNF        = chaveNf,
                                    Recinto        = descricaoRecinto,
                                    UnidadeReceita = descricaoUnidade,
                                    Observacoes    = linha.MotivoNaoPesagem,
                                    Item           = linha.Item.ToString(),
                                    PesoAferido    = linha.PesoAferido.ToString()
                                });
                            }
                        }
                    }
                }
                else
                {
                    listaGrid.Add(new ConsultaNfs
                    {
                        Id          = contador,
                        ChaveNF     = chaveNf,
                        Observacoes = "Indisponibilidade Siscomex. Por favor, tente novamente após alguns minutos."
                    });
                }
            }

            this.gvNotasFiscais.DataSource = listaGrid.OrderBy(c => c.ChaveNF).ThenBy(c => c.Item).ToList();
            this.gvNotasFiscais.DataBind();

            foreach (GridViewRow linha in gvNotasFiscais.Rows)
            {
                if (linha.Cells[0].Text.Replace("&nbsp;", "") == string.Empty && linha.Cells[5].Text.Replace("&nbsp;", "") != string.Empty)
                {
                    linha.BackColor = System.Drawing.Color.MistyRose;
                }
            }
        }
Ejemplo n.º 3
0
        protected async void btnGerarExcel_Click(object sender, EventArgs e)
        {
            var id = Request.QueryString["id"].ToInt();

            var notas = new List <NotaFiscalConsultaCCT>();

            foreach (GridViewRow linha in this.gvNotasFiscais.Rows)
            {
                string status = string.Empty;

                if (linha.Cells[0].Text != "EXP")
                {
                    var item = linha.Cells[11].Text.ToInt();

                    if (item == 0)
                    {
                        item = 1;
                    }

                    var saldoDue = _documentoUnicoExportacaoDAO.ObterQuantidadeDUEPorNF(linha.Cells[1].Text);

                    var saldoNota = await ServicoSiscomex2.ConsultarDadosNotaPreACD(linha.Cells[1].Text, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                    foreach (var linhaSaldo in saldoNota)
                    {
                        if (linhaSaldo != null)
                        {
                            if (linhaSaldo.Sucesso == false)
                            {
                                status = "Nota não encontrada no CCT";
                            }
                            else
                            {
                                var quantidade = linha.Cells[4].Text.ToDecimal() - saldoDue;

                                if (!((quantidade) <= (decimal)linhaSaldo.Saldo))
                                {
                                    status = "Nota com divergência no saldo";
                                }
                                else
                                {
                                    status = "Nota sem divergência";
                                }
                            }
                        }
                    }
                }

                notas.Add(new NotaFiscalConsultaCCT
                {
                    TipoNF            = linha.Cells[0].Text,
                    ChaveNF           = linha.Cells[1].Text,
                    NumeroNF          = linha.Cells[2].Text,
                    CnpjNF            = linha.Cells[3].Text,
                    QuantidadeNF      = linha.Cells[4].Text.ToDecimal(),
                    SaldoCCT          = linha.Cells[5].Text,
                    SaldoOutrasDUES   = linha.Cells[6].Text.ToDecimal(),
                    UnidadeNF         = linha.Cells[7].Text,
                    NCM               = linha.Cells[8].Text,
                    ChaveNFReferencia = linha.Cells[9].Text,
                    Arquivo           = linha.Cells[10].Text,
                    Status            = status,
                    Item              = linha.Cells[11].Text.ToInt(),
                    Recinto           = linha.Cells[12].Text
                });

                status = string.Empty;
            }

            string attachment = "attachment; filename=MyExcelPage.xlsx";

            ExcelPackage   epackage = new ExcelPackage();
            ExcelWorksheet excel    = epackage.Workbook.Worksheets.Add("ExcelTabName");

            excel.Cells["A1"].LoadFromCollection(notas.Select(c => new
            {
                c.TipoNF,
                c.ChaveNF,
                c.NumeroNF,
                c.CnpjNF,
                c.QuantidadeNF,
                c.SaldoCCT,
                c.SaldoOutrasDUES,
                c.UnidadeNF,
                c.NCM,
                ChaveNFReferencia = c.ChaveNFReferencia.Replace("&nbsp;", ""),
                c.Arquivo,
                c.Status,
                c.Item,
                c.Recinto
            }), true);

            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.ClearContent();
            HttpContext.Current.Response.AddHeader("content-disposition", attachment);
            HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

            HttpContext.Current.Response.BinaryWrite(epackage.GetAsByteArray());

            HttpContext.Current.Response.End();
            epackage.Dispose();
        }
Ejemplo n.º 4
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}");
            }
        }