# JTL-Wawi

> **JTL-Wawi** – Ausgang via SFTP-Drop oder E-Mail. Benötigtes Addon: `connector_jtl_wawi`.

## Überblick

JTL-Wawi ist eine verbreitete Warenwirtschaft im deutschen Mittelstand. Sie kennt keine klassische REST-Schnittstelle für Auftrags-Imports, sondern liest Aufträge als XML-Datei aus einem Überwachungsverzeichnis oder aus E-Mail-Anhängen.

Mit dieser Integration schreibt Orderport Bestellungen, die aus einer anderen Quelle (cXML, EDIFACT, Shopware, …) kommen, als JTL-Wawi-Auftrags-XML in ein SFTP-Drop-Verzeichnis oder versendet sie per E-Mail.

Die Integration unterstützt **nur den Ausgang** – JTL-Wawi sendet keine Bestellungen direkt an Orderport.

## Kompatibilität

### Unterstützte Versionen

| Bereich | Version |
|---|---|
| JTL-Wawi | 1.8 und neuer (Auftrags-XML-Schema) |
| Transport | SFTP, FTP, E-Mail |
| Zeichenkodierung | UTF-8 |

### Bekannte Einschränkungen

- **Kein Rückkanal.** Zustellungs- oder Bearbeitungsstatus aus JTL-Wawi werden nicht an Orderport zurückgemeldet. Der Transport-Log zeigt nur, ob die Datei erfolgreich abgelegt wurde.
- **Kunden-Matching nicht eingebaut.** JTL-Wawi legt bei Bedarf neue Kunden an – eine Deduplikation anhand E-Mail oder Kundennummer übernimmt die Wawi selbst, nicht Orderport.
- **Zahlungsarten, Versandarten**: werden als Textwert mitgegeben; Orderport mappt keine internen IDs.
- **Keine Rechnungsdokumente.** Nur Auftrags-XML – Rechnungen/Lieferscheine erzeugt JTL selbst.
- **SSL-FTP (FTPS) implizit** nicht unterstützt; nur explizites FTPS (AUTH TLS) oder SFTP (SSH).

## Authentifizierung (Transport)

Der Transport entscheidet, wie Orderport die Datei abliefert:

- **SFTP**: Benutzername + Passwort (verschlüsselt gespeichert) oder Benutzername + SSH-Key. Host und Port wie von Ihrem Server vorgegeben.
- **FTP**: Benutzername + Passwort (explizites FTPS empfohlen). Passiv-Modus Standard.
- **E-Mail**: kein Auth nötig; wird über den Orderport-eigenen Mailer versandt.

## Einrichten in Orderport

### Pipeline anlegen

1. **Pipelines → Neue Pipeline → Simple Wizard**, Ziel: **JTL-Wawi**
2. Quelle wählen (cXML, EDIFACT, Shopware, …)
3. Auto-Mapping übernehmen oder anpassen
4. Transport konfigurieren:
   - SFTP: Host, Port, Benutzer, Passwort, Ziel-Pfad (z. B. `/wawi/orders/in/`)
   - E-Mail: Empfängeradresse, Betreff-Vorlage

### Mapping

Orderport liefert JTL-Wawi-spezifische Zielfelder (Bestellnummer, Externe-ID, Sprache, Währung, Versandart, Zahlungsart, Kundendaten, Positionen). Die Auto-Mapping-Vorschläge decken die gängigen Felder ab.

## Einrichten in JTL-Wawi

### SFTP-Drop in JTL-Wawi aktivieren

1. In JTL-Wawi: **Admin → Schnittstellen → Auftragsimport aus Datei**
2. Überwachungsverzeichnis auf das Verzeichnis zeigen, in das Orderport schreibt
3. Schema-Typ: **JTL-Wawi-Auftrags-XML**
4. Ausführungsintervall: 1 Minute oder nach Bedarf

### E-Mail-Import

1. JTL-Wawi → **Admin → E-Mail-Import**
2. Empfangs-Postfach konfigurieren, Anhänge-Filter auf `*.xml`
3. Schema: JTL-Wawi-Auftrags-XML

## Technische Details

### Ausgangs-XML (Auszug)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Auftrag>
  <Bestellnummer>ORDER-10001</Bestellnummer>
  <ExterneID>PO-2024-001</ExterneID>
  <Erstelldatum>2024-03-15T14:30:00+01:00</Erstelldatum>
  <Sprache>DE</Sprache>
  <Waehrung>EUR</Waehrung>
  <Zahlungsart>Rechnung</Zahlungsart>
  <Versandart>DHL Paket</Versandart>
  <Kommentar>Lieferung an Wochenende möglich</Kommentar>
  <Kunde>
    <Firma>Muster GmbH</Firma>
    <Vorname>Max</Vorname>
    <Nachname>Mustermann</Nachname>
    <EMail>bestellung@muster.de</EMail>
    <Strasse>Industriestr. 42</Strasse>
    <PLZ>80331</PLZ>
    <Ort>München</Ort>
    <Land>DE</Land>
  </Kunde>
  <Positionen>
    <Position>
      <Artikelnummer>WIDGET-001</Artikelnummer>
      <Name>Premium Widget Blau</Name>
      <Menge>10</Menge>
      <Einzelpreis>150.00</Einzelpreis>
    </Position>
  </Positionen>
</Auftrag>
```

### Verfügbare Zielfelder

| Pfad | Bedeutung |
|---|---|
| `Bestellnummer` | JTL-Wawi-Auftragsnummer |
| `ExterneID` | Originale Bestellnummer aus dem Quellsystem |
| `Erstelldatum` | ISO 8601 |
| `Sprache` | Sprache (`DE`, `EN`, …) |
| `Waehrung` | Währung (`EUR`, `USD`, …) |
| `Zahlungsart` | Textwert |
| `Versandart` | Textwert |
| `Kommentar` | Freitext für interne Notiz |
| `Kunde.Firma` / `Vorname` / `Nachname` / `EMail` | Kundendaten |
| `Kunde.Strasse` / `PLZ` / `Ort` / `Land` | Adresse |
| `Positionen[].Artikelnummer` | Artikel-SKU |
| `Positionen[].Name` | Beschreibung |
| `Positionen[].Menge` | Menge |
| `Positionen[].Einzelpreis` | Netto-Einzelpreis |

### Dateinamen-Schema

Orderport erzeugt Dateinamen nach dem Muster `{Bestellnummer}_{timestamp}.xml`, z. B. `ORDER-10001_20240315_143000.xml`. Damit sind Uploads bei gleicher Bestellnummer unterscheidbar.

## Fehlerbehebung

| Symptom | Ursache | Lösung |
|---|---|---|
| Upload schlägt mit „Permission denied" fehl | Benutzer hat keine Schreibrechte im Ziel-Pfad | Mit dem SFTP-Admin Schreibrechte setzen oder Benutzer wechseln |
| JTL ignoriert die Datei | Dateiname endet nicht auf `.xml`, oder Schema-Typ falsch gesetzt | Schema-Typ in JTL-Wawi auf „Auftrags-XML" stellen; Transport-Log prüfen |
| Datei wird im Drop-Ordner doppelt abgelegt | Retry nach scheinbarem Fehler | Orderport schreibt einmal pro Versuch mit eindeutigem Zeitstempel – Duplikate sollten durch den Bestellnummern-Teil im Dateinamen erkennbar sein |
| Passwort im Klartext in Config? | Niemals | Passwörter werden mit AES-256 verschlüsselt gespeichert und nur beim Transport kurz im Arbeitsspeicher entschlüsselt |

## Nächste Schritte

- [FTP & SFTP](/docs/ftp-sftp)
- [E-Mail](/docs/email)
- [Feldmapping](/docs/feldmapping)
