Haufe X360 Auftragsanlage

RUDI legt eingehende Kundenbestellungen automatisch als Kundenaufträge in Haufe X360 an. Diese Seite erklärt den täglichen Arbeitsablauf und die Sicherheit dahinter.

Inhalt
Notfall-Sperre (alles sofort stoppen):
sudo ~/bin/hfx360-disable.sh "Grund der Sperre"
Wirkung sofort – jeder weitere API-Call schlägt fehl. Details im Notfallplan.

Täglicher Ablauf

So läuft es im Alltag ab – Schritt für Schritt. Kein Chat-Befehl nötig.

  1. Bestellung kommt per Mail rein
    Kunde schickt seine Bestellung an info@regiofrucht.de – die Mail landet im normalen Outlook-Posteingang.
  2. Öffne /hfx360/inbox.html („Neue Bestellungen")
    Die Seite zeigt alle Mails aus dem Info-Inbox-Ordner. Zu jeder Mail erkennt RUDI automatisch den Kunden am Absender und zeigt einen Status:
    neu = bereit zum Anlegen   ✓ KA30833 = schon angelegt   gesperrt = Kunde braucht manuelles Review   unbekannt = Absender passt zu keinem Kunden
  3. Klick auf „Vorschau"
    Ein Fenster zeigt die erkannten Positionen, Lieferdatum, Produktionsdatum, Warnungen und Fehler. Die Positionen wurden aus PDF oder Mail-Text gelesen und auf unsere Artikelnummern gemappt. Bei Warnungen (z.B. Feiertag in der Nähe, ungewöhnliche Menge) prüfst du kurz ob das passt.
  4. Klick auf „In HFX360 anlegen"
    Jetzt passiert automatisch folgendes – alles in ca. 2 Sekunden:
    • Kundenauftrag (KA-Nummer) wird in HFX360 erstellt
    • Der Auftrag wird sofort nochmal gelesen und mit der Eingabe verglichen (Verify). Bei jeder Abweichung wird der Auftrag automatisch wieder gelöscht.
    • Die Original-Mail wird als .eml-Datei im Kundenauftrag unter Dateien angehängt
    • Die Mail wird in Outlook von Info-Inbox verschoben nach KUNDENAUFTRAG VON RUDI ERSTELLT
  5. Prüfung in HFX360
    Öffne den Auftrag in Haufe X360 (der Direkt-Link steht auch auf /hfx360/). Vergleiche Positionen, Mengen, Produktionsdatum, Standort mit dem Original-Mail-Anhang. Alles OK? Zurück zur Übersicht, Button „Prüfen" klicken – setzt den Haken im Audit-Log.
  6. Finale Ablage in Outlook (manuell)
    Nach deiner Prüfung verschiebst du die Mail selbst von KUNDENAUFTRAG VON RUDI ERSTELLT nach KUNDEN-Bestellungen gesammelt. Das ist das Langzeit-Archiv – RUDI fasst es nie an.
Regel: Wenn die Mail noch in Info-Inbox liegt, wurde sie noch nicht angelegt. Wenn sie in KUNDENAUFTRAG VON RUDI ERSTELLT liegt, wartet sie auf deine finale Prüfung. Wenn sie in KUNDEN-Bestellungen gesammelt liegt, ist sie komplett erledigt.

Outlook-Ordner (Info-Postfach)

OrdnerWer bewegt dort Mails hin?Bedeutung
Info-InboxKunde / E-Mail-ServerNeue, unbearbeitete Bestellung
KUNDENAUFTRAG VON RUDI ERSTELLTRUDI automatisch nach AnlageAuftrag ist in HFX360 angelegt, wartet auf deine Prüfung
KUNDEN-Bestellungen gesammeltDu manuell nach PrüfungArchiv – Bestellung komplett erledigt

Frontend-Seiten

SeiteZweck
/hfx360/inbox.htmlNeue Bestellungen – Liste der Info-Inbox mit Kundenerkennung + Vorschau + Anlege-Button
/hfx360/Übersicht – alle bisher angelegten Aufträge (Audit-Log), Direkt-Link zu HFX360, Prüf-Button
/hfx360/auftrag.html?id=NAuftrag-Detail – Positionen, Warnungen, Verify-Ergebnis
/hfx360/kundenregeln.htmlKundenregeln – pro Kunde: Anliefertage, Produktionsdatum-Regel, Whitelist
/hfx360/mapping.htmlArtikel-Mapping – Kunden-Artikelnummer → unsere Artikelnummer (für Kunden mit eigenem Nummernkreis)

Unterstützte Kunden

KundeNrFormatBesonderheit
BeFlexx GmbH22507Plain-Text-MailProduktionsdatum = Lieferdatum; Stück-Umrechnung via Historie
Der Markgräfler21204HTML-MailEigene Kundennummern (Mapping)
FrischeBrüder20605PDF-AnhangEigene Bezeichnungen (Mapping), Aggregation pro Gebinde
Europa-Park20508PDF-Anhang5 Standorte (ELAN/COLO/BELL/KRØN/EATR/ZENT), Erdbeer-Split bei Sonntag-Lieferung unter 30kg
Backkultur20212review-nötig – noch kein Parser
Fruchthof Konstanz20632geplant – Format unbekannt

Kundenregeln (was pro Kunde hinterlegt ist)

Jeder Kunde hat eine Regel in der DB (kundenregeln) mit diesen Feldern – bearbeitbar unter /hfx360/kundenregeln.html:

FeldBedeutung
auto_anlage_erlaubtDarf RUDI für diesen Kunden überhaupt Aufträge anlegen?
produktionsdatum_offset_tageWieviele Tage vor dem Lieferdatum wird produziert (i.d.R. 0 = am selben Tag, BeFlexx: 0)
wochenend_regel_jsonSonderregel wenn Lieferung am Wochenende (z.B. Erdbeer-Split)
keine_anliefertage_jsonWochentage an denen der Kunde nicht beliefert wird – Anlage wird blockiert
standort_whitelist_jsonErlaubte Lager-Standorte (nur relevant bei Mehr-Standort-Kunden wie Europa-Park)
artikel_whitelist_jsonErlaubte Artikel pro Kunde – wenn gesetzt, wird bei anderen Artikeln gewarnt
freigabe_statusfreigegeben / review-nötig / permanent-blockiert

Sicherheitsgarantien

Jede Auftragsanlage durchläuft mehrere Stufen. Bei jedem Fehler bricht der gesamte Vorgang ab.

1. Vor-Validierung (bevor überhaupt etwas geschrieben wird)

2. Audit-Eintrag im Auftrag

Im Feld Beschreibung des Kundenauftrags steht automatisch: [Automatisch via RUDI] von <Absender> · Betreff: "..." · E-Mail vom <Datum> · angelegt YYYY-MM-DD HH:MM:SS. So ist jeder RUDI-Auftrag sofort erkennbar.

3. Nach-Verifikation (Verify)

Sofort nach dem Anlegen wird der Auftrag neu gelesen (GET /SalesOrder/KA/{nr}?$expand=Details) und Position für Position mit der Eingabe verglichen. Bei jeder Abweichung (fehlende Position, falsche Menge, falscher Artikel) wird der Auftrag sofort wieder gelöscht und der Fehler gemeldet.

4. Mail-Anhang + Mail-Verschieben

Nach erfolgreicher Verifikation wird die Original-Mail als .eml-Datei an den Auftrag angehängt (Feld „Dateien" in HFX360, per PUT /entity/Default/24.200.001/SalesOrder/KA/{nr}/files/{name}.eml). Danach verschiebt RUDI die Mail im Info-Postfach in den Ordner KUNDENAUFTRAG VON RUDI ERSTELLT.

5. Kein stilles Auto-Handling

Notfallplan

Drei Stufen der Sperre – je nach Schweregrad. Alle wirken sofort, der Wrapper macht zusätzlich einen Service-Neustart zur Sicherheit.

Stufe 1: Kompletter Stopp (Read + Write blockiert)

sudo ~/bin/hfx360-disable.sh "Begründung"

Reaktivieren:

sudo ~/bin/hfx360-enable.sh

Stufe 2: Read-Only (Lesen erlaubt, Schreiben blockiert)

sudo ~/bin/hfx360-readonly.sh        # aktivieren
sudo ~/bin/hfx360-readonly.sh off    # deaktivieren

Sinnvoll wenn ihr nur keine neuen Anlagen wollt, aber Lookups (Customer, Artikel, Auftrags-Status) weiter erlaubt sein sollen.

Stufe 3: HFX360-seitig sperren

Für echte Notfälle, wenn der Server kompromittiert wäre:

Logs & Datenbank

Audit-Log in SQLite

Jede Anlage (und jeder Fehler) landet in ~/rudi-chat/hfx360.db, Tabelle hfx360_auftraege_log:

SpalteInhalt
mail_idEindeutige Mail-ID (Unique, verhindert Doppelanlage)
eingabe_jsonVollständiger PUT-Body der an HFX360 geschickt wurde
response_jsonAntwort von HFX360 (gekürzt auf 20k)
verifikation_jsonVerify-Ergebnis inkl. Abweichungsliste
statusok / abweichung-geloescht / fehler
descriptionAudit-Text der im Auftrag eingetragen wurde
order_totalEndsumme aus Response
geprueft_am / geprueft_vonWer hat den Auftrag nach Anlage manuell abgehakt

Schnellabfragen

# Letzte 10 Anlagen
sqlite3 ~/rudi-chat/hfx360.db \
  "SELECT erstellt_am, kunden_nr, auftrags_nr, status, order_total
   FROM hfx360_auftraege_log ORDER BY erstellt_am DESC LIMIT 10"

# Alle Fehler
sqlite3 ~/rudi-chat/hfx360.db \
  "SELECT erstellt_am, mail_id, fehler FROM hfx360_auftraege_log
   WHERE status != 'ok' ORDER BY erstellt_am DESC"

# Noch ungeprüfte Aufträge
sqlite3 ~/rudi-chat/hfx360.db \
  "SELECT erstellt_am, auftrags_nr, kunden_name FROM hfx360_auftraege_log
   WHERE status = 'ok' AND geprueft_am IS NULL ORDER BY erstellt_am DESC"

Service-Logs

sudo journalctl -u rudi-chat -f | grep -i hfx360

Technik (für Admins)

Endpoint + Auth

Wichtige Calls

OperationHTTP
Auftrag anlegenPUT /SalesOrder
Auftrag lesen (Verify)GET /SalesOrder/KA/{nr}?$expand=Details&$custom=Document.UsrProdDate
Auftrag löschen (bei Abweichung)DELETE /SalesOrder/KA/{nr}
Mail anhängenPUT /SalesOrder/KA/{nr}/files/{filename} (binary)
Customer-CheckGET /Customer/{id}
Artikel-CheckGET /StockItem/{id}?$select=InventoryID,Description,BaseUOM,ItemStatus

Custom-Feld Produktionsdatum

Wird als Acumatica Custom Field gesetzt: SOOrder.UsrProdDate (Typ CustomDateTimeField). Im PUT-Body unter custom.Document.UsrProdDate.

Tools für RUDI im Chat

ToolZweck
hfx360_auftrag_vorschauMail lesen, Kunde erkennen, Positionen umrechnen, Warnungen – kein Schreiben
hfx360_auftrag_anlegenEchter PUT mit Validierung + Verify + Mail-Anhang + Verschieben. Nur mit bestaetigt=true.
hfx360_api_statusHealth-Check: Kill-Switch, Endpoint, Login-Test

Quelldateien