Project

General

Profile

Billable Activities

Added by Eric Davis about 15 years ago

I'm about to start on a new set of features for a customer and I wanted to get some feedback on my ideas. Some of the features aren't generic enough to be in the Redmine core but a few features could be useful in the core. Then I can put the custom features into a plugin that others can use.

Billable Activities

The main feature is, being able to track billable time based on a project specific set of activities. This means that instead of tracking if each individual Time Entry is "billable", all Time Entries in a project belonging to a billable Activity would be billable. Each project would be able to manage which Activities are billable and also which Activities are shown for the project. Example:

Project A's activities:

  • Development - Billable
  • Design - Billable
  • Project Management - Non Billable

Project B's activities:

  • Development - Billable
  • Design - Non Billable
  • Project Management - Non Billable

Project C's activities:

  • Design - Billable
  • Project Management - Billable
  • (Notice there is no Development activity)

After thinking through a few ideas, my idea to implement this feature would be:

Redmine Core

Allow custom fields on Activities (Enumerations)

This would let us define the "Billable" field. This would also let anyone else extend Activities or add their own data to them.

Allow Activities (Enumerations) to be activated per project

This would allow different projects to use a subset of activities. By default each project would use the full list from Administration.

Allow Activities' (Enumerations) custom data to be changed per project

This would allow different projects to redefine custom data for an Activity without affecting the system version. By default each project would use the value set in Administration.

Wrap the current Activities inside a Project

So instead of having Redmine list "What are the Activities?", it would list "What are the Activities for Project A?". Like above, this would default to all the Activities.

Add a Project settings tab for Activities

This tab would let a project admin enable/disable an Activity for the project and also edit the custom fields for the project.

Plugin:

Once these changes are in the core, the custom business logic can be contained in a plugin to fully support billable/non-billable activities.

In the process of making these core changes, it wouldn't be much work to add similar changes for the other Enumerations (Document Categories, Issue Priorities).

So what does everyone think? Would the core changes I'm proposing be useful? Are there any other ways to approach this problem that would be easier?

Eric


Replies (2)

RE: Billable Activities - Added by Eric Davis about 15 years ago

I'm taking the absence of feedback to be agreement with the implementation idea.

Eric

RE: Billable Activities - Added by Remo Laubacher over 14 years ago

I started to build something very similar a while ago but then stopped because of my limited ruby skills. What you describe does everything and more I was looking for.

I do understand why you would like to have attributes on the activities but for me it would be good enough if I could decide which activities I want to bill at the end of the project. Even if I have to define it several times..

The most important thing is an attribute on time_entries which makes sure I don't bill the same entry twice. But this doesn't need any core changes.
Having a report where I could select the projects, activities and a date range would already be great! Would love to see that!

    (1-2/2)