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;
    }
Ejemplo n.º 2
0
    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;
        }
    }
Ejemplo n.º 3
0
        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);
        }