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"); } }
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; } }
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}"); } }
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"); } }