First of all let me say that I am not the owner or project manager of my company, but i'm pretty much the only "programmer" on staff, so I don't have final say but I do have some input:
We are getting a lot of jobs where another company installs equipment and sells an MX3000 with sub-par programming, and we are called upon to re-program the remote. The issue is how to charge for our time:
The theory from the bosses is that we should simply charge by the hour for any time we spend and not contract for a fixed price. The problem is whether we give them out-of-the-box graphics and difficult-to-use programming since they are paying by the hour (assume about 2 hours) or do we program the remote the way we think it should be, re-wire the system as needed, and research discrete codes, use on-screen help pages, etc. (think 8+ hours or even more given the complexity).
As a programmer, the last thing I want to do is hand a customer an invoice for a full day of work only to have them question whether they really "needed" all those extra buttons, or well-layed-out graphics (we use our own templates) etc.
In the past we contracted "per device" (think about two hours per device at around 85 per hour) ... this gives us room to "tweak" if the device has particularly finicky IR codes or needs to be re-connected. We gave a quote and with an idea of how many hours I could spend, I gave the best remote in the time alotted.