> For the complete documentation index, see [llms.txt](https://docs.solutioo.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.solutioo.de/entwicklerdokumentationen-business-central-dhl-connector/dhl-connector-entwicklerdokumentation/architektur-und-prozessflusse/paketbildung-und-paket-lifecycle.md).

# Paketbildung und Paket-Lifecycle

## Ausgangspunkt

Ein DHL-Paket gehört entweder zu einem Verkaufsauftrag oder zu einem Warenausgang. Der Dokumenttyp steht in `SOUDHL Package Header."Document Type"`; `Order No` enthält die jeweilige Dokumentnummer.

## Paketbildung

`SOUDHL Packing Mgt` liest packbare Verkaufszeilen, normalisiert Gewicht und Abmessungen und erzeugt einen Plan. Danach werden ausschließlich nicht hochgeladene Auftragspakete ersetzt.

```mermaid
flowchart LR
  S[Sales Header + Sales Lines] --> C[CollectOrderLines]
  C --> V[Gewicht und Box-Fit validieren]
  V --> P[Packing Plan]
  P --> H[Package Header]
  P --> L[Package Lines]
```

## Packing-Modi

* **Bin Packing:** schwerste Positionen zuerst; First-Fit-Verteilung.
* **All On First Package:** Auftragsreihenfolge; erstes passendes Paket wird gefüllt.
* **Smart Distribute:** separate Artikel zuerst, übrige Mengen auf das jeweils leichteste passende Paket.
* **Fixed Count:** exakt die vorgegebene Anzahl; Fehler, wenn Limits damit nicht eingehalten werden können.

## Zustände eines Pakets

### Neu / Pending

* `Uploaded = false`
* Paket und Inhalt dürfen noch angepasst werden.
* Empfänger wird vor der Labelanforderung aus dem Quellbeleg aktualisiert.

### Hochgeladen

* `Uploaded = true`
* DHL-Sendungsnummer und Label sind gespeichert.
* Empfänger-Snapshot bleibt historisch erhalten.
* Das Paket darf nicht durch eine neue Paketvorschlagsberechnung gelöscht werden.

### Gebuchter Beleg

Je nach Prozess werden `Posted Sales Shipment No.` oder `Posted Whse. Shipment No.` gesetzt. Dadurch bleibt das Paket nach dem Buchen auffindbar.

### Kartonverbrauch

Optional durchläuft das Paket `Not Required`, `Pending`, `Posted` oder `Error`. Dieser Status ist vom Labelstatus getrennt.

## Einheitenvertrag

* Package Header `Weight`: Gesamtgewicht in Gramm als Integer
* Package Line `Weight`: Gewicht pro Einheit in Kilogramm
* generierte Line-Abmessungen: Zentimeter
* Box-Abmessungen: gemäß `UOMOptions`
* Zollgewicht: Netto-Kilogramm pro Einheit, unabhängig von der Packing-Gewichtsquelle

## Empfänger-Snapshot

Vor dem Upload aktualisiert `SOUDHL Package Recipient Mgt` Name, Adresse, Land, E-Mail und Telefon. Bei Warenausgangspaketen müssen alle beteiligten Aufträge denselben normalisierten Empfänger besitzen.

## Löschregeln

* `ClearExistingPackages` löscht nur nicht hochgeladene Verkaufsauftragspakete.
* Die Paketkarte verhindert das Löschen hochgeladener Pakete.
* Beim Löschen eines Headers werden Zolldaten entfernt; Package Lines müssen durch die aufrufende Logik ebenfalls bereinigt werden.

## Empfehlung für externe Apps

Pakete über `CreatePackages` oder `CreatePackagesWithPackingMode` erzeugen. Direkte Inserts sind nur nach expliziter Abstimmung sinnvoll, weil AutoIncrement, Quellreferenzen, Gewichtseinheiten, Empfänger und Billing gemeinsam konsistent sein müssen.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.solutioo.de/entwicklerdokumentationen-business-central-dhl-connector/dhl-connector-entwicklerdokumentation/architektur-und-prozessflusse/paketbildung-und-paket-lifecycle.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
