john d markers' weblog

Saturday, December 31, 2005

Bill Tracker

Household, Person, Bill, Membership, Share, Payment and the relationships between them. Figure: Household, Person, Bill, Membership, Responsibility and the relationships between them.
This could be a useful around-the-house application. It's meant to track the paying of bills by roommates and the subsequent paying of roommates by roommates. The motivation to use it is that people owe you money, and this is how you demonstrate that to them. Here's a quick story list:
  • As a user, I need to be able to log in and see how much I owe others, and how much I am owed by others.
  • As a user, I need to be able to enter payments by me to others and by others to me.
  • As a user, I should be notified if a payment I enter appears to be a duplicate of another payment so that the two participants in a transaction don't both enter the same payment.
  • As a household member, I should be able to end my own and others' memberships in my household so that the removed member no longer shares in bills for the household.
  • As a household member, I should be able to create new memberships in my household for new or existing users.
Update 12/31: So Membership and Share are both diamond shaped to reflect that they are relationships, but in both cases I think they're entities worth take advantage of. I may remove the relationship between the two, however. I had in mind that a Person's Share in a Bill would be in virtue of a certain Membership in the Household. For flexibility's sake, that should at least be optional. If I pay for H's dinner and drinks one night, I want to be able to apply that to whatever money we owe one another. So Bills can be recurring or non-recurring expenses of whatever sort that someone in the household has paid or will pay. How might I want to split a bill?
  • As a user, I want to be able to divide a bill in the following ways:
    • evenly among current household members,
    • evenly among some current and some former household members,
    • arbitrarily among a random group of people.
tagged software project

0 Comments:

Post a Comment



Links to this post:

Create a Link

<< Home