selectline-software / selectline-api

Apache License 2.0
26 stars 5 forks source link

42-033 - DocumentSuccessorErrorException #407

Closed abdullahbaa5 closed 3 weeks ago

abdullahbaa5 commented 2 months ago

Version: 23.3.5.0

When trying to transfer an offer document (created using selectline app) to an order document using the api, we are getting the following error:

{
  "StatusCode": "BadRequest",
  "ResponseCode": "42-033",
  "ResponseId": 33,
  "ResponseIdDescription": "DocumentSuccessorErrorException",
  "Message": "Der Nachfolgebeleg kann nicht angelegt werden.",
  "Details": {
    "ResponseDetails": "<Tabelle Version=\"1.0\"><DESCRIPTION><Fehlerklasse DisplayName=\"Fehlerklasse\">int</Fehlerklasse><Status DisplayName=\"Status\">nvarchar(20)</Status><fName0 DisplayName=\"Belegtyp\">nvarchar(1)</fName0><fName1 DisplayName=\"Belegnummer\">nvarchar(10)</fName1><fName2 DisplayName=\"Bezeichnung\">nvarchar(30)</fName2><fName3 DisplayName=\"Bemerkung\">nvarchar(200)</fName3><_CBK_fName0 DisplayName=\"_CBK_fName0\">nvarchar(50)</_CBK_fName0><_CBK_fName1 DisplayName=\"_CBK_fName1\">nvarchar(50)</_CBK_fName1><_CBK_fName2 DisplayName=\"_CBK_fName2\">nvarchar(50)</_CBK_fName2><_CBK_fName3 DisplayName=\"_CBK_fName3\">nvarchar(50)</_CBK_fName3></DESCRIPTION><DATEN><Fehler><Fehlerklasse><![CDATA[3]]></Fehlerklasse><Status><![CDATA[Fehler]]></Status><fName0><![CDATA[A]]></fName0><fName1><![CDATA[240235469]]></fName1><fName2><![CDATA[Offerte Kunde]]></fName2><fName3><![CDATA[Kunde (135835) fehlt in den Stammdaten.]]></fName3><_CBK_fName0><![CDATA[]]></_CBK_fName0><_CBK_fName1><![CDATA[]]></_CBK_fName1><_CBK_fName2><![CDATA[]]></_CBK_fName2><_CBK_fName3><![CDATA[]]></_CBK_fName3></Fehler></DATEN></Tabelle>",
    "ResponseType": "SuccessorsFailed"
  }
}

The request looks like the following: image image

the position "bb392631-26f6-4c62-a48b-f2322524c74a" is a comment, if i add it or not, i get same error.

if i try to keep the array empty as following: image I get the same error:

{
  "StatusCode": "BadRequest",
  "ResponseCode": "42-033",
  "ResponseId": 33,
  "ResponseIdDescription": "DocumentSuccessorErrorException",
  "Message": "Der Nachfolgebeleg kann nicht angelegt werden.",
  "Details": {
    "ResponseDetails": "<Tabelle Version=\"1.0\"><DESCRIPTION><Fehlerklasse DisplayName=\"Fehlerklasse\">int</Fehlerklasse><Status DisplayName=\"Status\">nvarchar(20)</Status><fName0 DisplayName=\"Belegtyp\">nvarchar(1)</fName0><fName1 DisplayName=\"Belegnummer\">nvarchar(10)</fName1><fName2 DisplayName=\"Bezeichnung\">nvarchar(30)</fName2><fName3 DisplayName=\"Bemerkung\">nvarchar(200)</fName3><_CBK_fName0 DisplayName=\"_CBK_fName0\">nvarchar(50)</_CBK_fName0><_CBK_fName1 DisplayName=\"_CBK_fName1\">nvarchar(50)</_CBK_fName1><_CBK_fName2 DisplayName=\"_CBK_fName2\">nvarchar(50)</_CBK_fName2><_CBK_fName3 DisplayName=\"_CBK_fName3\">nvarchar(50)</_CBK_fName3></DESCRIPTION><DATEN><Fehler><Fehlerklasse><![CDATA[3]]></Fehlerklasse><Status><![CDATA[Fehler]]></Status><fName0><![CDATA[A]]></fName0><fName1><![CDATA[240235469]]></fName1><fName2><![CDATA[Offerte Kunde]]></fName2><fName3><![CDATA[Kunde (135835) fehlt in den Stammdaten.]]></fName3><_CBK_fName0><![CDATA[]]></_CBK_fName0><_CBK_fName1><![CDATA[]]></_CBK_fName1><_CBK_fName2><![CDATA[]]></_CBK_fName2><_CBK_fName3><![CDATA[]]></_CBK_fName3></Fehler></DATEN></Tabelle>",
    "ResponseType": "SuccessorsFailed"
  }
}
MaikGoertz commented 2 months ago

Hello. If you take a closer look at the error message, it says "Kunde (135835) fehlt in den Stammdaten." which means "Customer (135835) is missing in the master data". Please check the data in the document.

abdullahbaa5 commented 2 months ago

Hello. If you take a closer look at the error message, it says "Kunde (135835) fehlt in den Stammdaten." which means "Customer (135835) is missing in the master data". Please check the data in the document.

I have searched the selectline API for customer with 135835 number (it is a test customer we created to test the transfer)

And it does exist when searched through the API search company route image

what could be the reason that the transfer route thinks it is missing?

abdullahbaa5 commented 2 months ago

I have tried with a different document and different company but it still doesn't work

{
  "StatusCode": "BadRequest",
  "ResponseCode": "42-033",
  "ResponseId": 33,
  "ResponseIdDescription": "DocumentSuccessorErrorException",
  "Message": "Der Nachfolgebeleg kann nicht angelegt werden.",
  "Details": {
    "ResponseDetails": "<Tabelle Version=\"1.0\"><DESCRIPTION><Fehlerklasse DisplayName=\"Fehlerklasse\">int</Fehlerklasse><Status DisplayName=\"Status\">nvarchar(20)</Status><fName0 DisplayName=\"Belegtyp\">nvarchar(1)</fName0><fName1 DisplayName=\"Belegnummer\">nvarchar(10)</fName1><fName2 DisplayName=\"Bezeichnung\">nvarchar(30)</fName2><fName3 DisplayName=\"Bemerkung\">nvarchar(200)</fName3><_CBK_fName0 DisplayName=\"_CBK_fName0\">nvarchar(50)</_CBK_fName0><_CBK_fName1 DisplayName=\"_CBK_fName1\">nvarchar(50)</_CBK_fName1><_CBK_fName2 DisplayName=\"_CBK_fName2\">nvarchar(50)</_CBK_fName2><_CBK_fName3 DisplayName=\"_CBK_fName3\">nvarchar(50)</_CBK_fName3></DESCRIPTION><DATEN><Fehler><Fehlerklasse><![CDATA[3]]></Fehlerklasse><Status><![CDATA[Fehler]]></Status><fName0><![CDATA[A]]></fName0><fName1><![CDATA[240235642]]></fName1><fName2><![CDATA[Offerte Kunde]]></fName2><fName3><![CDATA[Kunde (123656) fehlt in den Stammdaten.]]></fName3><_CBK_fName0><![CDATA[]]></_CBK_fName0><_CBK_fName1><![CDATA[]]></_CBK_fName1><_CBK_fName2><![CDATA[]]></_CBK_fName2><_CBK_fName3><![CDATA[]]></_CBK_fName3></Fehler></DATEN></Tabelle>",
    "ResponseType": "SuccessorsFailed"
  }
}

for this one it says the company is missing again Kunde (123656) fehlt in den Stammdaten.

abdullahbaa5 commented 2 months ago

More Information:

If I take the same document details, and create a new Order document with those details, and try to transfer it to "L" - Delivery Note, it works just fine.

This issue only happens when transferring Offer to "B" Order

abdullahbaa5 commented 2 months ago

@MaikGoertz any idea?

MaikGoertz commented 2 months ago

What kind of document is the original document? Can the document transfer be done in the ERP software?

abdullahbaa5 commented 1 month ago

What kind of document is the original document? Can the document transfer be done in the ERP software?

Through API:

Through ERP Software:

MatthiasGuse commented 1 month ago

Hello, please check the document types. Document transfers are not possible from the input side to the output side and vice versa. The document types are not in alphabetical order. For example, a transfer from "A" to "B" is not possible. Only the transfers that also work in the desktop program work in the API.

Regards

abdullahbaa5 commented 1 month ago

Hello, please check the document types. Document transfers are not possible from the input side to the output side and vice versa. The document types are not in alphabetical order. For example, a transfer from "A" to "B" is not possible. Only the transfers that also work in the desktop program work in the API.

Regards

but the ERP software allows for connection between the offer and the order document.

digitaldynamikch commented 1 month ago

Guten Tag @MaikGoertz und @MatthiasGuse

@abdullahbaa5 hat in meinem Auftrag eine App für einen Schweizer Kunden entwickelt, die mit der SelectLine API verbunden ist. Aus dem heraus hat sich der von ihm gemeldete Issue ergeben.

Im SelectLine Desktop-Programm des Kunden funktionieren folgende Belegübergaben (siehe Screenrecording HIER): Offerte > Auftrag (Vermerk in der Infobox: «vom Vorgängerbeleg übernommen») Auftrag > Lieferschein (Vermerk in der Infobox: «vom Vorgängerbeleg übernommen») Auftrag > Bestellung (Vermerk in der Infobox: «Querverweis auf Auftrag […]»)

Über die API funktioniert nur folgende Belegübergabe: Auftrag > Lieferschein

Über die API funktionieren folgende Belegübergaben nicht: Offerte > Auftrag Auftrag > Bestellung

@MatthiasGuse Du hast geschrieben "Only the transfers that also work in the desktop program work in the API." Wie von uns gemeldet, ist dies jedoch nicht der Fall. Haben wir etwas übersehen?

Ich wäre sehr dankbar für eine zügige Rückmeldung. Unser Kunde wartet mittlerweile schon lange auf die Berichtigung.

Freundliche Grüsse, Severin Spirig

MatthiasGuse commented 1 month ago

Hallo,

bitte nicht auf die Bezeichnungen gucken und von diesen aus auf die Belegtypen schließen. In dem oben genannten Beispiel wurde versucht einem Angebot (Offer for customer - Belgtyp 'A') in eine Bestellung (Purchase order - Belegtyp 'B') zu übergeben. Konkret wurde versucht ein Angebot für einen Kunden an eine Bestellung bei einem Lieferanten zu übergeben. Das funktioniert so nicht. 'A' zu 'F' wäre vermutlich gewünscht. In der Belegdefinition kann man gut abgucken: grafik

Viele Grüße

digitaldynamikch commented 3 weeks ago

Guten Tag @‌MatthiasGuse, danke für den Input!

Ich habe noch eine Frage: Angenommen wir haben einen bestehenden Auftrag (F) mit der Nummer 24-84030 und eine bestehende Bestellung (B) mit der Nummer 21-74939. Welche(n) API Call(s) müssen wir machen, um einen Querverweis zwischen den zwei Dokumenten anzulegen? Ich wäre mega dankbar, wenn Du mir den/die Call(s) schicken könntest, mit allen nötigen Werten.

Dynamische Grüsse, Severin

ThePholph commented 3 weeks ago

Guten Morgen,

es gibt hierfür keine API-Funktion. Das kann aus der Doku entnommen werden. Hierfür kann ein Makro genutzt werden, um dies über die API zu realisieren.

Ich empfehle den Besuch der angebotenen Schulungen zur Warenwirtschaft und ggf. einen Workshop zur API. Da in dem gesamten Issue ausschließlich grundlegende Dinge thematisiert sind.

@MatthiasGuse ich würde generell eine Art Zertifizierung für die Entwicklung von Third Party Anwendungen zur SelectLine empfehlen, welche die Voraussetzung für die Herausgabe der AppKeys zur API ist.

Einen schönen Tag wünsche ich.

Viele Grüße

Daniel

digitaldynamikch commented 3 weeks ago

Guten Tag @ThePholph, vielen Dank für den Input!