/// <summary> /// Compõe os dados do detalhe /// </summary> /// <param name="crgRetDetEn"></param> /// <param name="acsPrgGcrEN"></param> /// <param name="idRegistro"></param> /// <param name="numLinha"></param> private void CompoeDetalhe(CargaRetornoDetalheEN crgRetDetEn, ACSOPRGCR_RDetalheEN acsPrgGcrEN, string idRegistro, int numLinha) { acsPrgGcrEN.TpIdentificacao = crgRetDetEn.TpIdentificacao; acsPrgGcrEN.Identificacao = crgRetDetEn.Identificacao; acsPrgGcrEN.StatusCart = crgRetDetEn.StatusCart; acsPrgGcrEN.StatusProc = (!String.IsNullOrEmpty(crgRetDetEn.Retorno)) ? upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.ErroGenérico : upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.Sucesso; acsPrgGcrEN.Retorno = crgRetDetEn.Retorno; acsPrgGcrEN.IdRegistro = idRegistro; acsPrgGcrEN.NumLinha = numLinha; }
private static ACSOPRGCR_RDetalheEN Mapeia(SqlDataReader dr) { var acsPrgCrgDetEN = new ACSOPRGCR_RDetalheEN() { IdArquivo = (int)dr["IdArquivo"], TpIdentificacao = (EnumRetornoBase.TipoIdentificacao)dr["TpPanProxy"], Identificacao = dr["PanProxy"].ToString(), StatusProc = (EnumRetornoBase.StatusProcessamento)dr["StatusProc"], StatusCart = (EnumRetornoBase.StatusCartao)dr["StatusCart"], Retorno = dr["Descricao"].ToString(), IdRegistro = dr["IdRegistro"].ToString(), NumLinha = (int)dr["NumLinha"] }; return(acsPrgCrgDetEN); }
public static void Insere(this ACSOPRGCR_RDetalheEN acsCrgRetDet) { using (SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["Global"].ConnectionString)) { try { string query = " INSERT crpACSOPRGCR_RDetalhe " + " (IdArquivo, TpRegistro, TpPanProxy, PanProxy, StatusProc, StatusCart, Descricao, IdRegistro, NumLinha) " + " SELECT @IdArquivo, @TpRegistro, @TpPanProxy, @PanProxy, @StatusProc, @StatusCart, @Descricao, @IdRegistro, @NumLinha "; using (SqlCommand cmd = new SqlCommand(query, cnx)) { cmd.CommandType = CommandType.Text; cmd.Parameters.Add("IdArquivo", SqlDbType.Int).Value = acsCrgRetDet.IdArquivo; cmd.Parameters.Add("TpRegistro", SqlDbType.Char, 1).Value = ACSOPRGCR_RDetalheEN.TpRegistro; cmd.Parameters.Add("TpPanProxy", SqlDbType.TinyInt).Value = (byte)acsCrgRetDet.TpIdentificacao; cmd.Parameters.Add("PanProxy", SqlDbType.VarChar, 32).Value = acsCrgRetDet.Identificacao; cmd.Parameters.Add("StatusProc", SqlDbType.Int).Value = (int)acsCrgRetDet.StatusProc; cmd.Parameters.Add("StatusCart", SqlDbType.TinyInt).Value = BDGeral.BDObtemValor <byte>((byte)acsCrgRetDet.StatusCart); cmd.Parameters.Add("Descricao", SqlDbType.VarChar, 50).Value = BDGeral.BDObtemValor(acsCrgRetDet.Retorno); cmd.Parameters.Add("IdRegistro", SqlDbType.VarChar, 10).Value = BDGeral.BDObtemValor(acsCrgRetDet.IdRegistro); cmd.Parameters.Add("NumLinha", SqlDbType.Int).Value = acsCrgRetDet.NumLinha; cnx.Open(); cmd.ExecuteNonQuery(); } } catch (SqlException sqlExc) { if (upSight.Consulta.Base.BD.Geral.TS.TraceError) { Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTSC_R.DetBD", sqlExc }); } throw; } catch (Exception ex) { if (upSight.Consulta.Base.BD.Geral.TS.TraceError) { Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTSC_R.Det", ex }); } throw; } } }
/// <summary> /// Processa os dados retornados no arquivo de retorno de carga /// </summary> /// <param name="idArquivo"></param> /// <returns></returns> public void ProcessaDadosParaGerarArquivoRetornoCarga(int idArquivo, string pathArquivoOrigem, string codConvenio = "ACSO") { //using (StringWriter sw = new StringWriter(new System.Globalization.CultureInfo("pt-BR"))) //{ DateTime dtAgora = DateTime.Now; string pathDestino = ConfigurationManager.AppSettings["ACSOIDTSC_R.CRI.DiretotioDestino"]; string nomeArquivo = this.FormataNomeArquivo(codConvenio, dtAgora); string pathCompleto = Path.Combine(pathDestino, nomeArquivo); ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOIDTSC_R, pathArquivoOrigem, 0); Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, pathCompleto, "Inicia processamento de arquivo"); mapArq.IdArquivo = idArquivo; int novoIdArquivo = mapArq.IdArquivo; int numLinha = 0; EnumRetornoBase.StatusProcessamento statusProc = EnumRetornoBase.StatusProcessamento.Sucesso; try { //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, pathDestino, "Inicia processamento de arquivo"); numLinha++; //Gero Cabeçalho var cab = this.MontaCabecalho(novoIdArquivo, dtAgora, nomeArquivo, "ACSO", "ACESSO", numLinha); cab.Insere(); //sw.WriteLine(cab.ToString()); //Busco os detalhes var detalhe = new ACSOPRGCR_RDetalheEN(); detalhe.IdArquivo = novoIdArquivo; var detalhesRetorno = DetalheRetornoBaseBD.ConsultaDetalheCarga(idArquivo); //Totalizadores var cargaRejet = detalhesRetorno.Where(crgRej => !String.IsNullOrEmpty(crgRej.Retorno)); int totalRejeitadas = (cargaRejet != null) ? cargaRejet.Count() : 0; int totalCarga = detalhesRetorno.Count() - totalRejeitadas; decimal vlrTotalCrgRej = cargaRejet.Sum(vlrCrgRejet => vlrCrgRejet.Valor); decimal vlrTotalCrg = detalhesRetorno.Sum(vlrCrg => vlrCrg.Valor) - vlrTotalCrgRej; //Se houve rejeições mudo o status do processamento if (totalRejeitadas > 0) statusProc = EnumRetornoBase.StatusProcessamento.ErroGenérico; //Gero Lote this.MontaLote(novoIdArquivo, "01", totalRejeitadas, totalCarga, numLinha, statusProc).Insere(); //sw.WriteLine(this.MontaLote(novoIdArquivo, "", totalRejeitadas, totalCarga, numLinha, statusProc).ToString()); int contErro = 0; //Gero Detalhe detalhesRetorno.ForEach(delegate(CargaRetornoDetalheEN crgdet) { try { numLinha++; this.CompoeDetalhe(crgdet, detalhe, codConvenio, numLinha); detalhe.Insere(); //sw.WriteLine(detalhe.ToString()); } catch (Exception) { contErro++; string descErro = String.Format("Total de linhas com erro: {0}", contErro); //this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, contErro); this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Alerta, descErro); } } ); numLinha++; //Gero Rodapé var rdp = this.MontaRodape(novoIdArquivo, totalCarga, totalCarga, vlrTotalCrg, totalRejeitadas, vlrTotalCrg, numLinha); rdp.Insere(); //sw.WriteLine(rdp.ToString()); } catch (Exception) { string descErro = "Erro processamento arquivo"; Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, pathCompleto, descErro); this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro); } //} }
/// <summary> /// Compõe os dados do detalhe /// </summary> /// <param name="crgRetDetEn"></param> /// <param name="acsPrgGcrEN"></param> /// <param name="idRegistro"></param> /// <param name="numLinha"></param> private void CompoeDetalhe(CargaRetornoDetalheEN crgRetDetEn, ACSOPRGCR_RDetalheEN acsPrgGcrEN, string idRegistro, int numLinha) { acsPrgGcrEN.TpIdentificacao = crgRetDetEn.TpIdentificacao; acsPrgGcrEN.Identificacao = crgRetDetEn.Identificacao; acsPrgGcrEN.StatusCart = crgRetDetEn.StatusCart; acsPrgGcrEN.StatusProc = (!String.IsNullOrEmpty(crgRetDetEn.Retorno)) ? upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.ErroGenérico : upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.Sucesso; acsPrgGcrEN.Retorno = crgRetDetEn.Retorno; acsPrgGcrEN.IdRegistro = idRegistro; acsPrgGcrEN.NumLinha = numLinha; }
private static ACSOPRGCR_RDetalheEN Mapeia(SqlDataReader dr) { var acsPrgCrgDetEN = new ACSOPRGCR_RDetalheEN() { IdArquivo = (int)dr["IdArquivo"], TpIdentificacao = (EnumRetornoBase.TipoIdentificacao)dr["TpPanProxy"], Identificacao = dr["PanProxy"].ToString(), StatusProc = (EnumRetornoBase.StatusProcessamento)dr["StatusProc"], StatusCart = (EnumRetornoBase.StatusCartao)dr["StatusCart"], Retorno = dr["Descricao"].ToString(), IdRegistro = dr["IdRegistro"].ToString(), NumLinha = (int)dr["NumLinha"] }; return acsPrgCrgDetEN; }
/// <summary> /// Processa os dados retornados no arquivo de retorno de carga /// </summary> /// <param name="idArquivo"></param> /// <returns></returns> public void ProcessaDadosParaGerarArquivoRetornoCarga(int idArquivo, string pathArquivoOrigem, string codConvenio = "ACSO") { //using (StringWriter sw = new StringWriter(new System.Globalization.CultureInfo("pt-BR"))) //{ DateTime dtAgora = DateTime.Now; string pathDestino = ConfigurationManager.AppSettings["ACSOIDTSC_R.CRI.DiretotioDestino"]; string nomeArquivo = this.FormataNomeArquivo(codConvenio, dtAgora); string pathCompleto = Path.Combine(pathDestino, nomeArquivo); ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOIDTSC_R, pathArquivoOrigem, 0); Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, pathCompleto, "Inicia processamento de arquivo"); mapArq.IdArquivo = idArquivo; int novoIdArquivo = mapArq.IdArquivo; int numLinha = 0; EnumRetornoBase.StatusProcessamento statusProc = EnumRetornoBase.StatusProcessamento.Sucesso; try { //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, pathDestino, "Inicia processamento de arquivo"); numLinha++; //Gero Cabeçalho var cab = this.MontaCabecalho(novoIdArquivo, dtAgora, nomeArquivo, "ACSO", "ACESSO", numLinha); cab.Insere(); //sw.WriteLine(cab.ToString()); //Busco os detalhes var detalhe = new ACSOPRGCR_RDetalheEN(); detalhe.IdArquivo = novoIdArquivo; var detalhesRetorno = DetalheRetornoBaseBD.ConsultaDetalheCarga(idArquivo); //Totalizadores var cargaRejet = detalhesRetorno.Where(crgRej => !String.IsNullOrEmpty(crgRej.Retorno)); int totalRejeitadas = (cargaRejet != null) ? cargaRejet.Count() : 0; int totalCarga = detalhesRetorno.Count() - totalRejeitadas; decimal vlrTotalCrgRej = cargaRejet.Sum(vlrCrgRejet => vlrCrgRejet.Valor); decimal vlrTotalCrg = detalhesRetorno.Sum(vlrCrg => vlrCrg.Valor) - vlrTotalCrgRej; //Se houve rejeições mudo o status do processamento if (totalRejeitadas > 0) { statusProc = EnumRetornoBase.StatusProcessamento.ErroGenérico; } //Gero Lote this.MontaLote(novoIdArquivo, "01", totalRejeitadas, totalCarga, numLinha, statusProc).Insere(); //sw.WriteLine(this.MontaLote(novoIdArquivo, "", totalRejeitadas, totalCarga, numLinha, statusProc).ToString()); int contErro = 0; //Gero Detalhe detalhesRetorno.ForEach(delegate(CargaRetornoDetalheEN crgdet) { try { numLinha++; this.CompoeDetalhe(crgdet, detalhe, codConvenio, numLinha); detalhe.Insere(); //sw.WriteLine(detalhe.ToString()); } catch (Exception) { contErro++; string descErro = String.Format("Total de linhas com erro: {0}", contErro); //this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, contErro); this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Alerta, descErro); } } ); numLinha++; //Gero Rodapé var rdp = this.MontaRodape(novoIdArquivo, totalCarga, totalCarga, vlrTotalCrg, totalRejeitadas, vlrTotalCrg, numLinha); rdp.Insere(); //sw.WriteLine(rdp.ToString()); } catch (Exception) { string descErro = "Erro processamento arquivo"; Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, pathCompleto, descErro); this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro); } //} }