---
title: "Sales"
description: "Angebote und Aufträge. Jede App ist ein Modul auf einem gemeinsamen Datenmodell."
canonical: "https://obop.dev/de/apps/sales/"
lang: "de"
---

# Sales

## Wofür sie gedacht ist

Write quotations for customers and turn them into confirmed orders. Orders point at a contact, carry a total and a currency, and confirmed orders are what Invoicing bills.

## Was das Paket leistet und was nicht

Quotations and confirmed orders for customers.

## Moduldetails

- **Version:** `0.2.0`, wird mit dem Kern versioniert
- **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:** Stabil
- **Kategorien:** Vertrieb

## Modelle

### `sale_order`

A quotation or confirmed order for a customer

Lesegruppe: `sales.user`. Schreibgruppe: `sales.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `party_id` | ref → party | `none` | nein | `sales.user` | im Klartext | Customer party id |
| `state` | select (draft, confirmed, cancelled) | `none` | nein | `sales.user` | im Klartext | Lifecycle: draft, confirmed or cancelled |
| `total_minor` | money | `none` | nein | `sales.user` | im Klartext | Order total in minor units |
| `currency` | text | `none` | nein | `sales.user` | im Klartext | ISO 4217 currency code |

## Workflows

### `sale_order`

| Aktion | Bewegt | Wer sie ausführen darf | Freigabe |
|---|---|---|---|
| `sale_order.confirm` | state: draft → confirmed | `sales.user` | nein |
| `sale_order.cancel` | state: * → cancelled | `sales.user` | nein |
| `sale_order.reset_to_draft` | state: cancelled → draft | `sales.user` | nein |

## Berechtigungsgruppen

Von dieser App verwendete Gruppen:

- `sales.user`

## Freigabeschritte

Kein Schritt dieser App braucht eine Freigabe, abgesehen vom Löschen von Datensätzen.

## 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: `sale_order.delete`.

## Abhängigkeiten

Jede Abhängigkeit nennt die Versionen, die sie akzeptiert. Integrierte Apps werden mit dem Kern versioniert; eine Anforderung an sie wird daher gegen die Kernversion geprüft.

- [Contacts](/de/apps/contacts/): `*` (integriert)
- [Products](/de/apps/products/): `*` (integriert)

## Installation

Integriert. Sie ist in jeder Instanz verfügbar und kann nicht entfernt werden.

## Selbst bauen

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