private void PopulateClaims(AttestableItems items) { ExpenseClaims allClaims = ExpenseClaims.FromOrganization(Organization.PPSE); ExpenseClaims unattestedClaims = new ExpenseClaims(); // LINQ would be nice here. "Where Attested=0". foreach (ExpenseClaim claim in allClaims) { if (!claim.Attested && claim.Open) { if (attestationRights.ContainsKey(claim.BudgetId)) { unattestedClaims.Add(claim); } } } unattestedClaims.Sort(SortGridClaims); foreach (ExpenseClaim claim in unattestedClaims) { AddAttestableItem(items, claim); } }
private void PopulateGrid() { ExpenseClaims allClaims = ExpenseClaims.FromOrganization(Organization.PPSE); allClaims.Sort(SortGridItems); this.GridExpenseClaims.DataSource = allClaims; }
public static ExpensePayouts FromOrganization(int organizationId) { // This aggregates a list of all pending expense payouts per person, // and returns an ExpensePayouts object. // It uses a Dictionary<int, List<ExpenseClaim>> to build the data, iterating over // all expenses, where the int key is the person identity. ExpenseClaims allExpenseClaims = ExpenseClaims.FromOrganization(Organization.FromIdentity(organizationId)); Dictionary <int, ExpenseClaims> aggregation = new Dictionary <int, ExpenseClaims>(); ExpensePayouts result = new ExpensePayouts(); // Aggregate per person foreach (ExpenseClaim expense in allExpenseClaims) { if (expense.Approved && expense.Open) { // Ready for payout if (!aggregation.ContainsKey(expense.ClaimingPersonId)) { aggregation[expense.ClaimingPersonId] = new ExpenseClaims(); } aggregation[expense.ClaimingPersonId].Add(expense); } } // Create ExpensePayout objects foreach (int personId in aggregation.Keys) { result.Add(new ExpensePayout(Person.FromIdentity(personId), aggregation[personId])); } return(result); }
public static ExpensePayout FromOrganizationAndPerson(int organizationId, int personId) { ExpenseClaims allExpenseClaims = ExpenseClaims.FromOrganization(Organization.FromIdentity(organizationId)); ExpenseClaims expenseClaims = new ExpenseClaims(); // Aggregate per person foreach (ExpenseClaim expense in allExpenseClaims) { if (expense.ClaimingPersonId == personId) { if (expense.Approved && expense.Open) { // Ready for payout expenseClaims.Add(expense); } } } // Create ExpensePayout object return(new ExpensePayout(Person.FromIdentity(personId), expenseClaims)); }
public static ExpenseClaim[] SelectUnapprovedByOrganization(int organizationId) { return(ExpenseClaims.FromOrganization(Organization.FromIdentity(organizationId)).WhereUnapproved.ToArray()); }
private void PopulateDebugInfo() { debugLookup = new Dictionary <int, DebugInfoLine>(); ExpenseClaims expenseClaims = ExpenseClaims.FromOrganization(Organization.PPSE); InboundInvoices inboundInvoices = InboundInvoices.ForOrganization(Organization.PPSE); Salaries salaries = Salaries.ForOrganization(Organization.PPSE); Payouts payouts = Payouts.ForOrganization(Organization.PPSE); debugLookup[Organization.PPSE.FinancialAccounts.DebtsExpenseClaims.Identity] = new DebugInfoLine(); debugLookup[Organization.PPSE.FinancialAccounts.DebtsInboundInvoices.Identity] = new DebugInfoLine(); debugLookup[Organization.PPSE.FinancialAccounts.CostsAllocatedFunds.Identity] = new DebugInfoLine(); debugLookup[Organization.PPSE.FinancialAccounts.DebtsSalary.Identity] = new DebugInfoLine(); debugLookup[Organization.PPSE.FinancialAccounts.DebtsTax.Identity] = new DebugInfoLine(); foreach (Payout payout in payouts) { foreach (ExpenseClaim claim in payout.DependentExpenseClaims) { debugLookup[Organization.PPSE.FinancialAccounts.DebtsExpenseClaims.Identity].Payouts -= claim.Amount; } foreach (InboundInvoice invoice in payout.DependentInvoices) { debugLookup[Organization.PPSE.FinancialAccounts.DebtsInboundInvoices.Identity].Payouts -= (decimal)invoice.Amount; } foreach (Salary salary in payout.DependentSalariesNet) { debugLookup[Organization.PPSE.FinancialAccounts.DebtsSalary.Identity].Payouts -= salary.NetSalaryDecimal; } foreach (Salary salary in payout.DependentSalariesTax) { debugLookup[Organization.PPSE.FinancialAccounts.DebtsTax.Identity].Payouts -= salary.TaxTotalDecimal; } } foreach (ExpenseClaim claim in expenseClaims) { if (claim.Open) { AddExpenseToDebug(claim); } } foreach (InboundInvoice invoice in inboundInvoices) { AddInboundInvoiceToDebug(invoice); } foreach (Salary salary in salaries) { AddSalaryNetToDebug(salary); AddSalaryTaxToDebug(salary); } List <DebugInfoLine> debugInfoLines = new List <DebugInfoLine>(); foreach (int accountId in debugLookup.Keys) { debugLookup[accountId].AccountId = accountId; debugLookup[accountId].Actual = FinancialAccount.FromIdentity(accountId).GetDelta(new DateTime(2006, 1, 1), DateTime.Today.AddDays(2)); // two days to account for all possible time zones } foreach (DebugInfoLine line in debugLookup.Values) { debugInfoLines.Add(line); } this.GridDebug.DataSource = debugInfoLines; }