It took a while to release the new version of Costs, and it has a slightly peculiar version, due to 2 improvements we have finally managed to merge into the same public release,  after several internal versions.

This post is meant to be both a new feature log and a user manual, which Costs currently misses.

About Costs

Costs is a GLPI plugin, addressing 2 missing features in GLPI core:

  1. Set costs value in value.
  2. Auto-assign costs to tickets, based on ticket tasks duration.

About the new release: Costs 2

The first Costs release was basically a way to set a default value for costs, and generate ticket charges into the native GLPI costs field.

In this new version, we can even assign a different cost per profile and entity!

So, let’s walk through this enhanced plugin, but before moving forward:

Please test this plugin before moving it into production.

New features

Cost per Profile + Entity

In the Costs tab of the chosen entity, we can associate a cost per profile: We select the desired profile and mark the fixed cost and the desired hourly cost; to apply, we set the option added.

This profile is applied if it is configured and the technician has the profile assigned as default, otherwise, the global or entity profile will be applied. In the “Costs” tab of the TICgalDemo entity, we configure a fixed cost of 30 and per time of 50 for the Technician profile.

->  Access to timezone database (mysql) is not allowed

My user, Daniel, with the technician profile, performs a one-hour task and custom cost is applied.

In the Costs tab, we have the personalized cost per profile completely automatically:

Cost per Entity

A cost setting per entity (and its child entities) can now be applied. Set a global cost in the parent entity or different ones for each of them.

What does each option mean?

  • Inheritance of the parent entity: If this option is activated, the configuration of the parent entity is applied. To configure a different cost, this option must be deactivated.
  • Fixed cost: A predetermined fixed price for each ticket task. (Optional)
  • Time cost: The default price per hour.
  • Private task: You might not want to charge the time involved in private tasks. If this is the case set Private task to No.
  • Auto billable ticket: If this option is marked as Yes, the plugin will set the Billable flag to Yes, and apply costs to all new tickets. This flag can be changed on each ticket; check the next section for additional info.

Global cost

This is the If the user does not have a default profile with a configured cost, the plugin obtains the cost of the configuration of the entity (if a cost per entity has been established) or from the root entity (if a global cost has been established).

For instance, in this ticket, a task of 1 hour and 30 minutes has been created.

And  Global Default Costs has been applied.

Let’s wrap Costs Assignment Priority up with this graph

Set a single ticket as billable

For each ticket, in the Ticket tab, you can granularly decide if this particular one will or will not have costs applied by setting the Dropdown Billable, superseding the default setting for the entity configured in the entity.

->  java.security.cert.CertPathValidatorException: Trust anchor for certification path not found

Add the description of the task in the cost.

Until now, we have identified each cost with a chain made up of:

[Task Number] _ [Technician ID]

With this global setting checked as Yes, the costs will take the name of the task text.

New costs report

If you have the Reports plugin installed, you will also enjoy a new on-screen report showing costs per tech.

Wrapping up

Besides other minor features, granular costs assignment was a missing GLPI feature for a long time. Not any more!

Remember backup before upgrading. This is a somehow tricky migration.

We want to thank the sponsors of these features. We are positive their financial contributions are beneficial to the entire GLPI community.

That’s all. We hope you find it useful. Friendly reminder that, if you want a new feature, you can contribute with a PR to the public repository or you can sponsor it.