Integrated cost tracking module
Being that Redmine is a project management web application, I believe that it could benefit significantly from including cost tracking. Along with scope and time, tracking project costs is often considered to be one of the "triple constraints" on a project (see project management triangle)
While I am aware of the existence of various plug-ins which provide such functionality (Rate, Budget, Developer rates etc.) I would continue to argue for inclusion in the main trunk for the following reasons:
- Tracking costs is so central to project management, it is likely to be utilized by enough individuals to warrant being provided out-of-the-box
- Having a cost tracking as part of the core protects against the deprecation which all plug-ins are vulnerable to
- Having good foundational cost tracking gives not only cost-related plug-in developers a strong base to build from, but something consistent for plug-ins that are not directly related to cost to use (for example, plug-ins which export Redmine to Project 2007 format etc.)
I have been considering why cost tracking is not currently part of Redmine and have theorized that it may be because it is seen as potentially disruptive to those who are not interested in the feature. If this is the case, I would like to contend that cost tracking can be implemented in a way that has no impact at all on those who choose not to use it, even between multiple projects on the same instance of Redmine.
Generally, cost tracking would be heavily based off of the existing "time tracking" module.
The aim of this proposal is not to provide an all-encompassing solution for costs within a project, but to cover the 80-20 rule and provide a strong common base for other plug-ins to enhance if needed.
New fields / tabs¶
- A new enumeration set, "Expenditures (cost tracking)", is added
- A new project module "Cost tracking" is added; if the user chooses to enable cost tracking for their project then:
- The project settings gets a new tab: "Expenditures (cost tracking)" which pulls its applicable values from the new enumeration set
- The project settings members tab gets a new field for each user: "hourly rate"
- Each issue on the project gets two new fields: "estimated cost" and "spent cost"
How estimated cost is determined¶
When an issue is being updated, there will be two relevant fields shown to the editor, a simple numerical text field for adding an estimated cost, and a check-box which asks if they want Redmine to add a calculated estimate based on the assignee's rate and the estimated time.
This allows the user to specify either a hard estimate, an estimate based of just the calculated work (by leaving the text field either 0 or blank and the check-box checked), or a combination of the two (for example, an estimate for an issue which includes labor and materials).
How spent cost is determined¶
Spent cost has two components which it summarizes: work performed (requires time tracking) and logged costs.
If time tracking is enabled, whenever a new time spent entry is logged, the assignee's current assigned rate will be also be recorded and shown as the last column. The cost of work performed is then a simple matter of summarizing the hours * rate for each logged entry.
Logged costs are tracked almost identically to logged time. The only differences are that the "Hours" field is removed and the "Activity" enumeration is replaced with the "Expenditure" enumeration.
If values for both work performed and logged costs are present, spent cost will be a simple addition of the two.
Like spent time, spent cost propagates upwards through parent issues and a summary is displayed on the project overview page.