---
title: "Inventory"
description: "Bestand und Lager. Jede App ist ein Modul auf einem gemeinsamen Datenmodell."
canonical: "https://obop.dev/de/apps/inventory/"
lang: "de"
---

# Inventory

## Wofür sie gedacht ist

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.

## Was das Paket leistet und was nicht

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

## Modelle

### `inventory_warehouse`

A building or site where stock is kept

Lesegruppe: `inventory.user`. Schreibgruppe: `inventory.manager`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nein | `inventory.user` | im Klartext | Warehouse name |
| `code` | text | `none` | nein | `inventory.user` | im Klartext | Short code printed on documents, for example WH1 |
| `address` | longtext | `none` | nein | `inventory.user` | im Klartext | Postal address of the site |
| `active` | bool | `none` | nein | `inventory.user` | im Klartext | Whether the warehouse is in use |

### `inventory_location`

A place inside a warehouse where stock can sit

Lesegruppe: `inventory.user`. Schreibgruppe: `inventory.manager`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nein | `inventory.user` | im Klartext | Location name, for example Shelf A3 |
| `warehouse_id` | ref → inventory_warehouse | `none` | nein | `inventory.user` | im Klartext | The warehouse the location belongs to |
| `kind` | select (internal, receiving, shipping, transit, scrap) | `none` | nein | `inventory.user` | im Klartext | What the location is used for: internal, receiving, shipping, transit, scrap |
| `active` | bool | `none` | nein | `inventory.user` | im Klartext | Whether the location is in use |

### `inventory_item`

The quantity of one product held at one location

Lesegruppe: `inventory.user`. Schreibgruppe: `inventory.manager`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `product_id` | ref → product | `none` | nein | `inventory.user` | im Klartext | The product held |
| `location_id` | ref → inventory_location | `none` | nein | `inventory.user` | im Klartext | Where it is held |
| `quantity` | number | `none` | nein | `inventory.user` | im Klartext | Units on hand |
| `reorder_level` | number | `none` | nein | `inventory.user` | im Klartext | Quantity at or below which the product should be replenished |
| `lot` | text | `none` | nein | `inventory.user` | im Klartext | Lot or batch number, if tracked |

### `inventory_move`

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

Lesegruppe: `inventory.user`. Schreibgruppe: `inventory.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `reference` | text | `none` | nein | `inventory.user` | im Klartext | Reference of the move, for example a delivery or receipt number |
| `product_id` | ref → product | `none` | nein | `inventory.user` | im Klartext | The product moved |
| `from_location_id` | ref → inventory_location | `none` | nein | `inventory.user` | im Klartext | Where it leaves; empty for a receipt from a supplier |
| `to_location_id` | ref → inventory_location | `none` | nein | `inventory.user` | im Klartext | Where it arrives; empty for a delivery to a customer |
| `quantity` | number | `none` | nein | `inventory.user` | im Klartext | Units moved |
| `scheduled_on` | date | `none` | nein | `inventory.user` | im Klartext | Date the move is planned for (YYYY-MM-DD) |
| `state` | select (draft, done, cancelled) | `none` | nein | `inventory.user` | im Klartext | Move status: draft, done, cancelled |

## Workflows

### `inventory_move`

| Aktion | Bewegt | Wer sie ausführen darf | Freigabe |
|---|---|---|---|
| `inventory_move.validate` | state: draft → done | `inventory.user` | ja |
| `inventory_move.cancel` | state: draft → cancelled | `inventory.user` | nein |

## Berechtigungsgruppen

Von dieser App verwendete Gruppen:

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

## Freigabeschritte

Schritte, die ein Agent nur vorschlagen kann:

- `inventory_move.validate`

## Was Agenten tun können und was nicht

Ein Agent kann Datensätze dieser App lesen, durchsuchen, anlegen und aktualisieren sowie Aktionen ausführen, die keine Freigabe brauchen, und zwar innerhalb der Berechtigungsgruppen seines Tokens.

Diese Schritte kann er nur vorschlagen, und eine Person muss sie freigeben: `inventory_move.validate`, `inventory_warehouse.delete`, `inventory_location.delete`, `inventory_item.delete`, `inventory_move.delete`.

## Abhängigkeiten

- `product`

## Installation

Installieren Sie sie in der App Customize (Marktplatz) oder über die Kommandozeile:

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

Erfordert eine Datenbank und Administratorrechte.

## Selbst bauen

[Der Modulleitfaden zeigt, wie Apps wie diese geschrieben werden](/de/docs/reference/module-manifest/)
