public void MontarArquivoRetorno(int idArquivo) { Arquivo incoming = new ArquivoDAO().Buscar(idArquivo); InformacaoRegistro headerIncoming, trailerIncoming; Registro regHeader = new RegistroDAO().RegistroPorArquivo(idArquivo).Where(r => r.FK_TipoRegistro.NomeTipoRegistro.ToLower().Equals("header")).First(); headerIncoming = infRegistroDAO.BuscarHeaderArquivo(idArquivo); trailerIncoming = infRegistroDAO.BuscarTrailerArquivo(idArquivo); string detail = new string('0', 168); string headerReal = LAB5Utils.StringUtils.Unzip(headerIncoming.Valor); headerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(headerReal, LAB5Utils.DataUtils.RetornaDataYYYYMMDD(DateTime.Now), regHeader.Campos.Where(c => c.NomeCampo.Equals("DATA DE RETORNO DO ARQUIVO")).First().PosInicio, regHeader.Campos.Where(c => c.NomeCampo.Equals("DATA DE RETORNO DO ARQUIVO")).First().PosFim); headerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(headerReal, LAB5Utils.DataUtils.RetornaHoraHHMMSS(DateTime.Now), regHeader.Campos.Where(c => c.NomeCampo.Equals("HORA DE RETORNO DO ARQUIVO")).First().PosInicio, regHeader.Campos.Where(c => c.NomeCampo.Equals("HORA DE RETORNO DO ARQUIVO")).First().PosFim); headerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(headerReal, "2", regHeader.Campos.Where(c => c.NomeCampo.Equals("INDICADOR DE ROTA DO ARQUIVO")).First().PosInicio, regHeader.Campos.Where(c => c.NomeCampo.Equals("INDICADOR DE ROTA DO ARQUIVO")).First().PosFim); headerIncoming.Valor = LAB5Utils.StringUtils.Zip(headerReal); infRegistroDAO.Salvar(headerIncoming); List <Campo> camposDetail = new RegistroDAO().RegistroPorArquivo(idArquivo).Where(r => r.ChaveRegistro.Equals("REGISTRO_E44_0")).First().Campos.OrderBy(c => c.PosInicio).ToList(); foreach (Campo campo in camposDetail) { } }
private string MontarTrailer() { TransacoesEloDAO transacaoDAO = new TransacoesEloDAO(arquivo.IdEmissor); InformacaoRegistro trailerIncoming = infRegDAO.BuscarTrailerArquivo(arquivo.IdArquivo); if (trailerIncoming.Equals(null)) { throw new Exception("Trailer não localizado"); } trailerIncoming.IdInformacaoRegistro = 0; int totalTransacoesCredReal, totalTransacoesCredDolar, totalTransacoesDebReal, totalTransacoesDebDolar; decimal valorTransacaoesCredReal, valorTransacoesCredDolar, valorTransacoesDebReal, valorTransacoesDedDolar; string trailerReal = LAB5Utils.StringUtils.Unzip(trailerIncoming.Valor); string strValorCredReal, strValorCredDolar, strValorDebReal, strValorDebDolar; totalTransacoesCredReal = transacaoDAO.TransacoesCredito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 986).ToList().Count; valorTransacaoesCredReal = Math.Round(transacaoDAO.TransacoesCredito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 986).ToList().Sum(t => t.Valor), 2); totalTransacoesCredDolar = transacaoDAO.TransacoesCredito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 840).ToList().Count; valorTransacoesCredDolar = Math.Round(transacaoDAO.TransacoesCredito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 840).ToList().Sum(t => t.Valor), 2); totalTransacoesDebReal = transacaoDAO.TransacoesDebito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 986).ToList().Count; totalTransacoesDebDolar = transacaoDAO.TransacoesDebito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 840).ToList().Count; valorTransacoesDebReal = Math.Round(transacaoDAO.TransacoesDebito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 986).Sum(t => t.Valor), 2); valorTransacoesDedDolar = Math.Round(transacaoDAO.TransacoesDebito(arquivo.NomeArquivo).Where(t => t.CodigoMoeda == 840).Sum(t => t.Valor), 2); strValorCredDolar = valorTransacoesCredDolar > 0 ? valorTransacoesCredDolar.ToString().Remove(valorTransacoesCredDolar.ToString().IndexOf(','), 1).PadLeft(15, '0') : new string('0', 15); strValorCredReal = valorTransacaoesCredReal > 0 ? valorTransacaoesCredReal.ToString().Remove(valorTransacaoesCredReal.ToString().IndexOf(','), 1).PadLeft(15, '0') : new string('0', 15); strValorDebReal = valorTransacoesDebReal > 0 ? valorTransacoesDebReal.ToString().Remove(valorTransacoesDebReal.ToString().IndexOf(','), 1).PadLeft(15, '0') : new string('0', 15); strValorDebDolar = valorTransacoesDedDolar > 0 ? valorTransacoesDedDolar.ToString().Remove(valorTransacoesDedDolar.ToString().IndexOf(','), 1).PadLeft(15, '0') : new string('0', 15); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, totalTransacoesCredReal.ToString().PadLeft(8, '0'), 9, 16); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, strValorCredReal, 17, 31); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, totalTransacoesDebReal.ToString().PadLeft(8, '0'), 32, 39); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, strValorDebReal, 40, 54); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, totalTransacoesCredDolar.ToString().PadLeft(8, '0'), 55, 62); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, strValorCredDolar, 63, 77); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, totalTransacoesDebDolar.ToString().PadLeft(8, '0'), 78, 85); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, strValorDebDolar, 86, 100); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, totalRegistros.ToString().PadLeft(8, '0'), 101, 108); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, new string(' ', (116 - 109) + 1), 109, 116); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, new string(' ', (131 - 117) + 1), 117, 131); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, new string(' ', (167 - 132) + 1), 132, 167); trailerReal = LAB5Utils.ArquivoUtils.AlterarInformacao(trailerReal, "2", 168, 168); trailerIncoming.Valor = LAB5Utils.StringUtils.Zip(trailerReal); try { infRegDAO.Salvar(trailerIncoming); return(LAB5Utils.StringUtils.Unzip(trailerIncoming.Valor)); } catch (Exception ex) { throw new Exception("Não foi possível gerar o trailer do arquivo de retorno. " + ex.Message + " - " + ex.InnerException); } }