public List <Transfer> GetAccountTransfers(AccountNumberTemplate accountNumber, bool getFrom = true, bool getTo = true) { var transfers = new List <Transfer>(); if (getFrom) { foreach (var transfer in _transferRepository.GetAccountTransfersFrom(accountNumber.AccountNumber.Value, accountNumber.SubNo, accountNumber.ShredNo)) { //We are taking away from this account, so the amount is negative var fromTransfer = Transfer.MapFromEntity(transfer); fromTransfer.Amount *= -1; transfers.Add(fromTransfer); } } if (getTo) { foreach (var transfer in _transferRepository.GetAccountTransfersTo(accountNumber.AccountNumber.Value, accountNumber.SubNo, accountNumber.ShredNo)) { transfers.Add(Transfer.MapFromEntity(transfer)); } } return(transfers); }
private void _addAccountSheet(Account account) { var accountNumber = new AccountNumberTemplate(account); account = _accountManager.GetAccountDetails(accountNumber); var accountSheet = _workbook.CreateSheet(accountNumber.stringifyAccountNumber()); ICell cell; var headerStyle = _workbook.CreateCellStyle(); headerStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Green.Index; headerStyle.FillPattern = FillPattern.SolidForeground; headerStyle.Alignment = HorizontalAlignment.Center; var headerFont = _workbook.CreateFont(); headerFont.Color = NPOI.HSSF.Util.HSSFColor.White.Index; headerStyle.SetFont(headerFont); var row = accountSheet.CreateRow(0); cell = row.CreateCell(0); cell.SetCellValue($"{accountNumber.stringifyAccountNumber()}-{account.Description}"); cell.CellStyle = headerStyle; accountSheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 6)); accountSheet.CreateRow(1); _addInvoiceHeader(ref accountSheet, 2); row = accountSheet.CreateRow(6); cell = row.CreateCell(8); cell.SetCellValue("Monthly Totals"); cell.CellStyle = _monthlyHeaderStyle; cell = row.CreateCell(9); cell.CellStyle = _monthlyHeaderStyle; accountSheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(6, 6, 8, 9)); row = accountSheet.CreateRow(7); cell = row.CreateCell(8); cell.SetCellValue("Month"); cell = row.CreateCell(9); cell.SetCellValue("Actual"); //The last month is an emtpy string, so be sure to take that into account var months = (new System.Globalization.CultureInfo("en-US")).DateTimeFormat.MonthNames; var rowNumber = 3; for (var i = 0; i < months.Length - 1; i++) { rowNumber = _addMonthlyInvoices(ref accountSheet, rowNumber, account, i, months[i]); _addMonthlyAccountSummaryCell(ref accountSheet, rowNumber, i, months[i]); } _addAccountBudget(ref accountSheet, account); _addBudgetTotal(ref accountSheet); }
public List <Ticket> GetTicketsForAccount(AccountNumberTemplate accountNumber, bool onlyPending = false) { var tickets = new List <Ticket>(); foreach (var ticket in _ticketRepository.GetTicketsForAccount(accountNumber.AccountNumber.Value, accountNumber.SubNo, accountNumber.ShredNo, onlyPending)) { tickets.Add(Ticket.MapFromEntity(ticket)); } return(tickets); }
private decimal _getAccountTransferAmount(AccountNumberTemplate accountNumber) { decimal total = 0; //Get Transfers From (-) //This could be generated by adding up the expeditures of all the childern plus the expeditures for this account. This works for now. foreach (var transfer in _transferManager.GetAccountTransfers(accountNumber)) { total += transfer.Amount; } return(total); }
public IActionResult GetAccount(string accountNumber) { var parsedAccountNumber = new AccountNumberTemplate(accountNumber); if (!parsedAccountNumber.IsValid()) { return(BadRequest("Account Number is invalid")); } var account = _accountManager.GetAccountDetails(parsedAccountNumber); var response = AccountDetails.MapFromObject(account, _responseGenerator); return(Ok(response)); }
private Dictionary <int, MonthlyBreakdown> _addTransfersToMonthlyBreakdown(AccountNumberTemplate accountNumber, Dictionary <int, MonthlyBreakdown> monthlyBreakdown) { var transfers = _transferManager.GetAccountTransfers(accountNumber); foreach (var transfer in transfers) { var month = transfer.DateCreated.Month; var currentBreakdown = monthlyBreakdown[month]; currentBreakdown.Transfers.Add(transfer); monthlyBreakdown[month] = currentBreakdown; } return(monthlyBreakdown); }
/// <summary> /// Retrieves the list of all Invoices that fall under the provided account. /// </summary> public List <Invoice> GetInvoicesForAccount(AccountNumberTemplate accountNumber) { var invoices = new List <Invoice>(); var invoiceEntities = _invoiceRepository.GetInvoicesForAccount(accountNumber.AccountNumber.Value, accountNumber.SubNo, accountNumber.ShredNo); //Dedupe Id's invoiceEntities = invoiceEntities.GroupBy(entity => entity.InvoiceId).Select(entity => entity.First()).ToList(); foreach (var invoiceEntity in invoiceEntities) { var invoice = Invoice.MapFromEntity(invoiceEntity); //Remove AccountTotals/Expenses associated with this invoice that don't match the mapping of the provided account number invoice.AccountTotals.RemoveAll(accountTotal => !_isMatchingAccount(accountTotal.Account, accountNumber)); invoices.Add(invoice); } return(invoices); }
private bool _isMatchingAccount(Account account, AccountNumberTemplate accountNumber) { if (accountNumber.ShredNo.HasValue) { return(account.ShredNo == accountNumber.ShredNo && account.SubNo == accountNumber.SubNo && account.AccountNumber == accountNumber.AccountNumber); } else if (accountNumber.SubNo.HasValue) { return(account.SubNo == accountNumber.SubNo && account.AccountNumber == accountNumber.AccountNumber); } else if (accountNumber.AccountNumber.HasValue) { return(account.AccountNumber == accountNumber.AccountNumber); } return(false); }
public decimal GetExpedituresToDate(AccountNumberTemplate accountNumber) { decimal expenditures = 0; foreach (var invoice in _invoiceManager.GetInvoicesForAccount(accountNumber)) { foreach (var accountExpense in invoice.AccountTotals) { expenditures += accountExpense.Expense; } } foreach (var ticket in _ticketManager.GetTicketsForAccount(accountNumber, true)) { expenditures += ticket.Cost; } return(expenditures); }
public IActionResult InvoicesForAccounts(string accountNumber) { var parsedAccountNumber = new AccountNumberTemplate(accountNumber); if (!parsedAccountNumber.IsValid()) { return(BadRequest("Account Number is invalid")); } var invoices = _invoiceManager.GetInvoicesForAccount(parsedAccountNumber); var response = new List <InvoiceBasic>(); foreach (var invoice in invoices) { var flattenedInvoices = _responseGenerator.GenerateBasicInvoices(invoice); response = response.Concat(flattenedInvoices).ToList(); } return(Ok(response)); }
private Dictionary <int, MonthlyBreakdown> _addInvoicesToMonthlyBreakdown(AccountNumberTemplate accountNumber, Dictionary <int, MonthlyBreakdown> monthlyBreakdown) { var invoices = _invoiceManager.GetInvoicesForAccount(accountNumber); foreach (var invoice in invoices) { var invoiceMonth = invoice.InvoiceDate.Month; var currentBreakdown = monthlyBreakdown[invoiceMonth]; foreach (var accountExpense in invoice.AccountTotals) { currentBreakdown.TotalExpense += accountExpense.Expense; } currentBreakdown.Invoices.Add(invoice); monthlyBreakdown[invoiceMonth] = currentBreakdown; } return(monthlyBreakdown); }
private Dictionary <int, MonthlyBreakdown> _addTicketsToMonthlyBreakdown(AccountNumberTemplate accountNumber, Dictionary <int, MonthlyBreakdown> monthlyBreakdown) { var tickets = _ticketManager.GetTicketsForAccount(accountNumber); foreach (var ticket in tickets) { var ticketMonth = ticket.Date.Month; var currentBreakdown = monthlyBreakdown[ticketMonth]; //If ticket invoice is not null, then the expense was already counted with the incvoices if (ticket.Invoice == null) { currentBreakdown.TotalExpense += ticket.Cost; } currentBreakdown.Tickets.Add(ticket); monthlyBreakdown[ticketMonth] = currentBreakdown; } return(monthlyBreakdown); }
public Account GetAccountDetails(AccountNumberTemplate accountNumber) { var account = Account.MapFromObject(_accountRepository.Get(accountNumber.AccountNumber.Value, accountNumber.SubNo, accountNumber.ShredNo)); if (account == null) { return(null); } var monthlyBreakdown = _initiateMonthlyBreakdown(); monthlyBreakdown = _addInvoicesToMonthlyBreakdown(accountNumber, monthlyBreakdown); //Invoice monthlyBreakdown = _addTicketsToMonthlyBreakdown(accountNumber, monthlyBreakdown); //Ticket monthlyBreakdown = _addTransfersToMonthlyBreakdown(accountNumber, monthlyBreakdown); //Transfer account.MonthlyDetails = monthlyBreakdown; account.ExpedituresToDate = _getMonthlyBreakdownTotalExpense(account.MonthlyDetails); account.Transfers = _getAccountTransferAmount(accountNumber); return(account); }