swissbib / sbvf2

Presentation component for swissbib, fork of https://github.com/vufind-org/vufind
www.swissbib.org
GNU General Public License v2.0
10 stars 2 forks source link

Fernleihen werden dem Benutzer nicht angezeigt #391

Closed luchner closed 10 years ago

luchner commented 10 years ago

@ToVie @guenterh @mschwendener

Beispiel: statt: http://aleph.unibas.ch/X?op=find&base=DSV01&request=BAR%3DAP0037707 so: http://aleph.unibas.ch/X?op=find&base=DSV21&request=BAR%3DAP0037707

guenterh commented 10 years ago

72424e1

first fix committed

Hinweise von Andres

Liebe alle,

Mit der Nicht-Anzeige als Provisorium können wir leben. Der Fix hat aber eine hohe Priorität, wie alle Benutzungsfunktionen.

Hier ein möglicher Lösungsweg auf Aleph-Seite zum Fixen der fehlerhaften Anzeige von Fernleihen:

X-Service

[Günter fragt:]

kann mir mal einer erklären, warum dieser request http://aleph.unibas.ch/X?op=find&base=DSV01&request=BAR%3DAP0037707 ein leeres set zurückgibt.

Offenbar weil Fernleihe-Barcodes nicht expandiert werden und nicht im BAR Index landen.

Der Barcode ist durchaus im System, aber leider gibt's dazu keine Bibliographische Info: http://aleph.unibas.ch/X?op=ill-item-by-bc&barcode=AP0037707&library=dsv51

Das ist also wohl eine Sackgasse.

RESTful API

Das RESTful API zeigt alle Ausleihen inklusive Fernleihen korrekt an, inklusive z13-Kurztitel:

http://aleph.unibas.ch:1891/rest-dlf/patron/A0502073/circulationActions/loans?institution=DSV51

Als Antwort kommen die Links auf die Details der beiden Ausleihen:

Der erste Link ist der Link zur Fernleihe. (Der Inhalt des Attributs 'renew' an dieser Stelle ist übrigens Unsinn. Bei der Detailansicht kommt's dann aber korrekt.)

Herzlichen Gruss, Andres

vonarx commented 10 years ago

[Bei der Analyse tauchen gleich noch weitere Fehler auf. Lösungen zum Glück auch.]

Q: Warum werden keine ausgeliehenen Fernleihen angezeigt? A: Konfigurationsfehler. Die Kontoanzeige im Aleph ILS-Driver von VuFind Core geschieht mit Aleph::getMyTransactions und Aleph::getMyFines. Die rufen ihrerseits Aleph::barcodeToID auf, um zu einem Exemplar-Barcode die zugehörige ID der bibliographischen DB zu finden. Man muss allerdings angeben, in welcher bibliographischen DB er suchen soll. Lösung:

# Aleph.ini
[Catalog]
bib = DSV01,DSV21

TODO : Testen auf Nebenwirkungen

Q: Warum werden alle Ausleihen behandelt, als ob sie verlängerbar sind? A: Wegen eines Bugs im RESTful API von Aleph 21.01 [.../circulationActions/loans/?view=full]. Aleph liefert völlig ungeprüft für jeden Record das Attribut "renewable" = "Y".

Lösung: Die korrekte Lösung wäre, für jedes Item einen zweiten RESTful call zu machen, die dann das korrekte Attribut "renewable" liefert. Wir machen's uns aber bequem und parsen jeweils das Element "renew-info" in der summarischen Anzeige.

Q: Warum wird im Template immer noch "O von 5" Verlängerungen angezeigt, obwohl das Exemplar nicht verlängerbar ist? A: Weil es so Hardcoded im Template stand.

Hier das vorher/nachher (committ folgt morgen):

ausleihen-bad ausleihen-good

oschihin commented 10 years ago

Zu früh gefreut und zu gefixt, das Problem der Fernleihen muss noch genauer angeschaut werden. Heute morgen ist mir aufgefallen, dass bei Anmeldung keine Items zurückgeliefert werden, das berüchtigte "no data".

Analyse

In dieser Funktion wird zuerst der Link für den Rest-Request zusammengebaut und dann dem Benutzer erlaubte Aktionen ausgegeben: https://github.com/swissbib/sbvf2/blob/4d50c3502385eb7c2ebcee0cb149261cbf56d05e/module/Swissbib/src/Swissbib/VuFind/ILS/Driver/Aleph.php#L120

Dabei wird diese Core-Funktion aufgerufen, welche mit zwei BIBs schlecht umgehen kann, zumindest in der konfigurierten Art und Weise: https://github.com/swissbib/sbvf2/blob/4d50c3502385eb7c2ebcee0cb149261cbf56d05e/module/VuFind/src/VuFind/ILS/Driver/Aleph.php#L625

oschihin commented 10 years ago

@vonarx @luchner

Problem

Ausleihen sind nicht möglich, Exception (s.o.).

Analyse

Folgende Funktionen im Aleph-Driver:

Dasselbe Problem wie oben schon. Falls DSV21 nicht konfiguriert wird, funktioniert es.

Hintergrund

VuFind geht davon aus, dass eine Systemnummer eines Aleph-Systems die Systemnummer in der Form BIB-Nummer (z.B. DSV01-012345678) enthält, wenn mehr als eine BIB konfiguriert ist.

Lösung

Zwei Wege:

  1. Im Driver: Ausbau unseres eigenen Aleph-Drivers, Umgehen der Funktion parseId(). Kann man machen, wir entfernen uns aber immer weiter vom Core.
  2. ev. Ausgabe der Aleph-Systemnummern mit vorangestellter BIB. Das wäre im CBS zu machen.

Jedenfalls braucht der Komplex noch weitere Analyse, es wird noch weitere betroffene Kontofunktionen geben. Falls wir das nächste Woche nicht lösen können, müssen die Fernleihen vorerst aussen vor bleiben.

ToVie commented 10 years ago

"2. ev. Ausgabe der Aleph-Systemnummern mit vorangestellter BIB. Das wäre im CBS zu machen."

=> das kann auch auf der Aufbereitungsseite noch gemacht werden. Die Information wird im Unterfeld $D ausgegeben:

949 $BIDSBB $CDSV51 $DDSV01 $E003946842 $FA208 $bA208 $c208FO $jJF M II 597 Ed 2007 FBOe...
949 $BIDSLU $CILU50 $DILU01 $E000475422 $FLUUHL $bLUNI3 $cU3FRE $jPC 33 CH .b BIAG 2007...
949 $BNEBIS $CZAD50 $DEBI01 $E005229467 $FZ01 $bZ01 $c02 $jHC 7233 Expl 2...