---
title: "Purchase"
description: "Lieferanten und Bestellungen. Jede App ist ein Modul auf einem gemeinsamen Datenmodell."
canonical: "https://obop.dev/de/apps/purchase/"
lang: "de"
---

# Purchase

## Wofür sie gedacht ist

Keep vendors and the purchase orders you send them, with order lines and a draft to received flow. Totals are entered, not summed from the lines.

## Was das Paket leistet und was nicht

Vendors, purchase orders and order lines with a draft, sent, confirmed, received and cancelled flow. Order totals are entered, not summed from the lines.

## Modelle

### `purchase_vendor`

Purchasing terms for a contact you buy from

Lesegruppe: `purchase.user`. Schreibgruppe: `purchase.manager`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `party_id` | ref → party | `none` | nein | `purchase.user` | im Klartext | The contact record of the vendor |
| `vendor_reference` | text | `none` | nein | `purchase.user` | im Klartext | Your customer number at this vendor |
| `payment_terms_days` | number | `none` | nein | `purchase.user` | im Klartext | Days allowed to pay an invoice |
| `lead_time_days` | number | `none` | nein | `purchase.user` | im Klartext | Usual days between order and delivery |
| `iban` | text | `financial` | ja | `purchase.manager` | zurückgehalten | Bank account the vendor is paid into |
| `active` | bool | `none` | nein | `purchase.user` | im Klartext | Whether you still buy from this vendor |

### `purchase_order`

A request to a vendor to supply goods or services

Lesegruppe: `purchase.user`. Schreibgruppe: `purchase.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `reference` | text | `none` | nein | `purchase.user` | im Klartext | Order number printed on the document |
| `vendor_id` | ref → purchase_vendor | `none` | nein | `purchase.user` | im Klartext | The vendor ordered from |
| `ordered_on` | date | `none` | nein | `purchase.user` | im Klartext | Date the order was placed (YYYY-MM-DD) |
| `expected_on` | date | `none` | nein | `purchase.user` | im Klartext | Date the goods are expected (YYYY-MM-DD) |
| `currency` | text | `none` | nein | `purchase.user` | im Klartext | ISO 4217 currency code, for example EUR |
| `total` | money | `none` | nein | `purchase.user` | im Klartext | Order total as agreed with the vendor (minor currency units, e.g. cents) |
| `notes` | longtext | `none` | nein | `purchase.user` | im Klartext | Delivery instructions and remarks for the vendor |
| `state` | select (draft, sent, confirmed, received, cancelled) | `none` | nein | `purchase.user` | im Klartext | Order status: draft, sent, confirmed, received, cancelled |

### `purchase_order_line`

One product or service on a purchase order

Lesegruppe: `purchase.user`. Schreibgruppe: `purchase.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `order_id` | ref → purchase_order | `none` | nein | `purchase.user` | im Klartext | The order the line belongs to |
| `product_id` | ref → product | `none` | nein | `purchase.user` | im Klartext | The product ordered |
| `description` | text | `none` | nein | `purchase.user` | im Klartext | Wording for the vendor if different from the product name |
| `quantity` | number | `none` | nein | `purchase.user` | im Klartext | Units ordered |
| `unit_price` | money | `none` | nein | `purchase.user` | im Klartext | Agreed price per unit (minor currency units, e.g. cents) |
| `received_quantity` | number | `none` | nein | `purchase.user` | im Klartext | Units received so far |

## Workflows

### `purchase_order`

| Aktion | Bewegt | Wer sie ausführen darf | Freigabe |
|---|---|---|---|
| `purchase_order.send` | state: draft → sent | `purchase.user` | nein |
| `purchase_order.confirm` | state: sent → confirmed | `purchase.manager` | ja |
| `purchase_order.receive` | state: confirmed → received | `purchase.user` | nein |
| `purchase_order.cancel` | state: draft → cancelled | `purchase.user` | nein |

## Berechtigungsgruppen

Von dieser App verwendete Gruppen:

- `purchase.manager`
- `purchase.user`

## Freigabeschritte

Schritte, die ein Agent nur vorschlagen kann:

- `purchase_order.confirm`

## 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: `purchase_order.confirm`, `purchase_vendor.delete`, `purchase_order.delete`, `purchase_order_line.delete`.

Diese Felder werden Agenten vollständig vorenthalten: `purchase_vendor.iban`.

## Abhängigkeiten

- `base`
- `product`

## Installation

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

```bash
obop modules install-from purchase
```

Erfordert eine Datenbank und Administratorrechte.

## Selbst bauen

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