POST Voucher App_Summ error

Seit kurzem bekommen wir beim POST folgenden zurück:

error":{"message":"Argument 1 passed to App_Sum::overrideCurrencyExchangeRate() must be of the type float, null given, called in \/sevserver\/app\/sevdesk\/application\/models\/VoucherPos.php on line 395"

Bis vor kurzem hat hiermit noch tadellos funktioniert:

{
      "voucher": {
        "voucherDate": "03.02.2022",
        "supplier": {
          "id": 39989836,
          "objectName": "Contact"
        },
        "supplierName": "Test Name",
        "description": "Rechnung0002029",
        "document": null,
        "resultDisdar": null,
        "documentPreview": null,
        "payDate": "03.02.2022",
        "status": 1000,
        "currency": "USD",
        "taxType": "default",
        "creditDebit": "D'",
        "hidden": null,
        "costCentre": {
          "id": 95975,
          "objectName": "CostCentre"
        },
        "voucherType": "VOU",
        "recurringIntervall": null,
        "recurringInterval": null,
        "recurringStartDate": null,
        "recurringNextVoucher": null,
        "recurringLastVoucher": null,
        "recurringEndDate": null,
        "enshrined": null,
        "inSource": null,
        "taxSet": null,
        "iban": null,
        "accountingSpecialCase": null,
        "paymentDeadline": null,
        "tip": null,
        "mileageRate": null,
        "selectedForPaymentFile": null,
        "supplierNameAtSave": null,
        "taxmaroStockAccount": null,
        "vatNumber": null,
        "deliveryDate": "02.02.2022",
        "deliveryDateUntil": "02.02.2022",
        "mapAll": "true",
        "objectName": "Voucher"
      },
      "voucherPosSave": [
        {
          "accountingType": {
            "id": 699878,
            "objectName": "AccountingType"
          },
          "taxRate": 0,
          "sum": null,
          "net": "true",
          "isAsset": "false",
          "sumNet": 200,
          "sumGross": null,
          "comment": null,
          "mapAll": "true",
          "objectName": "VoucherPos"
        }
      ],
      "voucherPosDelete": null,
      "filename": "sjsjsdhdhhs.pdf"
    }

Jemand einen Hinweis woran es liegt? Läuft in PHP die sumNet ist float.

Das Feld currency ist soweit nicht Dokumentiert. Ich gehe mal davon aus, dass die Verwendung (noch) nicht gewünscht ist.

Beim Anlegen des Vouchers in Fremdwährung sind noch diese zusätzlichen Felder notwendig:

voucher:
voucher[sumNetForeignCurrency] = "<NETTO FREMDWÄHRUNG>"
voucher[sumTaxForeignCurrency] = "<STEUER FREMDWÄHRUNG>"
voucher[sumGrossForeignCurrency] = "<BRUTTO FREMDWÄHRUNG>"
voucher[sumDiscountNetForeignCurrency] = "<RABATT NETTO FREMDWÄHRUNG>" (optional)
voucher[sumDiscountGrossForeignCurrency] = "<RABATT BRUTTO FREMDWÄHRUNG>" (optional)
voucher[propertyForeignCurrencyDeadline] = "<UNIX TIMESTAMP>"

voucherPosSave:
voucherPosSave[i][sumNetForeignCurrency] = "<NETTO FREMDWÄHRUNG>"
voucherPosSave[i][sumTaxForeignCurrency]	 = "<STEUER FREMDWÄHRUNG>"
voucherPosSave[i][sumGrossForeignCurrency] = "<BRUTTO FREMDWÄHRUNG>"
voucherPosSave[i][sumDiscountForeignCurrency] = "<RABATT BRUTTO FREMDWÄHRUNG>" (optional)
voucherPosSave[i][vpAmount] = "<EUR SUMME>"
voucherPosSave[i][sumForeign] = "<FREMDWÄHRUNG SUMME>"

Einen kleinen Tipp darüber hinaus, alle Felder die du explizit null setzt, und nicht als required in der Dokumentation markiert sind, brauchst du überhaupt nicht in die Payload aufnehmen.

Danke für die schnelle Antwort, bis vor ein Paar tagen hat es jedoch genauso funktioniert. Ich musste nur den Netto Betrag und die Currency übergeben und dann hat in SevDesk alles geklappt. Es lief jetzt über einen Monat so komplett stabil.

Sonst muss ich diese Variante nutzen. Jedoch muss ich hier ja sowohl bei den positionen als auch Gesamt die Summe angeben. Ich hatte das in der Dokumentation garnicht gesehen. Kannst du mir verraten wo das steht?

LG

Es wurden über die letzte Woche einige Änderungen an der API (natürlich unangekündigt und nicht dokumentiert :roll_eyes:) vorgenommen. Entsprechend wundert es mich nicht, dass es diese Funktion auch erwischt hat.

Generell beziehe ich die meisten Request-Formate direkt aus den Aufrufen im UI. Test-Case im UI nachbilden, übermittelten Request mitschneiden und so die verfügbaren Parameter herausfinden. Ist zwar aufwendiger als sich direkt auf die Dokumentation zu beziehen aber man bekommt einen besseren Einblick.

Vielleicht hängt es damit zusammen ,
dass die ab sofort auch eine Währung wollen

Hallo zusammen,

nach Rücksprache mit unserer Entwicklung kann ich euch folgende Info weiterleiten:

propertyForeignCurrencyDeadline (Tag des Umrechnungskurses) hat jetzt Vorrang,
alternativ kann propertyExchangeRate (Umrechnungskurs) angegeben werden,
eins von beidem ist aber Pflicht.

Viele Grüße

Felix

Frage: wie könnte der Kunde das gewusst haben?
Gibt es eine Stelle, an der solche wesentlichen
Dinge der API mitgeteilt werden.

Das aktuelle Verfahren:

  • Entwicklung macht was, sagt aber nichts
  • der Kunde bekommt eine Störung und wundert sich
    schafft verärgerte Kunden.

Wie könnte der Workflow bei SevDesk verbessert werden?

Da schließe ich mich an. Es ist massiv umständlich immer alles über das mitschneiden der Anfragen selbst herauszufinden. Anfragen bezüglich der API dauern auch grundsätzlich länger als normale, wodurch im schlimmsten Fall der produktive Betrieb über Tage stark beeinträchtigt wird. Dies war zum Beispiel der Fall bei dem entfernen der pdfUrl Referenz beim Rendern von Invoices.

1 „Gefällt mir“

Ich kann mich dem nur Anschließen, so macht es keine Freude für Unternehmen und Entwickler.

API ist nicht mein Hauptbereich, aber in Zukunft werde ich bei Problemen wohl auch die Anfragen aus UI mitschneiden um eine Lösung zu finden. Danke an pjoos!

1 „Gefällt mir“