Darstellung
Auftrag → Rechnung
Transaktionen: SAL16 Aufträge, SAL17 Lieferscheine, SAL18 Rechnungen
Zentraler Endpoint: POST /api/salesHead/referencingDocuments
Business-Zweck
Partner müssen zwischen drei Rechnungswegen wählen – abhängig von Geschäftsmodell und DocType-Konfiguration:
| Pfad | Beschreibung | Typisch für |
|---|---|---|
| A – Direkt | Auftrag → Rechnung | B2C, Dienstleistung, sofortige Faktura |
| B – über LS | Auftrag → Lieferschein → Rechnung | B2B, Warenwirtschaft |
| C – Sammel | Mehrere LS → eine Rechnung | Rechnungslauf, Großhandel |
Master-Doku: Order-to-Cash
Kernbegriffe
| Begriff | Bedeutung |
|---|---|
referencingDocuments | Universelle Folgedokument-API |
docType1 / docType2 | Ziel-DocTypes (max. 2 pro Call) |
isDocument1Created | true = neu erzeugen |
salesItemsToCopy | Teilmengen / Teillieferung |
closeRefDocAsManuel | Quellbeleg schließen |
createInvoicesFromDelNotes | Alternative für Pfad C |
Fachlicher Ablauf – Multi-Path
Partner-Szenarien
Pfad A – Direkt Auftrag → Rechnung
Schritt 1 – Order-ID ermitteln:
bash
curl -G "$BASE_URL/api/salesHead/salesOrders" \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "filter=docNumber~eq~AU-2026-00456"Schritt 2 – Rechnung erzeugen:
json
POST /api/salesHead/referencingDocuments
{
"salesHeadIds": [1234567890123456],
"docType1": { "id": 300003 },
"isDocument1Created": true,
"isDocument2Created": false,
"closeRefDocAsManuel": false
}Response:
json
{
"document1Ids": [2222333344445555],
"document2Ids": [],
"blockedSalesHeads": [],
"documentsWithErrors1": [],
"allDocuments": [
{ "id": 2222333344445555, "docNumber": "RE-2026-00123" }
]
}Pfad B – Zwei-Schritt Order → DN → Invoice
Schritt 1 – Lieferschein:
json
POST /api/salesHead/referencingDocuments
{
"salesHeadIds": [1234567890123456],
"docType1": { "id": 300002 },
"isDocument1Created": true,
"isDocument2Created": false
}→ document1Ids[0] = Lieferschein-ID 1111222233334444
Schritt 2 – Rechnung aus Lieferschein:
json
POST /api/salesHead/referencingDocuments
{
"salesHeadIds": [1111222233334444],
"docType1": { "id": 300003 },
"isDocument1Created": true,
"isDocument2Created": false
}Pfad B – Teillieferung + Teilsrechnung
json
{
"salesHeadIds": [1234567890123456],
"docType1": { "id": 300002 },
"isDocument1Created": true,
"isDocument2Created": false,
"salesItemsToCopy": [
{ "salesItemId": 9876543210, "quantity": 1 }
]
}Danach Rechnung nur über erzeugten LS (nur gelieferte Positionen).
Pfad C – Sammelrechnung
bash
curl -G "$BASE_URL/api/salesHead/createInvoicesFromDelNotes" \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "salesHeadIds=1111222233334444,1111222233334445,1111222233334446"Connector – alles in einem Schritt
json
POST /api/salesHead/connector
{
"salesHeads": [{
"id": 1234567890123456,
"referencingDocuments": {
"deliveryNoteDocTypeName": "Lieferschein Standard",
"invoiceDocTypeName": "Rechnung Standard",
"sendPackDocTypeName": "Lieferschein Standard",
"trackingNumber": "00340434161234567890",
"carrierName": "DHL Paket"
}
}]
}Voraussetzungen
- SalesHeadDocRules für gewählten Pfad
- DocType-IDs aus Onboarding (nicht raten)
- Auftrag nicht gesperrt (
blockedDelivery=false) - Positionen mit offener Menge / Fakturastatus
Auswirkungen im ERP
| Pfad | INV | Forderung | Position-Status |
|---|---|---|---|
| A direkt | Abgang bei LS-Regel ggf. übersprungen | sofort | invoiceStatus |
| B über LS | Abgang bei LS | bei RE | delivery + invoice |
| C Sammel | wie B | eine RE für n LS | aggregiert |
Typische Fehlerquellen
| Fehler | Response-Feld / Verhalten |
|---|---|
| Liefersperre | blockedSalesHeads |
| DocRule fehlt | documentsWithErrors1[].message |
| Falsche ID | BusinessException |
| Teilmenge | quantity > openQuantity |
Fehlerbehandlung – Beispiel
json
{
"document1Ids": [],
"blockedSalesHeads": [
{ "id": 1234567890123456, "docNumber": "AU-2026-00456" }
],
"documentsWithErrors1": [
{
"id": 1234567890123457,
"docNumber": "AU-2026-00457",
"message": "salesHeadDocRule.not.found"
}
]
}Partner-Logik: blockedSalesHeads → Sperre aufheben; documentsWithErrors1 → DocRule/Konfiguration prüfen.