public RetornoGenerico(RetornoCnab240 retornoCnab240) { Inicializa(); RetornoCnab240Especifico = retornoCnab240; /* Transformar de CNAB240 para formato genérico */ foreach (var loteAtual in retornoCnab240.Lotes) { foreach (var d in loteAtual.RegistrosDetalheSegmentos) { var detalheGenericoAdd = new RetornoDetalheGenerico { NossoNumero = d.SegmentoT.NossoNumero, Carteira = d.SegmentoT.CodigoCarteira.ToString(CultureInfo.InvariantCulture), NumeroDocumento = d.SegmentoT.NumeroDocumento }; // Segmento T var valorDoc = d.SegmentoT.ValorTitulo; detalheGenericoAdd.ValorDocumento = valorDoc; detalheGenericoAdd.DataVencimento = Convert.ToDateTime(d.SegmentoT.DataVencimento); //detalheGenericoAdd.ValorDocumento = Math.Round(d.SegmentoT.ValorTitulo, 2); //detalheGenericoAdd.ValorTarifaCustas = d.SegmentoT.ValorTarifas / 100; //detalheGenericoAdd.CodigoMovimento = d.SegmentoT.CodigoMovimento.ToString(); //detalheGenericoAdd.CodigoOcorrencia = d.SegmentoT.MotivoOcorrencia.ToString(); // Segmento U detalheGenericoAdd.DataCredito = d.SegmentoU.DataCredito; //detalheGenericoAdd.DataLiquidacao = Convert.ToDateTime(d.SegmentoU.DataLiquidacao.ToString()); //detalheGenericoAdd.DataCredito = Convert.ToDateTime(d.SegmentoU.DataCredito.ToString()); #region Valores no detalhe var valorAcres = d.SegmentoU.JurosMultaEncargos; var valorDesc = d.SegmentoU.ValorDescontoConcedido + d.SegmentoU.ValorAbatimentoConcedido; //var valorPago = d.SegmentoU.ValorPagoPeloSacado; var valorRecebido = d.SegmentoU.ValorLiquidoASerCreditado; detalheGenericoAdd.ValorAcrescimos = valorAcres; detalheGenericoAdd.ValorDesconto = valorDesc; //detalheGenericoAdd.ValorPago = valorPago; detalheGenericoAdd.ValorRecebido = valorRecebido; #endregion //detalheGenericoAdd.ValorIof = d.SegmentoU.ValorIofRecolhido / 100; //detalheGenericoAdd.ValorOutrasDespesas = d.SegmentoU.ValorOutrasDespesas / 100; //detalheGenericoAdd.ValorOutrosCreditos = d.SegmentoU.ValorOutrosCreditos / 100; //detalheGenericoAdd.CodigoOcorrencia = d.SegmentoU.CodigoOcorrenciaPagador; //detalheGenericoAdd.DataOcorrencia = d.SegmentoU.DataOcorrenciaPagador; //detalheGenericoAdd.ValorOcorrencia = d.SegmentoU.ValorOcorrenciaPagador / 100; //detalheGenericoAdd.DataDebitoTarifaCustas = Convert.ToDateTime(d.SegmentoU.DataDebitoTarifa.ToString()); RegistrosDetalhe.Add(detalheGenericoAdd); } } Trailer.QtdRegistrosArquivo = retornoCnab240.Trailer.QtdRegistrosArquivo.ToString(CultureInfo.InvariantCulture); }
public RetornoCnab240 ProcessarRetorno() { /* Validações */ #region Validações ValidaArquivoRetorno(); #endregion var objRetornar = new RetornoCnab240(); LoteRetornoCnab240 ultimoLoteIdentificado = null; DetalheRetornoCnab240 ultimoRegistroDetalheIdentificado = null; foreach (var linhaAtual in _linhasArquivo) { /* Header de arquivo */ if (linhaAtual.ExtrairValorDaLinha(8, 8) == "0") objRetornar.Header = ObterHeader(linhaAtual); /* Header de Lote */ if (linhaAtual.ExtrairValorDaLinha(8, 8) == "1") { ultimoLoteIdentificado = new LoteRetornoCnab240(); ultimoRegistroDetalheIdentificado = new DetalheRetornoCnab240(); objRetornar.Lotes.Add(ultimoLoteIdentificado); ultimoLoteIdentificado.HeaderLote = ObterHeaderLote(linhaAtual); } if (linhaAtual.ExtrairValorDaLinha(8, 8) == "3") { if (linhaAtual.ExtrairValorDaLinha(14, 14) == "T") { if (ultimoLoteIdentificado == null) throw new Exception("Não foi encontrado header de lote para o segmento atual."); //ultimoLoteIdentificado.RegistrosDetalheSegmentoT.Add(objDetalhe); ultimoRegistroDetalheIdentificado.SegmentoT = ObterRegistrosDetalheT(linhaAtual); } if (linhaAtual.ExtrairValorDaLinha(14, 14) == "U") { if (ultimoLoteIdentificado == null) throw new Exception("Não foi encontrado header de lote para o segmento atual."); //ultimoLoteIdentificado.RegistrosDetalheSegmentoU.Add(objDetalhe); ultimoRegistroDetalheIdentificado.SegmentoU = ObterRegistrosDetalheU(linhaAtual); } } /* Trailer de Lote */ if (linhaAtual.ExtrairValorDaLinha(8, 8) == "5") if (ultimoLoteIdentificado != null) ultimoLoteIdentificado.TrailerLote = ObterTrailerLote(linhaAtual); /* Trailer de arquivo */ if (linhaAtual.ExtrairValorDaLinha(8, 8) == "9") objRetornar.Trailer = ObterTrailer(linhaAtual); } return objRetornar; }