private void PopulateGrid() { string personIdString = Request.QueryString["PersonId"]; string organizationIdString = Request.QueryString["OrganizationId"]; Person person = Person.FromIdentity(Int32.Parse(personIdString)); Organization organization = Organization.FromIdentity(Int32.Parse(organizationIdString)); this.LabelOrganization.Text = organization.Name; this.LabelDebtor.Text = person.Canonical; ExpenseClaims allClaims = ExpenseClaims.FromClaimingPersonAndOrganization(person, organization); // again, this needs a "get open only" ExpenseClaims gridClaims = new ExpenseClaims(); foreach (ExpenseClaim claim in allClaims) { // If ready for payout, add to list. if (claim.Open) { if (claim.Attested && claim.Validated && !claim.Repaid) { gridClaims.Add(claim); } } } // Now, we have grouped all ready but unsettled expenses per person. Let's add only those with a positive debt to the final list. gridClaims.Sort(SortGridItems); this.GridDebts.DataSource = gridClaims; }
private void PopulatePreattested() { ExpenseClaims allClaims = ExpenseClaims.FromClaimingPersonAndOrganization(_currentUser, Organization.PPSE); ExpenseClaims preAttested = new ExpenseClaims(); foreach (ExpenseClaim claim in allClaims) { if (claim.Open && claim.Attested && !claim.Claimed) { preAttested.Add(claim); } } if (preAttested.Count > 0) { this.RadioPreattested.Checked = true; this.RadioNewClaim.Checked = false; this.DropPreattested.Items.Clear(); this.DropPreattested.Items.Add(new ListItem("-- Select One --", "0")); foreach (ExpenseClaim claim in preAttested) { this.DropPreattested.Items.Add(new ListItem(string.Format("Up to {0:N2}: {1} ({2})", claim.Amount, claim.Description, claim.Budget.Name), claim.Identity.ToString())); } this.DropPreattested.SelectedIndex = 0; } else { this.RadioNewClaim.Checked = true; this.RadioPreattested.Checked = false; this.RadioPreattested.Enabled = false; this.DropPreattested.Items.Clear(); this.DropPreattested.Items.Add(new ListItem("-- None --", "0")); this.DropPreattested.Enabled = false; } }
private void AddAdvanceDebts(Person person, Organization organization) { TaskGroup group = new TaskGroup(TaskGroupType.DeclareAdvanceDebts); // TODO: One task group for each organization, actually ExpenseClaims claims = ExpenseClaims.FromClaimingPersonAndOrganization(person, organization); decimal debt = 0.0m; foreach (ExpenseClaim claim in claims) { if (claim.Open && claim.Attested && claim.Validated && claim.Claimed) { debt += -claim.Amount; } } if (debt > 0.0m) { group.Tasks.Add(new TaskAdvanceDebt(debt)); Add(group); } }
public List <PaymentHistoryLineItem> GetAmountsOwed() { List <PaymentHistoryLineItem> items = new List <PaymentHistoryLineItem>(); // Expense claims ExpenseClaims expenses = ExpenseClaims.FromClaimingPersonAndOrganization(_person, _authenticationData.CurrentOrganization); foreach (ExpenseClaim claim in expenses) { if (claim.Open || claim.PaidOut) // if both these are false, the claim was denied and shouldn't be listed { PaymentHistoryLineItem newItem = new PaymentHistoryLineItem(); newItem.Id = "E" + claim.Identity.ToString(CultureInfo.InvariantCulture); newItem.Name = String.Format(Resources.Global.Financial_ExpenseClaimLongSpecification, claim.Identity); newItem.Description = claim.Description; newItem.OpenedDate = claim.CreatedDateTime; newItem.OwedToPerson = claim.AmountCents; Payout payout = claim.Payout; if (payout != null && payout.Open == false) { _payoutLookup[payout.Identity] = payout; newItem.ClosedDate = payout.FinancialTransaction.DateTime; } items.Add(newItem); } } // Salaries Salaries salaries = Salaries.ForPersonAndOrganization(_person, _authenticationData.CurrentOrganization, true); foreach (Salary salary in salaries) { if (salary.Open || salary.NetPaid) // either of these must be open for the salary to be valid { PaymentHistoryLineItem newItem = new PaymentHistoryLineItem(); newItem.Id = "S" + salary.Identity.ToString(CultureInfo.InvariantCulture); newItem.Name = Resources.Global.Financial_Salary; newItem.Description = String.Format(Resources.Global.Financial_SalaryDualSpecification, salary.Identity, salary.PayoutDate); newItem.OwedToPerson = salary.NetSalaryCents; FinancialTransaction openTx = FinancialTransaction.FromDependency(salary); if (openTx != null) { newItem.OpenedDate = openTx.DateTime; } Payout payout = Payout.FromDependency(salary, FinancialDependencyType.Salary); if (payout != null && payout.Open == false) { _payoutLookup[payout.Identity] = payout; newItem.ClosedDate = payout.FinancialTransaction.DateTime; } items.Add(newItem); } } // Cash advances CashAdvances advances = CashAdvances.ForPersonAndOrganization(_person, _authenticationData.CurrentOrganization, true); foreach (CashAdvance advance in advances) { if (advance.Open || advance.PaidOut) { Payout payout = advance.PayoutOut; if (payout != null) { _payoutLookup[payout.Identity] = payout; _payoutDescriptionOverride[payout.Identity] = String.Format(Resources.Global.Financial_CashAdvanceSpecification, advance.Identity.ToString("N0")); } } } return(items); }