Пример #1
0
    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()
    {
        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;
    }
Пример #3
0
        public SampleData()
        {
            var designService = new DesignExpenseClaimService();

            foreach (var item in designService.GetExpenseClaimsForStatus("Open").Result)
            {
                ExpenseClaims.Add(item);
            }
            foreach (var item in designService.GetMostRecentExpenseClaimsByStatus().Result)
            {
                GroupedExpenseClaims.Add(item);
            }
        }
Пример #4
0
        private void LoadDependencies()
        {
            DependentExpenseClaims = new ExpenseClaims();
            DependentInvoices = new InboundInvoices();
            DependentSalariesNet = new Salaries();
            DependentSalariesTax = new Salaries();
            DependentCashAdvancesPayout = new CashAdvances();
            DependentCashAdvancesPayback = new CashAdvances();

            BasicFinancialDependency[] dependencies = SwarmDb.GetDatabaseForReading().GetPayoutDependencies(this.Identity);

            foreach (BasicFinancialDependency dependency in dependencies)
            {
                switch (dependency.DependencyType)
                {
                    case FinancialDependencyType.ExpenseClaim:
                        DependentExpenseClaims.Add(ExpenseClaim.FromIdentity(dependency.ForeignId));
                        break;
                    case FinancialDependencyType.InboundInvoice:
                        DependentInvoices.Add(InboundInvoice.FromIdentity(dependency.ForeignId));
                        break;
                    case FinancialDependencyType.Salary:
                        Salary salary = Salary.FromIdentity(dependency.ForeignId);
                        if (salary.NetSalaryCents == this.AmountCents)  // HACK: Assumes that tax total is not identical
                        {
                            DependentSalariesNet.Add(salary);
                        }
                        else
                        {
                            DependentSalariesTax.Add(salary);
                        }
                        break;

                    case FinancialDependencyType.CashAdvance:
                        DependentCashAdvancesPayout.Add(CashAdvance.FromIdentity(dependency.ForeignId));
                        break;

                    case FinancialDependencyType.CashAdvancePayback:
                        DependentCashAdvancesPayback.Add(CashAdvance.FromIdentity(dependency.ForeignId));
                        break;

                    default:
                        throw new NotImplementedException("Unknown financial dependency type in Payout.LoadDependencies(): " + dependency.ToString());
                }
            }
        }
    private void PopulateGrid()
    {
        ExpenseClaims allClaims = ExpenseClaims.ForOrganization(Organization.PPSE);

        ExpenseClaims unvalidatedClaims = new ExpenseClaims();

        // LINQ would be nice here. "Where Validated=0".

        foreach (ExpenseClaim claim in allClaims)
        {
            if (!claim.Validated)
            {
                unvalidatedClaims.Add(claim);
            }
        }

        unvalidatedClaims.Sort(SortGridItems);

        this.GridExpenseClaims.DataSource = unvalidatedClaims;
    }
    private void PopulateGrid()
    {
        ExpenseClaims allClaims = ExpenseClaims.ForOrganization(Organization.PPSE);

        ExpenseClaims unvalidatedClaims = new ExpenseClaims();

        // LINQ would be nice here. "Where Validated=0".

        foreach (ExpenseClaim claim in allClaims)
        {
            if (!claim.Validated)
            {
                unvalidatedClaims.Add(claim);
            }
        }

        unvalidatedClaims.Sort(SortGridItems);

        this.GridExpenseClaims.DataSource = unvalidatedClaims;
    }
Пример #7
0
    private void PopulateGrid()
    {
        ExpenseClaims allClaims = ExpenseClaims.FromClaimingPerson(_currentUser);

        ExpenseClaims gridData   = new ExpenseClaims();
        DateTime      oneYearAgo = DateTime.Today.AddYears(-1);

        foreach (ExpenseClaim claim in allClaims)
        {
            // Add those that are less than a year old AND/OR not repaid yet.

            if (claim.ExpenseDate > oneYearAgo || claim.Open)
            {
                gridData.Add(claim);
            }
        }

        gridData.Sort(SortGridItems);

        this.GridExpenseClaims.DataSource = gridData;
        this.GridExpenseClaims.Rebind();
    }
Пример #8
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;
        }
    }
Пример #9
0
        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));
        }
Пример #10
0
		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);
		}
Пример #11
0
        public static void ProcessExpensesRepaidClosed (BasicPWEvent newPwEvent)
        {
            Person expenser = Person.FromIdentity(newPwEvent.AffectedPersonId);
            Person payer = Person.FromIdentity(newPwEvent.ActingPersonId);

            // The ParameterText field is like a,b,c,d where a..d are expense IDs

            string[] idStrings = newPwEvent.ParameterText.Split(',');

            ExpenseClaims expenseClaims = new ExpenseClaims();
            decimal totalAmount = 0.0m;

            foreach (string idString in idStrings)
            {
                ExpenseClaim newExpenseClaim = ExpenseClaim.FromIdentity(Int32.Parse(idString));
                totalAmount += newExpenseClaim.Amount;
                expenseClaims.Add(newExpenseClaim);
            }

            string body = "The following expenses, totaling " + totalAmount.ToString("#,##0.00") +
                          ", have been repaid to your registered account, " + expenser.BankName + " " +
                          expenser.BankAccount + ".\r\n\r\n";

            body += FormatExpenseLine("#", "Description", "Amount");
            body += FormatExpenseLine("===", "========================================", "=========");

            foreach (ExpenseClaim expense in expenseClaims)
            {
                body += FormatExpenseLine(expense.Identity.ToString(), expense.Description,
                                          expense.Amount.ToString("#,##0.00"));
            }

            body += FormatExpenseLine("---", "----------------------------------------", "---------");

            body += FormatExpenseLine(string.Empty, "TOTAL", totalAmount.ToString("#,##0.00"));

            body += "\r\nIf you see any problems with this, please contact the treasurer, " + payer.Name + ", at " +
                    payer.PartyEmail + ". Thank you for helping the pirate movement succeed.\r\n";

            new MailTransmitter(Strings.MailSenderNameFinancial, Strings.MailSenderAddress,
                                                       "Expenses Repaid: " + totalAmount.ToString("#,##0.00"), body,
                                                       expenser, true).Send();
        }
Пример #12
0
    private void PopulateGrid()
    {
        ExpenseClaims allClaims = ExpenseClaims.FromClaimingPerson(_currentUser);

        ExpenseClaims gridData = new ExpenseClaims();
        DateTime oneYearAgo = DateTime.Today.AddYears(-1);

        foreach (ExpenseClaim claim in allClaims)
        {
            // Add those that are less than a year old AND/OR not repaid yet.

            if (claim.ExpenseDate > oneYearAgo || claim.Open)
            {
                gridData.Add(claim);
            }
        }

        gridData.Sort(SortGridItems);

        this.GridExpenseClaims.DataSource = gridData;
        this.GridExpenseClaims.Rebind();
    }
Пример #13
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;
        }


    }