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.NomeSacado = d.SegmentoT?.NomeSacado; // Segmento U detalheGenericoAdd.DataCredito = d.SegmentoU.DataCredito; detalheGenericoAdd.DataOcorrencia = Convert.ToDateTime(d.SegmentoU.DataOcorrencia); #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 var banco = BancoFactory.ObterBanco(d.SegmentoU?.CodigoBanco.ToString().PadLeft(3, '0')); var ocorrencia = banco.ObtemCodigoOcorrenciaByInt(d.SegmentoU.BoletoBrToBind().CodigoMovimento); detalheGenericoAdd.CodigoOcorrencia = ocorrencia?.Codigo.ToString(); detalheGenericoAdd.MensagemOcorrenciaRetornoBancario = ocorrencia?.Descricao; detalheGenericoAdd.Ocorrencia = ocorrencia; //DATA LIQUIDAÇÃO E DATA OCORRENCIA if (detalheGenericoAdd.Pago && detalheGenericoAdd.DataLiquidacao == DateTime.MinValue) { detalheGenericoAdd.DataLiquidacao = d.SegmentoU.DataOcorrencia; } RegistrosDetalhe.Add(detalheGenericoAdd); } } Trailer.QtdRegistrosArquivo = retornoCnab240.Trailer.QtdRegistrosArquivo.ToString(CultureInfo.InvariantCulture); }
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 RetornoGenericoPagamento(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(); if (d.SegmentoJ != null) { detalheGenericoAdd.NossoNumero = d.SegmentoJ.NossoNumero; detalheGenericoAdd.SeuNumero = d.SegmentoJ.SeuNumero; detalheGenericoAdd.NomeFavorecido = d.SegmentoJ.NomeCedente; detalheGenericoAdd.DataPagamento = d.SegmentoJ.DataPagamento.GetValueOrDefault(); detalheGenericoAdd.DataEfetivacaoPagamento = detalheGenericoAdd.DataPagamento; detalheGenericoAdd.DataVencimento = Convert.ToDateTime(d.SegmentoJ.DataVencimento); detalheGenericoAdd.ValorPagamento = d.SegmentoJ.ValorPagamento; detalheGenericoAdd.ValorDocumento = d.SegmentoJ.ValorTitulo; detalheGenericoAdd.ValorRealEfetivacaoPagamento = d.SegmentoJ.ValorPagamento; detalheGenericoAdd.ValorAcrescimos = d.SegmentoJ.ValorAcrescimo; detalheGenericoAdd.ValorDesconto = d.SegmentoJ.ValorDesconto; var banco = BancoFactory.ObterBanco(d.SegmentoJ?.CodigoBanco.ToString()); var ocorrencia = banco.ObtemCodigoOcorrenciaPagamento(d.SegmentoJ.Ocorrencia.Substring(8, 2)); detalheGenericoAdd.CodigoOcorrencia = ocorrencia?.CodigoText.ToString(); detalheGenericoAdd.MensagemOcorrenciaRetornoBancario = ocorrencia?.Descricao; detalheGenericoAdd.Ocorrencia = ocorrencia; RegistrosDetalhe.Add(detalheGenericoAdd); } else { detalheGenericoAdd.NossoNumero = d.SegmentoA.NossoNumero; detalheGenericoAdd.SeuNumero = d.SegmentoA.SeuNumero; detalheGenericoAdd.NomeFavorecido = d.SegmentoA.NomeFavorecido; detalheGenericoAdd.DataPagamento = d.SegmentoA.DataPagamento.GetValueOrDefault(); detalheGenericoAdd.DataVencimento = Convert.ToDateTime(d.SegmentoB.DataVencimento); detalheGenericoAdd.DataEfetivacaoPagamento = d.SegmentoA.DataEfetivacaoPagamento.GetValueOrDefault(); detalheGenericoAdd.ValorPagamento = d.SegmentoA.ValorPagamento; detalheGenericoAdd.ValorRealEfetivacaoPagamento = d.SegmentoA.ValorRealEfetivacaoPagamento; detalheGenericoAdd.ValorAcrescimos = d.SegmentoB.ValorJurosMora.GetValueOrDefault(); detalheGenericoAdd.ValorDesconto = d.SegmentoB.ValorDesconto.GetValueOrDefault(); detalheGenericoAdd.ValorMulta = d.SegmentoB.ValorMulta.GetValueOrDefault(); var banco = BancoFactory.ObterBanco(d.SegmentoB?.CodigoBanco.ToString()); var ocorrencia = banco.ObtemCodigoOcorrenciaPagamento(d.SegmentoA.Ocorrencia.Substring(8, 2)); detalheGenericoAdd.CodigoOcorrencia = ocorrencia?.CodigoText.ToString(); detalheGenericoAdd.MensagemOcorrenciaRetornoBancario = ocorrencia?.Descricao; detalheGenericoAdd.Ocorrencia = ocorrencia; 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 ultimoRegistroIdentificado = 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(); ultimoRegistroIdentificado = 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); ultimoRegistroIdentificado.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); ultimoRegistroIdentificado.SegmentoU = ObterRegistrosDetalheU(linhaAtual); } if (linhaAtual.ExtrairValorDaLinha(14, 14) == "E") { if (ultimoLoteIdentificado == null) { throw new Exception("Não foi encontrado header de lote para o segmento atual."); } //ultimoLoteIdentificado.RegistrosDetalheSegmentoU.Add(objDetalhe); ultimoRegistroIdentificado.SegmentoE = ObterRegistrosDetalheE(linhaAtual); DetalheSegmentoERetornoCnab240 detalheSegmentoE = new DetalheSegmentoERetornoCnab240(); detalheSegmentoE = ultimoRegistroIdentificado.SegmentoE; DetalheRetornoCnab240 registro = new DetalheRetornoCnab240(); registro.SegmentoE = detalheSegmentoE; ultimoLoteIdentificado.RegistrosDetalheSegmentos.Add(registro); } } /* 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); }
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(); 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."); } ultimoRegistroDetalheIdentificado = new DetalheRetornoCnab240(); ultimoLoteIdentificado.RegistrosDetalheSegmentos.Add(ultimoRegistroDetalheIdentificado); var objSegmentoT = ObterRegistrosDetalheT(linhaAtual); ultimoRegistroDetalheIdentificado.SegmentoT = objSegmentoT; } if (linhaAtual.ExtrairValorDaLinha(14, 14) == "U") { var objSegmentoU = ObterRegistrosDetalheU(linhaAtual); if (ultimoLoteIdentificado == null) { throw new Exception("Não foi encontrado header de lote para o segmento atual."); } if (ultimoRegistroDetalheIdentificado == null) { throw new Exception("Não deveria ser nulo o último detalhe. Deveria ter sido criado no segmento T, anterior a este."); } ultimoRegistroDetalheIdentificado.SegmentoU = objSegmentoU; } } /* 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); }
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; var banco = BancoFactory.ObterBanco(d.SegmentoU?.CodigoBanco.ToString()); var ocorrencia = banco.ObtemCodigoOcorrenciaByInt(d.SegmentoU.BoletoBrToBind().CodigoMovimento); if (ocorrencia.Descricao == "ENTRADA REJEITADA") { ocorrencia = new CodigoOcorrencia(ocorrencia.Codigo) { Descricao = $@"{ocorrencia.Descricao}. Motivo: {d.SegmentoT.MotivoOcorrencia}" } } ; detalheGenericoAdd.CodigoOcorrencia = ocorrencia?.Codigo.ToString(); detalheGenericoAdd.MensagemOcorrenciaRetornoBancario = ocorrencia?.Descricao; detalheGenericoAdd.Ocorrencia = ocorrencia; //detalheGenericoAdd.CodigoOcorrencia = d.SegmentoU.CodigoOcorrenciaPagador; //detalheGenericoAdd.DataOcorrencia = d.SegmentoU.DataOcorrenciaPagador; //detalheGenericoAdd.ValorOcorrencia = d.SegmentoU.ValorOcorrenciaPagador / 100; //detalheGenericoAdd.DataDebitoTarifaCustas = Convert.ToDateTime(d.SegmentoU.DataDebitoTarifa.ToString()); //DATA LIQUIDAÇÃO E DATA OCORRENCIA if (detalheGenericoAdd.Pago && detalheGenericoAdd.DataLiquidacao == DateTime.MinValue) { detalheGenericoAdd.DataLiquidacao = d.SegmentoU.DataOcorrencia; } RegistrosDetalhe.Add(detalheGenericoAdd); } } Trailer.QtdRegistrosArquivo = retornoCnab240.Trailer.QtdRegistrosArquivo.ToString(CultureInfo.InvariantCulture); }