Per API Rechnung erstellen

Wir erstellen per API eine neue Rechnung. Dafür wird ein JSON generiert und an die API gesendet. Das funktioniert solang ohne Probleme, bis ich im Punkt „invoicePositionSave“ einer Position ein „part“ übergebe. Sende ich das „part“ als null-Wert, wird die Rechnung ohne Probleme angelegt. Sobald ich aber, wie im Beispiel der SevDesk API Dokumentation, das Part als Objekt mit einem Namen und ID übergebe, bekomme ich von der API direkt die Fehlermeldung „Status: 500 - Internal Server Error“.

Teil von unserem Eintrag im JSON:

„invoicePosSave“: [
{
„quantity“: „1“,
„part“: {
„objectName“: „Part“,
„id“: 1042
},
„discount“: null,
„positionNumber“: „1“,
„priceGross“: null,
„mapAll“: „true“,
„unity“: {
„objectName“: „Unity“,
„id“: „1“
},
„taxRate“: „19“,
„price“: „2000.0“,
„name“: „Fixum“,
„objectName“: „InvoicePos“,
„text“: null,
„priceTax“: null
}
],

Beispieleintrag SevDesk API Doku (sevDesk - InvoiceAPI)

„invoicePosSave“: [
{
„part“: {
„id“: 0,
„objectName“: „Part“
},
„quantity“: 1,
„price“: 100,
„name“: „Dragonglass“,
„priority“: 100,
„unity“: {
„id“: 1,
„objectName“: „Unity“
},
„positionNumber“: null,
„text“: null,
„discount“: null,
„taxRate“: 19,
„temporary“: null,
„priceGross“: 100,
„priceTax“: null,
„mapAll“: „true“,
„objectName“: „InvoicePos“
}
],

Wo liegt da mein Denkfehler. Ich verstehe es leider nicht.

Hallo @Marco_Brenn,

willkommen im sevDesk Forum :slight_smile:

mit der PART ID ist die interne unique Part_ID gemeint. Nicht die von dir selbst vergebene Artikelnummer.

Diese kannst du z.B. über einen GET Request an https://my.sevdesk.de/api/v1/Part abgefragt werden.

Viele Grüße,
Eduard

2 „Gefällt mir“

Hallo Eduard,

vielleicht kannst du mir auch einen Denkanstoß geben. Bin echt am verzweifeln eine Rechnung per Api anzulegen. Denn ich denke es liegt auch am Part in InvoicePosSave. Eigentlich würde ich gerne das was Marco_Brenn beschrieben hat hinzubekommen und zwar die Rechnung anzulegen ohne Part. Leider ist die Api hier nicht gerade gesprächig wo der Fehler liegt. Einfach nen 500 zurück zu bekommen ohne irgendeine Meldung frustriert ungemein.

Hier mal ein Beispiel von der Daten die ich übertrage.

{
„invoice“: {
„invoiceNumber“: „63448“,
„contact“: {
„id“: 34606508,
„objectName“: „Contact“
},
„invoiceDate“: „26.09.2021“,
„header“: „Rechnung“,
„headText“: „null“,
„footText“: „null“,
„timeToPay“: „null“,
„discountTime“: „null“,
„discount“: 0,
„addressName“: „null“,
„addressStreet“: „null“,
„addressZip“: „null“,
„addressCity“: „null“,
„addressCountry“: „null“,
„payDate“: „null“,
„deliveryDate“: „26.09.2021“,
„status“: 100,
„smallSettlement“: 0,
„contactPerson“: {
„id“: „XXXXX“,
„objectName“: „SevUser“
},
„taxRate“: 19,
„taxText“: „Umsatzsteuer 19%“,
„dunningLevel“: „null“,
„addressParentName“: „null“,
„addressContactRef“: „null“,
„taxType“: „default“,
„paymentMethod“: „null“,
„costCentre“: „null“,
„sendDate“: „null“,
„origin“: „null“,
„invoiceType“: „RE“,
„accountInterval“: „null“,
„accountNextInvoice“: „null“,
„reminderTotal“: „null“,
„reminderDebit“: „null“,
„remiderDeadline“: „null“,
„reminderCharge“: „null“,
„taxSet“: „null“,
„address“: „mr Test \r\nTeststr. 28\r\n04315 Teststadt\r\nDeutschland“,
„currency“: „EUR“,
„customerInternalNote“: „null“,
„showNet“: 0,
„enshrined“: „null“,
„sendType“: „null“,
„deliveryDateUntil“: „null“,
„sendPaymentReceivedNotificationDate“: „null“,
„datevConnectOnline“: „null“,
„mapAll“: „true“,
„objectName“: „Invoice“
},
„invoicePosSave“: [
{
„quantitiy“: 1,
„price“: 94.99,
„name“: „Test1“,
„unity“: {
„id“: 1,
„objectName“: „Unity“
},
„positionNumber“: „null“,
„text“: „null“,
„discount“: „null“,
„taxRate“: 19,
„priceGross“: „null“,
„priceTax“: „null“,
„mapAll“: „true“,
„objectName“: „InvoicePos“
},
{
„quantitiy“: 1,
„price“: 38.99,
„name“: „Test 2“,
„unity“: {
„id“: 1,
„objectName“: „Unity“
},
„positionNumber“: „null“,
„text“: „null“,
„discount“: „null“,
„taxRate“: 19,
„priceGross“: „null“,
„priceTax“: „null“,
„mapAll“: „true“,
„objectName“: „InvoicePos“
}
],
„takeDefaultAddress“: „false“

}

Gruß

Hallo @Florian_Lochner,

willkommen im sevDesk Forum!

Was bei dir sofort ins Auge fällt, du übergibst keine contactPerson:

Diese ID sagt aus von welchem SevUser die Rechnung erstellt wurde.

Deine eigene ID kannst du über GET

> https://my.sevdesk.de/api/v1/SevUser

herausfinden und eintragen.

Wenn es keine PartID gibt kannst du dafür auch null übergeben, dafür muss aber das ganze Objekt mit Null übergeben werden:
image

und du solltest noch „quantitiy“: 1, auf „quantity“: 1 ändern.

Hier solltest du entweder „0“ oder 0.0 verwenden.

Viele Grüße,
Eduard