---
title: "Inventory"
description: "Stocks et entrepôts. Chaque application est un module sur un même modèle de données."
canonical: "https://obop.dev/fr/apps/inventory/"
lang: "fr"
---

# Inventory

## À quoi elle sert

Describe warehouses and locations, record stock levels and log stock moves. Quantities are entered by people, so it works as a ledger of what was counted and moved rather than an automatic stock engine.

## Ce que fait et ne fait pas le paquet

Warehouses, stock locations, stock levels and stock moves. Quantities are entered and validated by people; they are not updated automatically by moves.

## Modèles

### `inventory_warehouse`

A building or site where stock is kept

Groupe de lecture: `inventory.user`. Groupe d'écriture: `inventory.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `name` | text | `none` | non | `inventory.user` | en clair | Warehouse name |
| `code` | text | `none` | non | `inventory.user` | en clair | Short code printed on documents, for example WH1 |
| `address` | longtext | `none` | non | `inventory.user` | en clair | Postal address of the site |
| `active` | bool | `none` | non | `inventory.user` | en clair | Whether the warehouse is in use |

### `inventory_location`

A place inside a warehouse where stock can sit

Groupe de lecture: `inventory.user`. Groupe d'écriture: `inventory.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `name` | text | `none` | non | `inventory.user` | en clair | Location name, for example Shelf A3 |
| `warehouse_id` | ref → inventory_warehouse | `none` | non | `inventory.user` | en clair | The warehouse the location belongs to |
| `kind` | select (internal, receiving, shipping, transit, scrap) | `none` | non | `inventory.user` | en clair | What the location is used for: internal, receiving, shipping, transit, scrap |
| `active` | bool | `none` | non | `inventory.user` | en clair | Whether the location is in use |

### `inventory_item`

The quantity of one product held at one location

Groupe de lecture: `inventory.user`. Groupe d'écriture: `inventory.manager`.

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `product_id` | ref → product | `none` | non | `inventory.user` | en clair | The product held |
| `location_id` | ref → inventory_location | `none` | non | `inventory.user` | en clair | Where it is held |
| `quantity` | number | `none` | non | `inventory.user` | en clair | Units on hand |
| `reorder_level` | number | `none` | non | `inventory.user` | en clair | Quantity at or below which the product should be replenished |
| `lot` | text | `none` | non | `inventory.user` | en clair | Lot or batch number, if tracked |

### `inventory_move`

A movement of a product between locations, or into or out of the business

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

| Champ | Type | Classe de données | Données personnelles | Groupe | Vu par les agents | Description |
|---|---|---|---|---|---|---|
| `reference` | text | `none` | non | `inventory.user` | en clair | Reference of the move, for example a delivery or receipt number |
| `product_id` | ref → product | `none` | non | `inventory.user` | en clair | The product moved |
| `from_location_id` | ref → inventory_location | `none` | non | `inventory.user` | en clair | Where it leaves; empty for a receipt from a supplier |
| `to_location_id` | ref → inventory_location | `none` | non | `inventory.user` | en clair | Where it arrives; empty for a delivery to a customer |
| `quantity` | number | `none` | non | `inventory.user` | en clair | Units moved |
| `scheduled_on` | date | `none` | non | `inventory.user` | en clair | Date the move is planned for (YYYY-MM-DD) |
| `state` | select (draft, done, cancelled) | `none` | non | `inventory.user` | en clair | Move status: draft, done, cancelled |

## Flux de travail

### `inventory_move`

| Action | Transition | Qui peut l'exécuter | Approbation |
|---|---|---|---|
| `inventory_move.validate` | state: draft → done | `inventory.user` | oui |
| `inventory_move.cancel` | state: draft → cancelled | `inventory.user` | non |

## Groupes de permissions

Groupes utilisés par cette application :

- `inventory.manager`
- `inventory.user`

## Étapes d'approbation

Étapes qu'un agent ne peut que proposer :

- `inventory_move.validate`

## 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 : `inventory_move.validate`, `inventory_warehouse.delete`, `inventory_location.delete`, `inventory_item.delete`, `inventory_move.delete`.

## Dépendances

- `product`

## Installation

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

```bash
obop modules install-from inventory
```

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/)
