Were a team of a few programmers working on different projects, enhancing current features adding new features and of course fixing bugs as they come to our attention.Problem is that we need a way to efficiently divide the time available between the various tasks. we cant work a few weeks on bug fixes and let all new features waiting, and the same is true for bugs it cant wait for too long before getting fixed, thats why we need to find a tool to divide the time.Our plan is to add an estimate for each task and categorize it accordingly, this part is available in FogBugz and other similar task management tools I tried. The other part I cant find in the tools available is how to assign developers time to the task, and get a report on how much time is left for each category. For instance I want to divide the available time as; 25% Bug Fixes50% New Features25% Enhance current featuresSo the tool should calculate all tickets estimates, and tell me how much time I have available. Were open to hear other suggestions on how to manage time available against different various task types, if thats not the standard way of doing it. 
Divide time available by task type
project management;teamwork;time management
You will find that it is nearly impossible to plan the work down to the granularity that you are proposing.If you want to have the flexibility to respond quickly to changing requests from the business, while still giving the developers the stability that they can finish what they are working on before being asked to switch to a different task, then I would advice to take a look at Agile methods and Scrum in particular.In Scrum, the team works in short iterations (between 1 and 4 weeks in length).You would put all your bugs, new features and feature improvements in one big list and order that list in the order that gives the most value to the business. Then at the start of an iteration, the team takes as much work from the top of the list as they can handle in one iteration.During an iteration, you can't change what the team is working on, so if an important bug comes in you can put it on top of the list and it will stay there at most for the duration of one iteration (half an iteration on average).