public void ProcessBudget_ShouldIgnoreMultiline() { MultilineTransactionLine line = TransactionLineBuilder.BuildMultilineTransactionLine(); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-100m, "farmácia", category: "saude")); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-300m, "supermercado")); MultilineTransactionLine line2 = TransactionLineBuilder.BuildMultilineTransactionLine(); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-300m, "farmácia", category: "saude")); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-500m, "supermercado")); ExecutedMultilineTransactionLine executedLine = line2.Consolidate( TransactionLineBuilder.BuildExecutedCreditcardTransactionLine(-1_000m)); List <TransactionLine> lines = TransactionLineBuilder.BuildList() .Add(-300m, "Eletropaulo", day: 14) .Add(-500m, "Faculdade", day: 18, category: "Educação") .Add(line) .Add(executedLine) .Add(-800m, "Aluguel", day: 22) .Build(); MontlyBudget budget = new MontlyBudget(TransactionLineBuilder.DefaultCategory, 2_000m, 15); MontlyBudget processedBudget = budget.Process(lines); Assert.Equal(1_100m, processedBudget.Used); Assert.Equal(900m, processedBudget.Available); }
public void AddLinesToMultilineTransactionLine() { MultilineTransactionLine line = TransactionLineBuilder.BuildMultilineTransactionLine(); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-300)); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-500, "supermercado")); Assert.Equal(2, line.Lines.Count); Assert.Equal(-800m, line.Amount); }
public void ConsolidateMultilineTransactionLine() { MultilineTransactionLine line = TransactionLineBuilder.BuildMultilineTransactionLine(); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-300)); line.Add(TransactionLineBuilder.BuildMultilineDetailTransactionLine(-500, "supermercado")); ExecutedTransactionLine statementLine = TransactionLineBuilder.BuildExecutedCreditcardTransactionLine(-1_000m); ExecutedMultilineTransactionLine executedLine = line.Consolidate(statementLine); Assert.Equal(2, executedLine.Lines.Count); Assert.Equal(statementLine.Amount, executedLine.Amount); Assert.Equal(statementLine.TransactionDate, executedLine.TransactionDate); Assert.Equal(line.Description, executedLine.Description); Assert.Equal(200m, executedLine.Difference); }
public IActionResult AddStatement(TransactionDto dto) { if (!dto.IsMultiline) { transactionLineRepository.Add(new SingleTransactionLine( new TransactionLineInfo(dto.Date, dto.Amount, dto.Description), new ClassificationInfo(dto.Category, dto.Responsible, dto.Importance))); } else if (dto.MultilineParentId.HasValue && dto.MultilineParentId.Value > 0) { MultilineTransactionLine line = (MultilineTransactionLine)transactionLineRepository.GetById(dto.MultilineParentId.Value); line.Add(new MultilineDetailTransactionLine( new TransactionLineInfo(dto.Date, dto.Amount, dto.Description), new ClassificationInfo(dto.Category, dto.Responsible, dto.Importance))); transactionLineRepository.Add(line); } else { transactionLineRepository.Add(new MultilineTransactionLine( new TransactionLineInfo(dto.Date, dto.Amount, dto.Description))); } return(Ok()); }
public void ParseNameToMultilineTransactionLine(string name, int day, int month, string description) { MultilineTransactionLine transactionLine = parser.ParseName(name); ValidateStatement(transactionLine, 0m, description, new DateTime(2019, month, day)); }