Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }