public static List <MercadoFinanceiro.Entities.ContaCorrente> CastExcel(string excelFilePath) { Console.WriteLine("ContaCorrente Excel file path: {0}", excelFilePath); var ret = new List <MercadoFinanceiro.Entities.ContaCorrente>(); var xlApp = new Application(); var xlWorkbook = xlApp.Workbooks.Open(excelFilePath); var xlWorksheet = xlWorkbook.Sheets[1]; var xlRange = xlWorksheet.UsedRange; var row = 3; var liquidacao = ((string)xlRange.Cells[row, 1].Value2).GetValueOrNull <DateTime>(); while (liquidacao.HasValue) { var liquidacaoDate = liquidacao.Value; var movimentacao = Convert.ToDateTime(xlRange.Cells[row, 2].Value2); var descricao = ((string)xlRange.Cells[row, 3].Value2).Trim().RemoveDuplicateSpaces(); var saldo = ((string)xlRange.Cells[row, 6].Value2).Replace(".", "").GetValueOrNull <decimal>(); var debito = ((string)xlRange.Cells[row, 4].Value2).GetValueOrNull <decimal>(); var credito = ((string)xlRange.Cells[row, 5].Value2).GetValueOrNull <decimal>(); if (!debito.HasValue && !credito.HasValue || (debito.Value > 0 && credito < 0)) { throw new NotImplementedException(); } var valor = credito.HasValue && credito > 0 ? credito.Value : debito.Value; var newCC = new MercadoFinanceiro.Entities.ContaCorrente(liquidacaoDate, movimentacao, valor, saldo.Value, descricao); ret.Add(newCC); row++; liquidacao = ((string)xlRange.Cells[row, 1].Value2).GetValueOrNull <DateTime>(); } return(ret); }
public static IEnumerable <ContaCorrente <T> > PossibleReverse <T>(this IEnumerable <ContaCorrente <T> > ccs, MercadoFinanceiro.Entities.ContaCorrente estorno) where T : ContaCorrentes.Descricao => PossibleReverse <ContaCorrente <T>, T>(ccs, estorno);
public static IEnumerable <T> PossibleReverse <T, Y>(this IEnumerable <T> ccs, MercadoFinanceiro.Entities.ContaCorrente estorno) where T : ContaCorrente <Y> where Y : ContaCorrentes.Descricao => PossibleReverse <T, Y>(ccs, estorno.DataLiquidacao, estorno.Valor);