Closed blex97 closed 3 years ago
Hallo, welche Version setzen Sie ein?
Hallo Herr Guse,
das ist Version 21.1.1 Build 303561
Auch Sie bitte ich an dieser Stelle das noch einmal mit der aktuellsten Version zu testen.
Mit der Version 21.1.2 wurde ein Fehler behoben, der undefinierte Abbrüche zur Folge haben konnte. Aktuell ist die Version 21.1.4 verfügbar.
Viele Grüße
Hallo,
inzwischen steht mir Version 21.2.2 zur Verfügung.
Nach ersten Tests ist das Verhalten unverändert, d.h. es funktioniert weiterhin nicht einen Journaleintrag per API anzulegen den man auch in der UI sehen könnte.
vgl. Beschreibung "Eintrag wird angelegt und ist nach "Aktualisieren" nicht in der UI sichtbar"
vielen Dank für die Unterstützung
Hallo,
können Sie bitte ein Beispiel zur Verfügung stellen, wie Sie den Eintrag anlegen?
Viele Grüße
Hallo Herr Guse,
unten beispielhaft Pseudocode. Vorausgeschickt nochmal verdeutlicht dass es mit diesem Code die genannten Fälle gibt, zwei davon sind: 1. Eintrag wird angelegt und ist nach "Aktualisieren" in der UI sichtbar, 2. Eintrag wird angelegt und ist nach "Aktualisieren" nicht in der UI sichtbar. Fall 2 ist ganz deutlich häufiger. Sonst gilt auch weiter was im Ursprungsticket beschrieben wurde.
var base_url = 'https://xxxxxxxx/slmobileApi/'; var filename = '/tmp/test.pdf'; var mimetype = 'application/pdf';
var doc_journal = { 'JournalLinkInformation' => { 'LinkType' => 'document', 'DocumentType' => 'R', 'DocumentNumber' => 'RE210002', },
'Date' => datetime_now, 'ContactKind' => 'Notiz', 'Label' => 'label', 'Text' => 'lorem ipsum' };
sub journal_create(doc) { var token = login(); var payload = doc;
var url = base_url + "/" + "Journals";
var data = fetch_data({
'url' => url,
'header' => [
"Authorization : LoginId token"
],
'post_data' => doc,
'timeout' => 20,
'format' => 'json',
'method' => 'post'
});
return data->{'JournalIdentifier'};
}
sub journal_post_attachment(journal_identifier, file, mimetype) { var token = login();
var url = base_url + "/" + "Journals" + "/" + journal_identifier + "/" + "Attachments";
my $form = WWW::Curl::Form->new();
$form->formaddfile($file, 'description', $mimetype);
var opt = {
'header' => [
"Authorization : LoginId token"
],
'timeout' => 20,
'data' => form,
'format' => 'json',
'content_type' => 'multipart/form-data'
};
var data = HTTP::POST(url, opt);
}
var journal_identifier = journal_create(doc_journal);
if (journal_identifier) { journal_post_attachment(journal_identifier, filename, mimetype); }
vielen Dank für die Unterstützung
Hallo,
hier kommen wir leider so nicht weiter. In unseren eigenen Anwendungen nutzen wir diese Funktionalität der API ebenfalls. Hier sind uns solche Effekte nicht bekannt.
Um das weiter nachvollziehen zu können, sehe ich aktuell nur den Weg einen direkten Versuchsvergleich mit Ihrer Anwendung und Postman durchzuführen. In unserer bereitgestellen Postmancollection ist ein Beispiel zum, Übertragen von Anhängen enthalten. So können Sie die identischen Daten per Postman bzw. mit Ihrer Anwendung übertragen und das Ergebnis, sowie die Antworten vergleichen. Ich denke nur so kommt man dem Problem näher.
Mehr kann ich leider aktuell nicht unterstützen.
Viele Grüße
Guten Tag blex97,
ich wollte mal nachhaken, ob Ihnen der Vergleich Ihrer Anwendung mit den Postman-Beispielen geholfen hat. Konnten Sie das Problem inzwischen ausfindig machen?
Beste Grüße, Vivien Schuboth
Hallo Frau Schuboth ,
danke für Ihre Nachfrage.
Hatte inzwischen Gelegenheit mit Postman zu testen, leider mit dem Ergebnis wie vorher, d.h. Journal wird angelegt ist aber in der UI nicht sichtbar, trotz Aktualisierung der UI, den Beleg mehrfach neu geöffnet etc.
Der Versuch war ein Journal (ohne Attachment) anzulegen, das klappt ohne Problem:
Create Journal, Body:
{
"Date": "2021-08-19T09:18:32.835Z",
"StatusId": 1,
"Label": "testPOSTMAN",
"Text": "test",
"JournalLinkInformation": {
"LinkType": "document",
"DocumentType": "R",
"DocumentNumber": "RE200023"
}
}
=>
{
"JournalIdentifier": "5cec18ae-51cb-42f6-808c-a44a1c94d041"
}
Beim Auslesen des Eintrags wird folgendes geliefert:
{
"JournalLinkInformationList": [
{
"RecordId": 3968,
"JournalID": "5cec18ae-51cb-42f6-808c-a44a1c94d041",
"Blobkey": "QR",
"YearMonth": null,
"TargetRecordId": 8744,
"TakenFromPreviousYear": false,
"IsMasterRecord": true
}
],
"ROW": 1,
"Identifier": "5cec18ae-51cb-42f6-808c-a44a1c94d041",
"Date": "2021-08-19T11:18:32.837+02:00",
"ContactKindIdentifier": 0,
"ContactKind": "Notiz",
"StatusId": 1,
"Cycle": "None",
"CategoryId": 0,
"Label": "testPOSTMAN2",
"Text": "test",
"IsPrivateContact": false,
"ResponsiblePerson": null,
"StatusLabel": "<kein>",
"CategoryLabel": null,
"MetaData": null,
"CustomFields": null
}
Es scheint also nicht direkt ein API-Problem zu sein. Über die UI lässt sich btw problemlos ein neuer Eintrag erstellen.
Vielen Dank für Ihre Unterstützung.
Guten Tag,
da wir dieses Problem intern nicht nachstellen können, würde ich Sie bitten, uns eine Datensicherung an die normale Support-E-Mail-Adresse der SelectLine zu schicken. Bitte verweisen Sie explizit auf den GitHub-Eintrag und lassen es an mich weiterleiten.
Somit können wir erneut prüfen, ob dieses Fehlverhalten anhand Ihrer Daten reproduzierbar ist. Falls das der Fall ist, würden wir sofort prüfen können, woran es liegt und den Fehler zeitig eintakten können.
Danke für Ihre Hilfe!
Mit freundlichen Grüßen, Vivien Schuboth
Hallo Frau Schuboth,
vielen Dank für Ihr Angebot die Daten zu überprüfen.
Vorab noch zwei Fragen dazu:
"Supportdatensicherung ... Diese Sicherungen sind ausschließlich zur Fehleranalyse bestimmt und enthalten bspw. keine Dokumente." Bedeutet das es sind keine wirklichen Kundendaten enthalten bzw. welche Daten sind enthalten um abklären zu können ob ich Ihr Angebot wahrnehmen kann?
Wo kann ich die Support-E-Mail-Adresse der SelectLine finden?
Vielen Dank für Ihre Unterstützung.
Guten Tag,
die E-Mail-Adresse lautet support@selectline.de
Ich bitte zu beachten, dass Ihre Datensicherung nicht direkt an diese E-Mail-Adresse gesendet werden kann. Diese muss auf den Ihnen zugewiesenen FTP-Server hochgeladen werden. Bitte erfragen Sie sich über diese E-Mail-Adresse zunächst solch einen Server.
Zu Ihrer nächsten Frage konnte ich herausfinden, dass eine Supportdatensicherung nur die Datenbanken für das ausgewählte Programm enthält. Das bedeutet, dass eine Supportdatensicherung aus der Warenwirtschaft keine Jahresdatenbanken enthält. Dokumente werden dabei ebenfalls nicht gesichert, jedoch weiterhin alle Personendaten.
Beste Grüße, Vivien Schuboth
Hallo Frau Schuboth,
vielen Dank für Ihre Erklärung. Nach Klärung der Datenschutzaspekte hab ich mich für die weiteren Schritte an Ihren Support gewendet, die Supportdatensicherung liegt jetzt vor.
Vielen Dank für Ihre Unterstützung.
Guten Tag blex97,
nachdem ich mir Ihre Datensicherung ansehen konnte, war mir der Fehler leider mit diesen Daten nicht nachstellbar. Wie Sie es selbst bereits geschrieben haben, lassen sich Journale und zu diesen auch Anhänge problemlos per API anlegen. Abrufbar über die Oberfläche der Warenwirtschaft (Dialoge: Liste von Journalen, Tab Journal in den jeweiligen Belegen) sind diese daraufhin auch.
Ein Fehlverhalten konnte ich daraus leider nicht ableiten. Aber dank der Datensicherung kamen auch neue Ideen, woran es vielleicht liegen könne.
Haben Sie vielleicht aktive Filter in den jeweiligen Dialogen oder gar Permanentfilter konfiguriert und aktiviert? Dazu können Sie ebenfalls SHIFT + F12 drücken, sobald Sie in der Auflistung stehen, in der Ihnen die Daten fehlen. Wenn Sie uns das sich öffnende Fenster Datenbank-Statement über das Forum zuschicken könnten, würden wir es auch gern für Sie überprüfen.
Ich würde mich über Ihre Rückmeldung freuen.
Beste Grüße
Hallo Frau Schuboth,
vielen Dank für Ihre Tests und Informationen.
Ich habe folgendes probiert:
Der reduzierte Test bezieht sich auf genau eine Rechnung. Anlegen vom Journal-Eintrag per API findet wie beschrieben mit Postman statt, das Anlegen ist laut API-Antwort erfolgreich. Die UI (Listen etc.) wird jeweils nach erwarteten Änderungen aktualisiert etc.
Dazu Beobachtungen und Fragen:
In der Liste Mandant -> Journal taucht der Eintrag nicht auf, die dort gezeigte Anzahl der Einträge bleibt unverändert.
Wird bei der Rechnung über die UI ein Journal-Eintrag erstellt lässt sich dieser in der Liste finden, die gezeigte Anzahl der Einträge ist um 1 erhöht, entsprechnd wieder um 1 vermindert nach dem Löschen des Eintrags.
Auch bei der Rechnung selbst dieses Verhalten: In UI angelegte Einträge vorhanden, per API angelegte nicht.
Ich bin mit der UI nicht gut vertraut, aber Filter die diese Wirkung haben halte ich für unwahrscheinlich.
In welcher Form muss man IDs in der Liste in die Suchzeile um ein Ergebnis zu bekommen, ausser der Fehlermeldung 'ungültig'?
SHIFT F12 hat keine sichtbare Wirkung.
"Wenn Sie uns das sich öffnende Fenster Datenbank-Statement über das Forum zuschicken könnten, würden wir es auch gern für Sie überprüfen." Wie kann ich das exportieren?
Vielen Dank für Ihre Unterstützung.
Guten Tag blex97,
für eine schnelle Lösung würden wir uns mit Ihnen gerne zu einer Fernwartung treffen. In dieser würden wir uns mit Ihnen zusammensetzen, ihre Installation und Warenwirtschaft hinsichtlich der Einrichtung überprüfen und nach der Fehlerursache Ausschau halten. Diese Dienstleistung ist jedoch kostenpflichtig, sofern es kein Fehler der SelectLine API ist. Falls Sie dies wünschen, melden Sie sich gerne per Mail an unseren Support und vereinbaren mit uns zusammen einen Termin.
Beste Grüße
Hallo,
ich habe nur eine ganz triviale Frage zu dem Problem, die bisher noch nicht gestellt wurde:
In dem System gibt es 2 Mandanten, einer mit deutlich mehr Rechnungen als der andere. Nach Stichproben funktioniert es bei dem mit wenig Rechnungen immer.
Kann es sein, dass die Journale einfach im falschen Mandanten angelegt werden, dass Sie die WaWi im Mandant 1 geöffnet haben und dort kontrollieren, die Journale aber im Mandant 2 angelegt werden? Dazu bitte einfach mal im Sl.Mobile in der Benutzerverwaltung die Mandanten-Zuordnung prüfen.
Grüße
Daniel
Hallo Daniel,
diese Frage war der Jackpot, vielen Dank :)
Die Einträge landen tatsächlich beim zweiten Mandanten, bzw. einer dortigen Rechnung mit identischer Rechnungsnummer (und gleichem Kunden...)
Das erklärt dann auch warum ich per API manche Rechnungen nicht finden konnte, aber in der UI sehen; beim anderen Mandaten.
"Sl.Mobile" sagt mir nichts, eine App? https://www.selectline.de/data/uploads/2017/06/Blickpunkt-SelectLine-Mobile.pdf
Auf die Einrichtung habe ich auch keinen Zugriff, kann nur die API nutzen.
Aber bedeutet das für einen API-Zugriff ist ein bestimmter in der Konfiguration festgelegter Mandant eingestellt den man beim Aufruf nicht setzen kann?
Würde das bedeuten man bräuchte pro Mandant andere Aufrufe, einen anderen Port, oder wie muss ich mir das praktisch vorstellen; oder anders gefragt, wie kann ich beim Aufruf entscheiden welchen Mandaten ich anspreche?
Alex
Hallo,
SL.Mobile ist der Oberbegriff, im Prinzip der Dienst für die mobilen Anwendungen von SelectLine inkl. der API. Hier wird in der Benutzerverwaltung dem jeweiligen API-User ein WaWi-User sowie der Mandant zugeordnet, dass bedeutet man benötigt pro Mandant wenigstens ein API-User. Es ist nicht möglich mit dem Login-Request den Mandanten zu wählen. Die Verwaltung von SL-Mobile ist unter https://<server>:<port>/slmobile
erreichbar.
Sollte aber derjenige wissen, der SL.Mobile eingerichtet hat als Partner.
Grüße
Daniel
Hallo Daniel,
danke für die ausführliche und genaue Antwort :) Damit kann ich mich an den Partner für die Einrichtung wenden.
Alex
Hallo,
folgende Fälle beim Anlegen von identischen Journal-Einträgen zu einer Rechnung per API, zugeordnet über die Belegnummer wobei die Nummer per Stichprobe aus der UI stammt:
Eintrag wird nicht angelegt weil Dokument nicht gefunden wird, entsprechend die Antwort:
Details => "Das zugehörige Dokument konnte nicht gefunden werden.", Message => "Die gesuchte Resource konnte nicht gefunden werden. Nähere Informationen sind in den Details enthalten.", ResponseCode => "80-010"
Wie ist dieses Verhalten zu erklären, die Rechnungs-Dokumente unterscheiden sich erkennbar nicht. Das Verhalten ist konsistent.
Die Fälle aus 2 sind nirgendwo in der UI sichtbar, nur über die Liste der Journaleinträge per API verfügbar.
Die Fälle aus 3 sind, so weit erkennbar, auch nicht in der Gesamtliste der per API angeforderten Rechnungen enthalten. Es ist kein Grund erkennbar warum diese Rechnungen nicht geliefert werden. In der Gesamtliste aller Dokument per API scheinen mehr Rechnungen enthalten zu sein als in der Liste der nur Rechnungen, aber auch nicht alle, eher deutlich weniger. Ist das möglich? documentListFilter.items ist jeweils sicher ausreichend hoch gesetzt.
In dem System gibt es 2 Mandanten, einer mit deutlich mehr Rechnungen als der andere. Nach Stichproben funktioniert es bei dem mit wenig Rechnungen immer.
Ich will eigentlich nur zu einer bekannten Rechnungs(nummer) zuverlässig in der UI verfügbare Journaleinträge erstellen, wie kann ich das erreichen?
vielen Dank für die Unterstützung