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:
- Ein leerer Wert für
InvoiceNrgilt als nicht angegeben. Fehlende Werte fürSubjectundMessagewerden zu Leerstrings. Subject,MessageundInvoiceNrwerden in einer temporären Tabelle abgelegt (Api_Subject,Api_Message,InvoiceNr). Die SQL-Abfrage des Mailtyps kann beim Aufbau der Mail darauf zugreifen.- Der Mailtyp
API_Invoice_eMailwird inAM_Typegesucht und muss aktiviert sein. - Die Rechnung wird aus
Invoicesgelesen und mit ihrer Rechnungsadresse inAddressesverknüpft. Daraus ergeben sich Kunde, Shop-ID, Land, Versanddienstleister und Zahlungsart. - Über
fPixi_AM_GetTemplatewird 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. pixi_AM_CreateMailForCSDerzeugt die Mail: Empfänger, Betreff, Text und Textart.Pixi_AM_SendManualspeichert die Mail mit StatusCREATEDinAM_Mail. Gegebenenfalls wird das Rechnungsdokument als Anhang hinterlegt.- Der Schlüssel des neuen Mail-Datensatzes wird in der Spalte
AM_TypeKeyzurü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_Mailan, und zwar in Ordner 1 (Postausgang) oder in Ordner 0 (Entwürfe), wenn die EinstellungPixiMail_ForceManualMode=1ist oder der Mailtyp im manuellen Modus steht. Zusätzlich wird das MQ-EreignisMailCreatedveröffentlicht. - Testmodus: Ist die Einstellung
PixiMail_ForceTestMode=1oder der Testmodus des Mailtyps aktiv, wird der Empfänger durch die Adresse aus der EinstellungPixiMail_Test_eMailersetzt. - Betreff und Nachricht: Der übergebene
Subjectwird durch den von der Vorlage erzeugten Betreff überschrieben.SubjectundMessageerscheinen nur dann in der Mail, wenn die SQL-Abfrage des Mailtyps oder die VorlageApi_Subject/Api_Messageverwendet. Diese Abfrage ist inAM_Type.AM_TypeSQLprochinterlegt 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_SendManualerwartet den Typ mitAM_TypeFolder= 1. Andernfalls wirdEmail Type is disabledausgelöst. Der Aufrufer erhält dann eineSqlMessageund eine Zeile mitAM_TypeKey= 0. - Irreführender Spaltenname:
AM_TypeKeyenthält den Schlüssel der neuen Mail (Identity vonAM_Mail), nicht den Typschlüssel. - Rechnungsanhang: Das Rechnungsdokument wird nur dann über
AM_MailAttachmentangehängt, wenn der Mailtyp Anhänge erlaubt, die VorlageAttachInvoiceDocument= 1 hat und ein Anhangspfad ermittelt wird. AM_MailInvoiceNrwird im Mail-Datensatz als NULL gespeichert.UserNamewird an einen Parameter vom Typvarchar(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 ( Beispiel: |
Subject
Pflicht
|
varchar(255) string |
– |
Betrefftext. Er wird der Abfrage des Mailtyps als Beispiel: |
Message
Pflicht
|
varchar(1024) string |
– |
Freier Nachrichtentext. Er wird der Abfrage des Mailtyps als Beispiel: |
UserName
Pflicht
|
varchar(50) string |
– |
Benutzer, der als Ersteller und letzter Bearbeiter des Mail-Datensatzes gespeichert wird. Werte über 20 Zeichen werden abgeschnitten. Beispiel: |
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 |
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 |
ErrorMsg
|
varchar(40) string |
Fehlertext. |
Beispielantwort
<SqlRowSet1>
<row>
<AM_TypeKey>158342</AM_TypeKey>
</row>
</SqlRowSet1>
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>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?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>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'InvoiceNr' => 'ZEB000003',
'Subject' => 'Your invoice ZEB000003',
'Message' => 'Thank you for your order. Please find your invoice attached.',
'UserName' => 'master',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiSendEmailForInvoice', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiSendEmailForInvoice