Before I start, there seems to be a mistake in your calculation because invoice value and purchase are dollar amounts but hours are a number of hours, so your calculation wouldn't make a lot of sense. Therefore, I will assume that you want to track these data separately.
You should use analytic accounting. Create a parent analytic account per customer, and in that account you can have multiple ones if you want to track several different things per customer. You could also have a sub account per job/contract. It is really up to you how you want to organize this hierarchy of accounts. But the way you will want to use them is by specifying these accounts in corresponding PO lines (for what you purchase in amount), SO lines (for what you sell in amount), and contracts (for your hours and to track them). Note that a contract is an analytic account in OpenERP so it will show in your hierarchy if you decide to use them, which can be very convenient. You will then see the result (debit and credit) for each customer or for each job (depending on how you organize your hierarchy of accounts) on the parent account. You can then filter which customers are the most profitable, which ones should be dropped because not profitable, visualize this as graphs, include this in your daily dashboard,...