protected void ListarRecintos(int unidadeRfb) { this.cbRecintoAduaneiroDespacho.DataSource = recintosDAO.ObterRecintos(unidadeRfb); this.cbRecintoAduaneiroDespacho.DataBind(); this.cbRecintoAduaneiroDespacho.Items.Insert(0, new ListItem("-- Selecione --", "")); }
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(" ", "") == string.Empty && linha.Cells[5].Text.Replace(" ", "") != string.Empty) { linha.BackColor = System.Drawing.Color.MistyRose; } } }
protected async void btnGerarCsv_Click(object sender, EventArgs e) { var filtro = new StringBuilder(); var paises = PaisesDAO.ObterPaisesSiscomex(); if (this.txtUpload.PostedFile != null) { if (this.txtUpload.PostedFile.ContentLength > 0) { if (!UploadArquivo(this.txtUpload)) { throw new Exception("O arquivo não pode ser processado. Certifique-se que já não esteja aberto em outro programa"); } var notasFiscais = ProcessarArquivo(this.txtUpload.PostedFile.InputStream); var notasFiscaisFiltro = new List <string>(); foreach (var nf in notasFiscais) { notasFiscaisFiltro.Add($"'{nf}'"); } var filtroNfs = string.Join(",", notasFiscaisFiltro); if (!string.IsNullOrEmpty(filtroNfs)) { Session["FILTRO_CHAVES_REMESSA_UPLOAD"] = filtroNfs; filtro.Append($" AND E.CHAVE_ACESSO IN ({filtroNfs}) "); } try { File.Delete(Path.Combine(Server.MapPath("Uploads"), this.txtUpload.PostedFile.FileName)); } catch { } } else { if (Session["FILTRO_CHAVES_REMESSA_UPLOAD"] != null) { filtro.Append($" AND E.CHAVE_ACESSO IN ({Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString()}) "); } } } var filtroRem = new StringBuilder(); var listaNotasArquivo = new List <string>(); var listaNotasConsulta = new List <string>(); var listaNotasDiferencas = new List <string>(); if (Session["FILTRO_CHAVES_REMESSA_UPLOAD"] != null) { filtroRem.Append($" AND B.CHAVE_ACESSO IN ({Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString()}) "); listaNotasArquivo.AddRange(Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString().Split(',')); } var dataTableRemessa = _estoqueDAO.ObterNotasRemessa(filtroRem.ToString()); foreach (DataRow rowRemessa in dataTableRemessa.Rows) { listaNotasConsulta.Add(rowRemessa["CHAVE_NF"].ToString()); } listaNotasConsulta = listaNotasConsulta.Distinct().ToList(); foreach (var chaveNfArquivo in listaNotasArquivo) { var nf = chaveNfArquivo.Replace("'", ""); if (!listaNotasConsulta.Contains(nf)) { listaNotasDiferencas.Add(nf); } } StringBuilder builder = new StringBuilder(); List <string> rows = new List <string>(); List <string> colunas = new List <string>(); foreach (DataColumn column in dataTableRemessa.Columns) { colunas.Add(column.ColumnName); } foreach (DataRow rowRemessa in dataTableRemessa.Rows) { List <string> camposRemessa = new List <string>(); foreach (DataColumn column in dataTableRemessa.Columns) { object item = rowRemessa[column]; var texto = Regex.Replace(item.ToString(), @"\t|\n|\r", ""); camposRemessa.Add(texto); } rows.Add(string.Join(";", camposRemessa.ToArray())); } var duesImportadas = new List <string>(); if (listaNotasDiferencas.Any()) { rows.Add("As notas abaixo não formam encontradas no banco de dados de DUEs CARGILL e os dados apresentados foram consultados diretamente no SISCOMEX"); foreach (var notaNaoEncontrada in listaNotasDiferencas) { var dadosDue = await SisComexService .ConsultarDUEPorDanfe(notaNaoEncontrada, ConfigurationManager.AppSettings["CpfCertificado"].ToString()); if (dadosDue != null) { if (dadosDue.Sucesso) { foreach (var due in dadosDue?.ListaDadosDUE) { var retornoDue = await SisComexService.ObterDUECompleta(due.rel, ConfigurationManager.AppSettings["CpfCertificado"].ToString()); if (retornoDue != null) { if (!duesImportadas.Contains(due.rel)) { duesImportadas.Add(due.rel); var declarante = retornoDue.declarante?.numeroDoDocumento ?? string.Empty; var declaranteNome = retornoDue.declarante?.nome ?? string.Empty; var descricaoRecinto = string.Empty; var descricaoUnidade = string.Empty; if (retornoDue.recintoAduaneiroDeDespacho != null) { var recintoBusca = _recintosDAO.ObterRecintos() .Where(c => c.Id == retornoDue.recintoAduaneiroDeDespacho?.codigo.ToInt()).FirstOrDefault(); if (recintoBusca != null) { descricaoRecinto = recintoBusca.Descricao; } } else { descricaoRecinto = "Indisponível"; } if (retornoDue.unidadeLocalDeDespacho != null) { var unidadeBusca = _unidadesReceitaDAO.ObterUnidadesRFB() .Where(c => c.Codigo.ToInt() == retornoDue.unidadeLocalDeDespacho?.codigo.ToInt()).FirstOrDefault(); if (unidadeBusca != null) { descricaoUnidade = unidadeBusca.Descricao; } } else { descricaoUnidade = "Indisponível"; } var ultimoEvento = string.Empty; EventosDoHistorico averbacao; var dataAverbacao = string.Empty; DateTime?dataUltimoEvento = null; if (retornoDue.eventosDoHistorico != null) { ultimoEvento = retornoDue.eventosDoHistorico.OrderByDescending(c => c.dataEHoraDoEvento).Select(c => c.evento).FirstOrDefault(); dataUltimoEvento = retornoDue.eventosDoHistorico.OrderByDescending(c => c.dataEHoraDoEvento).Select(c => c.dataEHoraDoEvento).FirstOrDefault(); averbacao = retornoDue.eventosDoHistorico .FirstOrDefault(c => c.evento.ToLower().Contains("averbacao") || c.evento.ToLower().Contains("averbação")); dataAverbacao = averbacao != null ? averbacao.dataEHoraDoEvento.ToString("dd/MM/yyyy HH:mm:ss") : string.Empty; } if (retornoDue.itens != null) { foreach (var item in retornoDue.itens) { string valorDaMercadoriaNaCondicaoDeVenda = item?.valorDaMercadoriaNaCondicaoDeVenda.ToString() ?? "0"; string valorDaMercadoriaNoLocalDeEmbarque = item?.valorDaMercadoriaNoLocalDeEmbarque.ToString() ?? "0"; string valorDaMercadoriaNoLocalDeEmbarqueEmReais = item?.valorDaMercadoriaNoLocalDeEmbarqueEmReais.ToString() ?? "0"; string importador = item?.nomeImportador ?? string.Empty; string enderecoImportador = item?.enderecoImportador ?? string.Empty; string pesoLiquidoTotal = item?.pesoLiquidoTotal.ToString() ?? "0"; pesoLiquidoTotal = pesoLiquidoTotal.Replace(".", "").Replace(",", "."); string incoterm = item?.codigoCondicaoVenda.codigo ?? string.Empty; var codigoPaisImportador = retornoDue?.paisImportador?.codigo ?? 0; string paisImportador = paises.Where(c => c.Id == codigoPaisImportador) .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty; var codigoPaisDestino = item?.listaPaisDestino.Select(c => c.codigo).FirstOrDefault() ?? 0; string paisDestino = paises.Where(c => c.Id == codigoPaisDestino) .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty; string unidadeEstatistica = item?.unidadeComercializada ?? string.Empty; string informacoesComplementares = retornoDue?.informacoesComplementares ?? string.Empty; var codigoMoeda = retornoDue?.moeda?.codigo ?? 0; string moedaNegociacao = _moedasDAO.ObterMoedas().Where(c => c.Id == codigoMoeda) .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty; foreach (var nfRemessa in item.itensDaNotaDeRemessa) { if (nfRemessa != null) { var tipoNf = string.Empty; var cfop = nfRemessa.cfop.ToString(); if (cfop.EndsWith("04") || cfop.EndsWith("05")) { tipoNf = "FDL"; } if (cfop.EndsWith("01") || cfop.EndsWith("02")) { tipoNf = "REM"; } var itemNfRef = nfRemessa.notaFiscal; var emitente = itemNfRef.identificacaoDoEmitente; rows.Add($";{retornoDue.dataDeRegistro.ToString("dd/MM/yyyy HH:mm:ss")};{retornoDue.numero};{retornoDue.chaveDeAcesso};{declarante};{declaranteNome};{ultimoEvento};{dataUltimoEvento?.ToString("dd/MM/yyyy HH:mm:ss")};{dataAverbacao};{nfRemessa.ncm?.codigo};{nfRemessa.numeroDoItem};{nfRemessa.cfop};{nfRemessa.descricao};{tipoNf};{itemNfRef.chaveDeAcesso};{itemNfRef.numeroDoDocumento};{itemNfRef.modelo};{itemNfRef.serie};{itemNfRef.ufDoEmissor};{emitente.numero};{retornoDue.situacao};{valorDaMercadoriaNaCondicaoDeVenda.Replace(".", "").Replace(",", ".") };{valorDaMercadoriaNoLocalDeEmbarque.Replace(".", "").Replace(",", ".") };{valorDaMercadoriaNoLocalDeEmbarqueEmReais.Replace(".", "").Replace(",", ".") };{importador};{enderecoImportador};{paisImportador};{paisDestino};{unidadeEstatistica};{pesoLiquidoTotal};{moedaNegociacao};{incoterm};{informacoesComplementares};{retornoDue.unidadeLocalDeDespacho?.codigo};{descricaoUnidade};{retornoDue.recintoAduaneiroDeDespacho?.codigo };{descricaoRecinto};{item.quantidadeNaUnidadeEstatistica.ToString("n3")};{nfRemessa.quantidadeConsumida.ToString("n3")}"); } } } } } } else { var retornoDueResumida = await SisComexService.ObterDetalhesDUE(due.rel, ConfigurationManager.AppSettings["CpfCertificado"].ToString()); if (retornoDueResumida != null) { if (!duesImportadas.Contains(due.rel)) { duesImportadas.Add(due.rel); var declarante = retornoDueResumida.declarante?.numero ?? string.Empty; var descricaoRecinto = string.Empty; var descricaoUnidade = string.Empty; if (retornoDueResumida.codigoRecintoAduaneiroDespacho != null) { var recintoBusca = _recintosDAO.ObterRecintos() .Where(c => c.Id == retornoDueResumida.codigoRecintoAduaneiroDespacho.ToInt()).FirstOrDefault(); if (recintoBusca != null) { descricaoRecinto = recintoBusca.Descricao; } } else { descricaoRecinto = "Indisponível"; } if (retornoDueResumida.uaDespacho != null) { var unidadeBusca = _unidadesReceitaDAO.ObterUnidadesRFB() .Where(c => c.Codigo.ToInt() == retornoDueResumida.uaDespacho.ToInt()).FirstOrDefault(); if (unidadeBusca != null) { descricaoUnidade = unidadeBusca.Descricao; } } else { descricaoUnidade = "Indisponível"; } rows.Add($";;{retornoDueResumida.numeroDUE};;{declarante};;;;;;;;;;{notaNaoEncontrada};;;;;;;;;;;;;;;;;;;{retornoDueResumida.uaDespacho};{descricaoUnidade};{retornoDueResumida.codigoRecintoAduaneiroDespacho };{descricaoRecinto}"); } } } } } else { rows.Add(dadosDue.Mensagem); } } } } builder.Append(string.Join(";", colunas.ToArray())); builder.Append("\n"); builder.Append(string.Join("\n", rows.ToArray())); var agora = DateTime.Now; var nomeArquivo = $"LM_{agora.ToString("ddMMyyyy")}_{agora.ToString("HHmmss")}"; Response.Clear(); Response.ContentType = "text/csv"; Response.AddHeader("Content-Disposition", $"attachment;filename={nomeArquivo}.csv"); Response.ContentEncoding = System.Text.Encoding.GetEncoding("Windows-1252"); Response.Write(builder.ToString()); //Response.End(); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.SuppressContent = true; HttpContext.Current.ApplicationInstance.CompleteRequest(); }
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}"); } }