---
title: "Timesheets"
description: "Temps et facturation. Chaque application est un module sur un même modèle de données."
canonical: "https://obop-platform.sliplane.app/fr/apps/timesheets/"
lang: "fr"
---

# Timesheets

## À quoi elle sert

Record time spent on project tasks in minutes, mark it billable and run it through an approval step. Needs the Projects package.

## Ce que fait et ne fait pas le paquet

Time spent on project tasks, entered in minutes, with a billable flag and an approval step. Needs the Projects package.

## Modèles

### `timesheets_entry`

Time one person spent on one task on one day

Groupe de lecture: `timesheets.user`. Groupe d'écriture: `timesheets.user`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `task_id` | ref → projects_task | `none` | non | `timesheets.user` | en clair | The task worked on |
| `worker` | text | `internal` | oui | `timesheets.user` | masqué | Name of the person who did the work |
| `worked_on` | date | `none` | non | `timesheets.user` | en clair | Day the work was done (YYYY-MM-DD) |
| `minutes` | number | `none` | non | `timesheets.user` | en clair | Time spent, in minutes |
| `billable` | bool | `none` | non | `timesheets.user` | en clair | Whether the time can be charged to the customer |
| `description` | text | `none` | non | `timesheets.user` | en clair | What was done |
| `cost_rate` | money | `financial` | oui | `timesheets.cost_viewer` | non communiqué | Internal hourly cost of the worker at the time of entry (minor currency units, e.g. cents) |
| `state` | select (draft, submitted, approved) | `none` | non | `timesheets.user` | en clair | Entry status: draft, submitted, approved |

## Flux de travail

### `timesheets_entry`

| Action | Transition | Qui peut l'exécuter | Approbation |
|---|---|---|---|
| `timesheets_entry.submit` | state: draft → submitted | `timesheets.user` | non |
| `timesheets_entry.approve` | state: submitted → approved | `timesheets.manager` | non |
| `timesheets_entry.reject` | state: submitted → draft | `timesheets.manager` | non |

## Groupes de permissions

Groupes utilisés par cette application :

- `timesheets.cost_viewer`
- `timesheets.manager`
- `timesheets.user`

## Étapes d'approbation

Aucune étape de cette application ne requiert d'approbation, hormis la suppression d'enregistrements.

## Ce que les agents peuvent et ne peuvent pas faire

Un agent peut lire, rechercher, créer et modifier les enregistrements de cette application, et exécuter les actions qui ne requièrent pas d'approbation, dans les limites des groupes de permissions de son jeton.

Il ne peut que proposer ces étapes, qu'une personne doit approuver : `timesheets_entry.delete`.

Les données personnelles sont masquées sous forme de jetons de substitution : `timesheets_entry.worker`.

Ces champs ne sont pas communiqués aux agents : `timesheets_entry.cost_rate`.

## Dépendances

- `projects`

## Installation

Installez-la depuis l'application Customize (Place de marché), ou en ligne de commande :

```bash
obop modules install-from timesheets
```

Nécessite une base de données et des droits d'administrateur.

## Créer la vôtre

[Le guide des modules montre comment sont écrites les applications de ce type](/fr/docs/reference/module-manifest/)
