selectline-software / selectline-api

Apache License 2.0
25 stars 5 forks source link

Nachträgliches Ändern Adressnummer in Belegen #155

Closed AM-Sartissohn closed 3 years ago

AM-Sartissohn commented 3 years ago

Hallo, aktuell versuche ich, eine Rechnung zu einem Wartungsvertrag für einen abweichenden Rechnungsempfänger zu erstellen.

Was bisher bereits funktioniert, ist, einen Rechnungsbeleg neu zu erstellen, diesen mit dem Wartungsvertrag zu verknüpfen und über INSERTS in der Tabelle WRECH nachträglich den Wartungsvertrag anzupassen. Die Positionen und Preise werden dabei nicht aus dem Wartungsvertrag übernommen, sondern die Positionen ohne Preise über die API übergeben, die Preise werden durch die aktuellen Preiskalkulationen der SelectLine gesetzt.

Mein Problem entsteht jetzt daraus, dass einzelne Wartungsverträge einen abweichenden Rechnungsempfänger aufweisen. Erstellt man die Rechnungen über die Vorschlagslisten im SelectLine Client, wird die Rechnung zuerst für den ursprünglichen Kunden angelegt und anschließend die Adressnummer durch den abw. Rechnungsempfänger ersetzt. Die Kundenpreise sind also bei Verwendung des Clients wie zu erwarten die Kundenpreise des Wartungsvertragskunden, nicht die des abw. Rechnungsempfängers.

Meines Wissens kann ich über die API jedoch nicht den Adressnummer und Anschrift im Belegkopf ändern, sobald der Beleg Positionen enthält (Im Client wird dann ein Dialog angezeigt, ob die Positionen angepasst werden sollen, die API liefert in so einem Fall einen Fehler). Damit kann ich auch nicht den Beleg auf den Wartungsvertragskunden erstellen, um dessen Preise zu ziehen, und anschließend die Adressnummer in den abw. Rechnungsempfänger ändern und gleichzeitig die Preise beibehalten. Lege ich die Rechnung direkt auf den abw. Rechnungsempfänger an, werden dessen Kundenpreise statt denen des Wartungsvertragskunden gezogen.

Bisher sehe ich hier zwar drei Wege, die aber alle nicht schön sind:

  1. Anlegen eines nicht umsatzrelevanten Vorgängerbelegs auf den Wartungsvertragskunden mit Eintrag des abw. Rechnungsempfängers, anschließend Belegübergabe in die Rechnung, damit der Wechsel des Rechnungsempfängers bei Belegübergabe erfolgt - leider derzeit nicht gangbar, ohne zusätzliche Belegtypen anzulegen
  2. Anlegen der Rechnung auf den abw. Rechnungsempfänger, Preisfindung über Rekonstruktion der Preisgestaltung des Wartungsvertragskunden - hier müssten ich vermutlich alle Parameter aus der Datenbank auslesen und die komplette Preisgestaltung rekonstruieren
  3. Anlegen eines Beleges auf den Wartungsvertragskunden mit Positionen ohne Preisinformationen, anschließendes Auslesen und externes Speichern aller Positionen mit Preisinformationen, Löschen der Positionen im Beleg, Ändern der Belegadresse auf den abw. Rechnungsempfänger, erneutes Anlegen der Positionen mit den gespeicherten Preisen aus dem ersten Durchlauf. Theoretisch machbar, verdoppelt aber praktisch die Anzahl der API-Calls.

Gibt es hier noch irgendeinen anderen Weg, den ich übersehen habe, um die Belegadresse zu ändern und die Preisfindung beizubehalten?

MatthiasGuse commented 3 years ago

Hallo,

Sie schreiben, dass beim Versuch die Kundennummer per API zu ändern, eine Fehlermeldung zurückgegen wird. Wie lautet diese genau?

Viele Grüße

AM-Sartissohn commented 3 years ago

Hallo,

ich habe die Route eben noch einmal getestet und bekomme aktuell tatsächlich keine Fehler. Damit hat sich meine ursprüngliche Frage erst einmal erledigt.

Soweit ich dies nachvollziehen kann, werden die Preise, Fibukonten usw. der Positionen im Beleg jetzt nicht angepasst. Falls dies hier doch einmal gefordert sein sollte: Gibt es Parameter, über den dies veranlasst werden kann, oder wird der Dialog, welche beim Ändern der Adressnummer im Client aufgerufen wird, über die API grundsätzlich ignoriert?

Ich bin mir übrigens sicher, dass diese Funktion in der Vergangenheit nicht möglich war, die Fehlermeldung dabei lautete sinngemäß "Es wurde versucht, ein Dialog zu öffnen". Ich habe eigentlich auch alle Changelogs zur API mitverfolgt und kann mich an keine diesbezüglichen Eintrag erinnern, dass sich dies geändert hatte. Haben Sie hier etwas geändert, und gibt es irgendwo eine vollständige Liste der Änderungen an der API?

MatthiasGuse commented 3 years ago

Hallo,

die Änderung wurde zur Version 20.2.0 durchgeführt. Der Änderungstext lautete:

Über die SelectLine API können nun, trotz angelegter Belegpositionen, Änderungen am Belegkopf vorgenommen werden. Auf Belegpositionen wirkende Änderungen werden nicht automatisch angepasst, sie müssen separat an den Positionen angepasst werden.

Der Dialog wird also grundsätzlich ignoriert. Sollten Änderungen gewünscht sein, müssen Sie die in dem Fall selbst mitgeben. Inhaltliche Änderungen zwischen den einzelnen Versionen können Sie hier abfragen: https://apiupdate.selectline.de/ Sonst stehen die Änderungen und Fehlerbehebungen nur im Changelog.

Viele Grüße