Probleme mit POST Voucher

Wenn ich versuche einen Voucher via POST zu erstellen erhalte ich immer folgende Meldung:

"Argument 1 passed to Model_Voucher_Factory::blockCreatingVoucherWithPaymentProviderContact() must be an instance of Model_Voucher, null given, called in /sevserver/app/sevdesk/application/models/Voucher/Factory.php on line 51"

Habe es mit folgenden Bodys versucht:

{
  "voucher": {
    "voucherDate": "19.11.2021",
    "supplier": {
      "id": "38777524",
      "objectName": "Contact"
    },
    "supplierName": "Benedikt",
    "description": "Voucher-1000",
    "status": 50,
    "creditDebit": "C",
    "voucherType": "VOU",
    "paymentDeadline": null,
    "objectName": "Voucher",
    "mapAll": "true",
    "taxType": "default"
  },
  "voucherPosSave": [
    {
      "accountingType": {
        "id": 0,
        "objectName": "AccountingType"
      },
      "taxRate": 19,
      "sum": 100,
      "objectName": "VoucherPos",
      "net": "true",
      "mapAll": "true"
    }
  ],
  "voucherPosDelete": null
}

Und

{
„voucher“: {
„voucherDate“: „19.11.2021“,
„supplier“: {
„id“: „38777524“,
„objectName“: „Contact“
},
„supplierName“: „Benedikt“,
„description“: „Voucher-1000“,
„document“: null,
„resultDisdar“: null,
„documentPreview“: null,
„payDate“: null,
„status“: 50,
„showNet“: „1“,
„taxType“: „default“,
„creditDebit“: „C“,
„hidden“: null,
„costCentre“: null,
„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,
„taxmaroStockAccount“: null,
„vatNumber“: null,
„deliveryDate“: „19.11.201“,
„deliveryDateUntil“: „19.11.2021“,
„mapAll“: „true“,
„objectName“: „Voucher“
},
„voucherPosSave“: [
{
„accountingType“: {
„id“: 0,
„objectName“: „string“
},
„taxRate“: 19,
„sum“: null,
„net“: „true“,
„isAsset“: „false“,
„sumNet“: 100,
„sumGross“: null,
„comment“: null,
„mapAll“: „true“,
„objectName“: „VoucherPos“
}
],
„voucherPosDelete“: null,
„filename“: null
}

Vielleicht habe ich ja auch einen Grundsätzlichen Fehler, kann mir bitte jemand helfen.

Vielen Dank

Benedikt

Der Request wird an /Voucher/Factory/saveVoucher gesendet?

Sonst fehlen bei deiner Voucher Pos noch sumNet und sumGross. Dazu accountingType.id=0 kommt mir etwas vor, ist das eine validate AccountType Id?

1 „Gefällt mir“

Hallo @Benedikt_Schulz,

hast du eventuell statt JSON einfach nur Text ausgewählt?

Der erste von dir geschriebene Call funktioniert bei mir, bis auf die accountingType id von 0, problemlos.
(Die verschiedenen Buchungskonten IDs kannst du auf /api/v1/AccountingType abfragen)

Viele Grüße

Felix

Vielen Dank, es lag an accountingType.id=0, ich hatte das aus der Vorlage übernommen, wer lesen kann ist klar im Vorteil.

Vielen Dank für die schnelle Hilfe

1 „Gefällt mir“

Ich habe ein ähnliches Problem … und auch nach dem ändern des AccountingType.id und des Suppliers (mit dem Code) bleibt die Fehlermeldung bestehen: "Argument 1 passed to Model_Voucher_Factory::blockCreatingVoucherWithPaymentProviderContact() must be an instance of Model_Voucher, null given, called in /sevserver/app/sevdesk/application/models/Vouch…

{
  "voucher": {
    "voucherDate": "02.01.2022",
    "supplier": {
      "id": 41515401,
      "objectName": "Contact"
    },
    "supplierName": "Benedikt",
    "description": "Voucher-1000",
    "status": 50,
    "creditDebit": "C",
    "voucherType": "VOU",
    "paymentDeadline": null,
    "objectName": "Voucher",
    "mapAll": "true",
    "taxType": "default"
  },
  "voucherPosSave": [
    {
      "accountingType": {
        "id": 24,
        "objectName": "AccountingType"
      },
      "taxRate": 19,
      "sum": null,
      "isAsset": "false",
      "sumNet": 100,
      "sumTax": 19,
      "sumGross": 119,
      "objectName": "VoucherPos",
      "net": "true",
      "mapAll": "true"
     "taxType": "ss",
      "creditDebit": "D",
      "hidden": "0",
      "costCentre": {
        "id": 101568,
        "objectName": "CostCentre"
      },
    }
  ],
  "voucherPosDelete": null
}

Hey,

Hinter „mapAll“: „true“ fehlt ein Komma.

Ich kann es morgen aber mal versuchen und mir genau anschauen. Aber vielleicht war es das schon:)

Liebe Grüße

1 „Gefällt mir“

Danke - das mit MapAll hatte ich auch gesehen und korrigiert - hilft aber nichts. Ich hatte nebenher mal ein Beleg über die UI gebucht und versucht daraus für die API abzuleiten, leider auch ohne Erfolg :frowning:

{
      "id": "36714511",
      "objectName": "Voucher",
      "additionalInformation": null,
      "create": "2022-01-16T15:23:59+01:00",
      "update": "2022-01-16T15:23:59+01:00",
      "sevClient": {
        "id": "584675",
        "objectName": "SevClient"
      },
      "createUser": {
        "id": "721009",
        "objectName": "SevUser"
      },
      "voucherDate": "2021-12-29T00:00:00+01:00",
      "supplier": {
        "id": "41515401",
        "objectName": "Contact"
      },
      "supplierName": null,
      "description": "Beleg 123",
      "document": {
        "id": "59378950",
        "objectName": "Document"
      },
      "resultDisdar": "{\"id\":\"7cdd2d89-564e-4868-a6e3-f411103da65d\",\"confidence\":0.029760675192721048,\"extractions\":[{\"page\":0,\"rawValue\":\"18,98\",\"parsedValue\":1898,\"confidence\":0.036413375881966206,\"label\":\"AMOUNT\",\"derived\":false},{\"page\":0,\"rawValue\":\"98C3473C-0002\",\"parsedValue\":\"98C3473C-0002\",\"confidence\":0.023107974503475886,\"label\":\"INVOICENUMBER\",\"derived\":false},{\"page\":0,\"rawValue\":\"29. Dezember 2021\",\"parsedValue\":\"2021-12-29\",\"confidence\":0.20000000000000001,\"label\":\"INVOICEDATE\",\"derived\":true}],\"positions\":[{\"amount\":1898,\"taxRate\":null,\"netAmount\":null}]}",
      "payDate": null,
      "status": "100",
      "object": {
        "id": "41518933",
        "objectName": "Contact"
      },
      "currency": "EUR",
      "sumNet": "1",
      "sumTax": "0",
      "sumGross": "1",
      "sumNetAccounting": "1",
      "sumTaxAccounting": "0",
      "sumGrossAccounting": "1",
      "showNet": "0",
      "paidAmount": 0,
      "taxType": "ss",
      "creditDebit": "D",
      "hidden": "0",
      "costCentre": {
        "id": "101568",
        "objectName": "CostCentre"
      },
      "voucherType": "VOU",
      "recurringIntervall": null,
      "recurringInterval": null,
      "recurringStartDate": null,
      "recurringNextVoucher": null,
      "recurringLastVoucher": null,
      "recurringEndDate": null,
      "enshrined": null,
      "sendType": null,
      "inSource": null,
      "iban": null,
      "accountingSpecialCase": null,
      "paymentDeadline": "2022-01-16T15:21:53+01:00",
      "tip": "0",
      "mileageRate": "0",
      "selectedForPaymentFile": "0",
      "supplierNameAtSave": "Christian Sadrinna",
      "taxmaroStockAccount": null,
      "vatNumber": null,
      "deliveryDate": "2022-01-16T00:00:00+01:00",
      "deliveryDateUntil": null,
      "sumDiscountNet": "0",
      "sumDiscountGross": "0",
      "sumNetForeignCurrency": "0",
      "sumTaxForeignCurrency": "0",
      "sumGrossForeignCurrency": "0",
      "sumDiscountNetForeignCurrency": "0",
      "sumDiscountGrossForeignCurrency": "0"
    }

Das Komme muss weg hinter } dann geht es bei mir :slight_smile:

Hier nochmal die komplette JSON du musst jetzt noch die ID´s anpassen.

POST
https://my.sevdesk.de/api/v1/Voucher/Factory/saveVoucher

Content-Type: application/json
(Das war bei mir am Anfang auch noch ein Problem, hatte es nur auf json)

{
    "voucher": {
      "voucherDate": "02.01.2022",
      "supplier": {
        "id": 41536872,
        "objectName": "Contact"
      },
      "supplierName": "Benedikt",
      "description": "Voucher-1000",
      "status": 50,
      "creditDebit": "C",
      "voucherType": "VOU",
      "paymentDeadline": null,
      "objectName": "Voucher",
      "mapAll": "true",
      "taxType": "default"
    },
    "voucherPosSave": [
      {
        "accountingType": {
          "id": 24,
          "objectName": "AccountingType"
        },
        "taxRate": 19,
        "sum": null,
        "isAsset": "false",
        "sumNet": 100,
        "sumTax": 19,
        "sumGross": 119,
        "objectName": "VoucherPos",
        "net": "true",
        "mapAll": "true",
        "taxType": "ss",
        "creditDebit": "D",
        "hidden": "0",
        "costCentre": {
          "id": 101640,
          "objectName": "CostCentre"
        }
      }
    ],
    "voucherPosDelete": null
  }

Perfekt - läuft! Vielen Dank - Problem war wirklich der „content type“ im Header :slight_smile: