Postman-Collection
Invoices Schreiben

pixiSendEmailForInvoice

Legt für eine Rechnung eine Pixi-Automail vom Typ `API_Invoice_eMail` aus der passenden Mailvorlage an und stellt sie in den Postausgang oder die Entwürfe.

Erzeugt über das Pixi-Automail-Modul (AM) eine E-Mail zu einer Rechnung und stellt sie zum Versand bereit. Verwendet wird der Mailtyp API_Invoice_eMail.

Ablauf:

  1. Ein leerer Wert für InvoiceNr gilt als nicht angegeben. Fehlende Werte für Subject und Message werden zu Leerstrings.
  2. Subject, Message und InvoiceNr werden in einer temporären Tabelle abgelegt (Api_Subject, Api_Message, InvoiceNr). Die SQL-Abfrage des Mailtyps kann beim Aufbau der Mail darauf zugreifen.
  3. Der Mailtyp API_Invoice_eMail wird in AM_Type gesucht und muss aktiviert sein.
  4. Die Rechnung wird aus Invoices gelesen und mit ihrer Rechnungsadresse in Addresses verknüpft. Daraus ergeben sich Kunde, Shop-ID, Land, Versanddienstleister und Zahlungsart.
  5. Über fPixi_AM_GetTemplate wird eine Mailvorlage dieses Typs gewählt. Gesucht wird eine aktive Vorlage, die zu Shop, Land, Zahlungsart und Versanddienstleister passt. Passt keine Vorlage zu allen vier Kriterien, wird schrittweise auf Vorlagen mit weniger Übereinstimmungen und zuletzt auf eine allgemeine Vorlage zurückgegriffen.
  6. pixi_AM_CreateMailForCSD erzeugt die Mail: Empfänger, Betreff, Text und Textart.
  7. Pixi_AM_SendManual speichert die Mail mit Status CREATED in AM_Mail. Gegebenenfalls wird das Rechnungsdokument als Anhang hinterlegt.
  8. Der Schlüssel des neuen Mail-Datensatzes wird in der Spalte AM_TypeKey zurückgegeben.

Schlägt eine Prüfung fehl, liefert der Aufruf eine Zeile mit ReturnCode = ERROR und einer ErrorMsg und bricht ab.

Hinweise

  • Der Aufruf versendet die Mail nicht direkt. Er legt einen Datensatz in AM_Mail an, und zwar in Ordner 1 (Postausgang) oder in Ordner 0 (Entwürfe), wenn die Einstellung PixiMail_ForceManualMode = 1 ist oder der Mailtyp im manuellen Modus steht. Zusätzlich wird das MQ-Ereignis MailCreated veröffentlicht.
  • Testmodus: Ist die Einstellung PixiMail_ForceTestMode = 1 oder der Testmodus des Mailtyps aktiv, wird der Empfänger durch die Adresse aus der Einstellung PixiMail_Test_eMail ersetzt.
  • Betreff und Nachricht: Der übergebene Subject wird durch den von der Vorlage erzeugten Betreff überschrieben. Subject und Message erscheinen nur dann in der Mail, wenn die SQL-Abfrage des Mailtyps oder die Vorlage Api_Subject / Api_Message verwendet. Diese Abfrage ist in AM_Type.AM_TypeSQLproc hinterlegt und läuft als dynamisches SQL. Ihr genaues Verhalten ist aus dem Code nicht ersichtlich.
  • Schlägt die dynamische Abfrage fehl, wird der Fehler nur im AM-Log protokolliert und der Aufruf liefert eMail was not created!.
  • Liefert die Abfrage keine Zeilen, entsteht eine leere Platzhalter-Mailzeile. Diese wird unter Umständen mit leerem Empfänger gespeichert.
  • Mailtyp muss auch als Ordner-1-Typ existieren: Pixi_AM_SendManual erwartet den Typ mit AM_TypeFolder = 1. Andernfalls wird Email Type is disabled ausgelöst. Der Aufrufer erhält dann eine SqlMessage und eine Zeile mit AM_TypeKey = 0.
  • Irreführender Spaltenname: AM_TypeKey enthält den Schlüssel der neuen Mail (Identity von AM_Mail), nicht den Typschlüssel.
  • Rechnungsanhang: Das Rechnungsdokument wird nur dann über AM_MailAttachment angehängt, wenn der Mailtyp Anhänge erlaubt, die Vorlage AttachInvoiceDocument = 1 hat und ein Anhangspfad ermittelt wird.
  • AM_MailInvoiceNr wird im Mail-Datensatz als NULL gespeichert.
  • UserName wird an einen Parameter vom Typ varchar(20) übergeben; längere Werte werden abgeschnitten.
  • Lesezugriffe erfolgen mit NOLOCK. Es wird keine explizite Transaktion verwendet.

Parameter

Parameter Typ Standardwert Beschreibung
InvoiceNr
Pflicht
varchar(20)
string
–

Nummer der Rechnung, zu der die Mail erzeugt wird (Invoices.InvoiceNr). Ein leerer Wert wird abgelehnt.

Beispiel: ZEB000003

Subject
Pflicht
varchar(255)
string
–

Betrefftext. Er wird der Abfrage des Mailtyps als Api_Subject bereitgestellt. Der endgültige Betreff stammt aus der Vorlage. NULL wird als Leerstring behandelt.

Beispiel: Your invoice ZEB000003

Message
Pflicht
varchar(1024)
string
–

Freier Nachrichtentext. Er wird der Abfrage des Mailtyps als Api_Message bereitgestellt. NULL wird als Leerstring behandelt.

Beispiel: Thank you for your order. Please find your invoice attached.

UserName
Pflicht
varchar(50)
string
–

Benutzer, der als Ersteller und letzter Bearbeiter des Mail-Datensatzes gespeichert wird. Werte über 20 Zeichen werden abgeschnitten.

Beispiel: master

Antwort

Result-Set 1 · Bei Erfolg; mit Wert 0 auch dann, wenn Pixi_AM_SendManual einen Fehler ausgelöst hat

Schlüssel des neu angelegten Mail-Datensatzes.

Spalte Typ Beschreibung
AM_TypeKey
Kann leer sein
int

Schlüssel des neuen AM_Mail-Datensatzes, trotz des Spaltennamens.ically

Result-Set 2 · Wenn eine Prüfung fehlschlägt oder keine Mail erzeugt werden konnte

Statuszeile mit der Fehlerbeschreibung.

Spalte Typ Beschreibung
ReturnCode varchar(5)
string

Immer ERROR.

ErrorMsg varchar(40)
string

Fehlertext.

Fehlermeldungen

Status Meldung Ursache
ERROR Please specify the InvoiceNr parameter `InvoiceNr` ist NULL oder leer. Eine gültige Rechnungsnummer übergeben.
ERROR eMail type is not enabled! In `AM_Type` gibt es keinen aktivierten Mailtyp `API_Invoice_eMail`. Den Mailtyp in der Pixi-Automail-Konfiguration aktivieren.
ERROR Specified Invoice was not found! Es gibt keine Rechnung mit dieser Nummer, oder der Rechnung ist keine Adresse zugeordnet.
ERROR Cant find correct eMail template! Keine aktive Vorlage des Typs `API_Invoice_eMail` passt zu Shop, Land, Zahlungsart oder Versanddienstleister der Rechnung, und es gibt auch keine allgemeine Vorlage. Eine passende oder allgemeine Vorlage anlegen.
ERROR eMail was not created! Die Mailerzeugung lieferte keine Zeile, zum Beispiel weil die SQL-Abfrage des Mailtyps fehlgeschlagen ist. AM-Log und Typabfrage prüfen.
RAISERROR Email Type is disabled Wird von `Pixi_AM_SendManual` ausgelöst, wenn der Typ `API_Invoice_eMail` mit `AM_TypeFolder` = 1 fehlt oder nicht aktiviert ist. In diesem Fall wird `AM_TypeKey` = 0 zurückgegeben.

Beispiele

POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
  <SOAP-ENV:Body>
    <ns1:pixiSendEmailForInvoice>
      <InvoiceNr>ZEB000003</InvoiceNr>
      <Subject>Your invoice ZEB000003</Subject>
      <Message>Thank you for your order. Please find your invoice attached.</Message>
      <UserName>master</UserName>
    </ns1:pixiSendEmailForInvoice>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verwendete Tabellen

AM_Type · Lesen Invoices · Lesen Addresses · Lesen AM_Template · Lesen Customers · Lesen AM_Mail · Schreiben AM_MailAttachment · Schreiben
SQL-Objekt:
dbo.pipiSendEmailForInvoice
Prozedur zuletzt geändert am 2026-10-05
Dokumentation von claude-opus-5-5 am 2026-10-30 geschrieben