---
title: "Expenses"
description: "Spesen und Freigaben. Jede App ist ein Modul auf einem gemeinsamen Datenmodell."
canonical: "https://obop.dev/de/apps/expenses/"
lang: "de"
---

# Expenses

## Wofür sie gedacht ist

Employees file expense claims that move through draft, submitted, approved and paid. Paying needs its own permission and a human approval; receipts are referenced by note, not stored.

## Was das Paket leistet und was nicht

Employee expense claims with a draft, submitted, approved and paid flow. Paying is a separate permission and needs a human approval; receipts are referenced by note, not stored. A claim has a number from a yearly series, and an employee sees and edits only their own claims; managers and finance see all.

## Moduldetails

- **Version:** `0.3.0`
- **Autor:** SpaceCorps
- **Lizenz:** [AGPL-3.0-or-later](https://spdx.org/licenses/AGPL-3.0-or-later.html)
- **Benötigt Kern:** `^0.2` (aktuell ist Kern 0.2.0)
- **Reifegrad:** Beta
- **Kategorien:** Finanzen, Personal

## Modelle

### `expenses_expense`

An amount an employee spent for the business and wants reimbursed

Lesegruppe: `expenses.user`. Schreibgruppe: `expenses.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `number` | sequence | `none` | nein | `expenses.user` | im Klartext | Claim number such as EXP-2026-0042, assigned when the claim is created; the series starts again each year |
| `description` | text | `none` | nein | `expenses.user` | im Klartext | What the money was spent on |
| `employee` | text | `internal` | ja | `expenses.user` | maskiert | User name of the person claiming the expense; the person who creates the claim unless set otherwise |
| `spent_on` | date | `none` | nein | `expenses.user` | im Klartext | Date of the purchase (YYYY-MM-DD) |
| `category` | select (travel, meals, lodging, supplies, software, other) | `none` | nein | `expenses.user` | im Klartext | Expense category: travel, meals, lodging, supplies, software, other |
| `amount` | money | `financial` | ja | `expenses.user` | zurückgehalten | Amount owed to the employee (minor currency units, e.g. cents) |
| `currency` | text | `none` | nein | `expenses.user` | im Klartext | ISO 4217 currency code, for example EUR |
| `receipt_note` | longtext | `none` | nein | `expenses.user` | im Klartext | Where the receipt is kept and what it shows |
| `paid_on` | date | `financial` | ja | `expenses.finance` | zurückgehalten | Date the employee was reimbursed (YYYY-MM-DD) |
| `payment_reference` | text | `financial` | ja | `expenses.finance` | zurückgehalten | Bank transfer reference of the reimbursement |
| `state` | select (draft, submitted, approved, paid, refused) | `none` | nein | `expenses.user` | im Klartext | Claim status: draft, submitted, approved, paid, refused |

## Workflows

### `expenses_expense`

| Aktion | Bewegt | Wer sie ausführen darf | Freigabe |
|---|---|---|---|
| `expenses_expense.submit` | state: draft → submitted | `expenses.user` | nein |
| `expenses_expense.approve` | state: submitted → approved | `expenses.manager` | nein |
| `expenses_expense.pay` | state: approved → paid | `expenses.finance` | ja |
| `expenses_expense.refuse` | state: submitted → refused | `expenses.manager` | nein |

## Berechtigungsgruppen

Von dieser App verwendete Gruppen:

- `expenses.finance`
- `expenses.manager`
- `expenses.user`

## Freigabeschritte

Schritte, die ein Agent nur vorschlagen kann:

- `expenses_expense.pay`

## 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: `expenses_expense.pay`, `expenses_expense.delete`.

Personenbezogene Daten werden als Platzhalter maskiert: `expenses_expense.employee`.

Diese Felder werden Agenten vollständig vorenthalten: `expenses_expense.amount`, `expenses_expense.paid_on`, `expenses_expense.payment_reference`.

## Abhängigkeiten

Keine.

## Installation

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

```bash
obop modules install-from expenses
```

Erfordert eine Datenbank und Administratorrechte.

## Selbst bauen

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