pixiManualCreditCreate
Legt eine manuelle Gutschrift (negative Rechnung) zu einer bestehenden Rechnung mit einem Betrag und einem Steuersatz an.
Legt eine Gutschrift an, die auf eine bestehende Rechnung verweist. Die Gutschrift hat keine Artikelpositionen; sie besteht aus einem Betrag und einem Steuersatz.
- Prüfungen
Amountmuss größer als 0 sein.VATRatemussH,LoderNsein.- Mindestens
InvoiceKeyoderInvoiceNrmuss angegeben werden. Ist nurInvoiceNrangegeben, wird der Schlüssel inInvoicesermittelt. Die Rechnung muss existieren. Sind beide angegeben, müssen sie zur selben Rechnung gehören.
- Rechnungsdaten: Auftragstyp, Rechnungslager, Kunde, Rechnungs- und Lieferadresse sowie Währung werden aus der ursprünglichen Rechnung übernommen. Das Land stammt aus der Rechnungsadresse.
- Positionstext: Ist
PositionTextleer, wird ein Standardtext erzeugt. BeiLanguageId= 1 lautet erManual Credit: Created From: {InvoiceNr}, sonstManuell Gutschrift: Erstellt von: {InvoiceNr}.LanguageIdist standardmäßig 2. - Steuerberechnung: Die Steuersätze für Land und Auftragstyp werden über
Pixi_CA_GetVATListgelesen. Verwendet wird die Zeile mit dem angefordertenVATRate.- Bei Auftragstyp
B2BgiltAmountals Nettobetrag: netto = −Amount, brutto = −Amount× (1 + MwSt.), auf 2 Stellen gerundet. - Bei allen anderen Auftragstypen gilt
Amountals Bruttobetrag: brutto = −Amount, netto = −Amount/ (1 + MwSt.), auf 2 Stellen gerundet.
- Bei Auftragstyp
- Limitprüfung: Der absolute Bruttobetrag der neuen Gutschrift wird zur absoluten Summe der Beträge aller Rechnungen addiert, die bereits auf die ursprüngliche Rechnung verweisen (
RefToInvoiceKey). Ist das Ergebnis größer als der Rechnungsbetrag der ursprünglichen Rechnung, wird der Aufruf abgelehnt. - Anlage:
Pixi_CA_InsertManualInvoicelegt die Gutschrift an. Dabei wird Folgendes ausgeführt:- die nächste Rechnungsnummer wird vergeben;
- der Datensatz wird in
Invoiceseingefügt, wobeiRefToInvoiceKey/RefToInvoiceNrauf die ursprüngliche Rechnung verweisen; - SEPA-Daten und ein
InvoicePackage-Datensatz werden ergänzt; - die Gutschrift wird auf das Kundenkonto gebucht;
- das MQ-Event
InvoiceCreatedwird veröffentlicht.
Der Aufruf liefert eine Statuszeile mit Status und Message.
Hinweise
- Der Aufruf läuft in einer eigenen Transaktion. Ist bereits eine Transaktion offen, wird stattdessen ein Savepoint verwendet. Prüffehler führen zum Rollback mit Rückgabewert 2. Unerwartete Fehler werden über
log.InsertErrorprotokolliert und liefern Rückgabewert 3. Erfolg liefert 0. Rückgabewerte sind nicht Teil der SOAP-Zeilen. AmountundVATRatesollten immer übergeben werden. EinNULL-Wert löst die Prüfungen nicht aus, da Vergleiche mitNULLnicht wahr sind. Die berechneten Beträge bleiben dannNULL, und auch die Limitprüfung greift nicht.- Dasselbe gilt, wenn die Steuerliste keine Zeile für den angeforderten
VATRateenthält, z. B.Lfür ein Land ohne ermäßigten Satz. Die Beträge bleibenNULL. Pixi_CA_GetVATListkann für denselbenVATRatesowohl den aktuellen als auch einen vor 12 Monaten gültigen Satz liefern. Welche Zeile dann für die Berechnung verwendet wird, ist im Code nicht festgelegt.- Die Limitprüfung addiert den Absolutwert der Summe bestehender verweisender Rechnungen, nicht die Summe der Absolutwerte.
- Die Rechnungsabfragen verwenden
NOLOCK. Gleichzeitige Gutschriften zur selben Rechnung werden daher nicht sicher daran gehindert, den Rechnungsbetrag zu überschreiten. Pixi_CA_InsertManualInvoicefängt eigene Fehler ab, protokolliert sie und gibt sie nicht weiter. Bei einem Fehler dort kann trotzdem dieOK-Zeile geliefert werden. Darauf kann eineError-Zeile folgen, wenn der abschließende Commit fehlschlägt, weil die Transaktion bereits zurückgerollt wurde.- Der Text des allgemeinen Fehlers (
...getting the report values...) ist irreführend; er betrifft jeden unerwarteten Fehler dieses Aufrufs. - Die inneren Prozeduren
Pixi_GetNextInvNr,Pixi_CA_AddPixiInvoice,Pixi_AddDataForSEPAExportToInvoiceundPixi_MQ_EventPublishliegen nicht vor. Ihre genauen Auswirkungen, etwa Kundenkontobuchungen und das MQ-Event, sind hier nicht dokumentiert.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
InvoiceKey
|
int | NULL |
Schlüssel der ursprünglichen Rechnung. Dieser Wert oder Beispiel: |
InvoiceNr
|
varchar(20) string |
NULL |
Nummer der ursprünglichen Rechnung. Dient zur Ermittlung des Schlüssels, wenn Beispiel: |
PositionText
|
varchar(120) string |
NULL |
Text der Gutschrift, gespeichert als Rechnungstext ohne Positionen. Ist er leer, wird ein Standardtext mit der ursprünglichen Rechnungsnummer verwendet. Beispiel: |
LanguageId
|
tinyint int |
NULL |
Sprache für den Standard-Positionstext. Erlaubte Werte
Beispiel: |
VATRate
|
varchar(1) string |
NULL |
Steuersatzklasse des Gutschriftbetrags. Erlaubte Werte
Beispiel: |
Amount
|
money decimal |
NULL |
Positiver Gutschriftbetrag. Bei Auftragstyp Beispiel: |
UserName
|
varchar(50) string |
NULL |
Benutzername, der als Ersteller der Gutschrift gespeichert wird. Beispiel: |
Antwort
Result-Set 1 · Immer; eine Statuszeile (bei seltenen inneren Fehlern kann auf eine OK-Zeile eine Error-Zeile folgen)
Status der Verarbeitung.
| Spalte | Typ | Beschreibung |
|---|---|---|
Status
|
varchar(5) string |
|
Message
|
varchar(max) string |
|
Beispielantwort
<SqlRowSet1>
<row>
<Status>OK</Status>
<Message>Credit created</Message>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| Error | Amount should be positive | `Amount` ist 0 oder negativ. Einen positiven Betrag übergeben. |
| Error | Missing VAT data | `VATRate` ist nicht `H`, `L` oder `N`. |
| Error | Missing Invoice data | Weder `InvoiceKey` noch `InvoiceNr` wurde angegeben. |
| Error | Invoice does not exist | Zur angegebenen `InvoiceNr` bzw. `InvoiceKey` wurde keine Rechnung gefunden. |
| Error | InvoiceNr and InvoiceKey do not match | Beide Kennungen wurden angegeben, gehören aber zu verschiedenen Rechnungen. Nur eine oder übereinstimmende Werte übergeben. |
| Error | Credit total is too high | Die neue Gutschrift zusammen mit bestehenden Gutschriften zur Rechnung würde den Rechnungsbetrag übersteigen. Betrag verringern. |
| Error | Unexpected error while getting the report values. ({ERROR_MESSAGE}) | Ein unerwarteter SQL-Fehler ist aufgetreten; die Transaktion wird zurückgerollt und der Fehler protokolliert. |
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:pixiManualCreditCreate>
<!-- <InvoiceKey>104523</InvoiceKey> -->
<!-- <InvoiceNr>RE2024001234</InvoiceNr> -->
<!-- <PositionText>Goodwill credit for late delivery</PositionText> -->
<!-- <LanguageId>2</LanguageId> -->
<!-- <VATRate>H</VATRate> -->
<!-- <Amount>25.00</Amount> -->
<!-- <UserName>api_user</UserName> -->
</ns1:pixiManualCreditCreate>
</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:pixiManualCreditCreate>
<!-- <InvoiceKey>104523</InvoiceKey> -->
<!-- <InvoiceNr>RE2024001234</InvoiceNr> -->
<!-- <PositionText>Goodwill credit for late delivery</PositionText> -->
<!-- <LanguageId>2</LanguageId> -->
<!-- <VATRate>H</VATRate> -->
<!-- <Amount>25.00</Amount> -->
<!-- <UserName>api_user</UserName> -->
</ns1:pixiManualCreditCreate>
</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 = [
// 'InvoiceKey' => '104523',
// 'InvoiceNr' => 'RE2024001234',
// 'PositionText' => 'Goodwill credit for late delivery',
// 'LanguageId' => '2',
// 'VATRate' => 'H',
// 'Amount' => '25.00',
// 'UserName' => 'api_user',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiManualCreditCreate', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiManualCreditCreate