Three oranges for a dollar

One of my favorite questions that arise around Projector is what we call the "Three oranges for a dollar" problem. The name comes from the common scenario of grocery stores having sales where the product does not divide evenly into the price. There are different ways a grocery store could solve this problem. They can charge $0.34 for the first orange, then $0.33 for the next two. They could charge the normal rate of $0.45 for the first two, then $0.10 for the third. But in every case they are charging a round number, since they can't bill fractional pennys.

The reason this question comes up is because of how Projector handles invoicing time cards. The questions we typically get sound like:

  1. There was 10 hours of work done at $133.33 an hour. How come the invoice total isn't $1,333.30?
  2. How come the hours * rate for this time card doesn't equal the total?

These questions arise because Projector has chosen to bill each individual time card as a single, autonomous unit.

Let's look deeper into example 1 above. The 10 hours is comprised of multiple time cards. Your expectation is that Projector adds up all the time cards, multiplies by the rate, and then you get your invoice total. However, Projector does not operate this way. Instead, it looks at each individual time card and figures out how much to charge, including rounding. One half hour of work at 133.33 equals 66.665. Just like the grocery store can't charge $0.33333 for an orange, Projector does not charge $66.665. We round up to $66.67. As time cards round up, your total starts getting pushed "off" by pennies.

So why does Projector invoice each time card by itself and introduce rounding? This was a conscious decision on our part. With revenue assigned to an individual card, the card can be routed anywhere we want it. For example, five resources get their revenue routed to their own cost center. This also confers a major reporting advantage to Projector that other PSA software cannot accomplish. Because each card is autonomous, it can be grouped with any other cards that have similar metadata. So a Projector report can show you revenue a hundred different ways (Rate Type, Task Type, Resource, Cost Center, Engagement Type, Department, Title, Location, etc, etc, etc) and even bisect that data. Other systems force you to choose a revenue allocation method and then you are limited to that view.

In addition, by treating each card as a fully autonomous unit, it allows you to make modifications independent of all other cards. Let me explain why that is important. Let's say you did treat the cards as a group. In this case, editing one card can have an effect on the entire group. This raises a couple issues that need to be handled:

  • If you have time cards with a like rate, how do they get grouped together? Or in other words, if both apples and oranges are three for a dollar, can you substitute them for one another? How is Projector supposed to group time cards? By task, resource, project, or something else?
  • If you create a credit time card, what should it's value be? What if that credit affects the value of the previous group?

So with all that background out of the way, what are you supposed to do when you want to invoice cards by the group? Simply select the group of cards on your invoice and perform a write up/down adjustment to a specific value. In this way you choose the appropriate grouping (project, resource, etc) and you get the value you want. Projector may need to add or subtract a penny from a few time cards to make the group total work out. That adding/subtracting a penny is why point number 2 we brought up in the first half of this article occurs.