---
title: "Invoicing"
description: "Brouillons, validation, numérotation. Chaque application est un module sur un même modèle de données."
canonical: "https://obop.dev/fr/apps/invoicing/"
lang: "fr"
---

# Invoicing

## À quoi elle sert

Prepare customer invoices as drafts and post them to give each one its gapless legal number. Posting is the one step in the built-in apps that always needs a person: an agent can prepare the draft and propose the posting, and a human with the right permission approves it.

## Ce que fait et ne fait pas le paquet

Customer invoices: drafts, posting with a gapless legal number, cancellation.

## Modèles

### `invoice`

A customer invoice; posted invoices are corrected only by credit notes

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

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `sale_order_id` | ref → sale_order | `none` | non | `invoicing.user` | en clair | Source sale order id |
| `state` | select (draft, posted, cancelled) | `none` | non | `invoicing.user` | en clair | Lifecycle: draft, posted or cancelled |
| `total_minor` | money | `none` | non | `invoicing.user` | en clair | Invoice total in minor units |
| `number` | text | `none` | non | `invoicing.user` | en clair | Gapless legal number, set when posted |

## Flux de travail

### `invoice`

| Action | Transition | Qui peut l'exécuter | Approbation |
|---|---|---|---|
| `invoice.post` | state: draft → posted | `invoicing.manager` | oui |
| `invoice.cancel` | state: draft → cancelled | `invoicing.user` | non |

## Groupes de permissions

Groupes utilisés par cette application :

- `invoicing.manager`
- `invoicing.user`

## Étapes d'approbation

Étapes qu'un agent ne peut que proposer :

- `invoice.post`

## 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 : `invoice.post`, `invoice.delete`.

## Dépendances

- `base`
- `sales`

## Installation

Intégrée. Elle est disponible dans chaque instance et ne peut pas être supprimée.

## Créer la vôtre

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