Programme zum Buchen von Druckgebühren und
Abfragen eines Kontostandes
- die betreffenden - z.B. vom Printsystem benutzten - Programme heißen:
konto_abfrage, konto_buchung, konto_storno und konto_einzahlung
- statisch gelinkte C-Programme
- Quellen in /afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse
- make clean; make -f Makefile.static
- konto_abfrage nkz | sonderkonto | ubc-benutzerkartennummer
- konto_buchung nkz | sonderkonto | ubc-benutzerkartennummer betrag [bemerkung] [drucker] ["force" | "check"]
- konto_storno nkz | sonderkonto | ubc-benutzerkartennummer buchnr [bemerkung] ["force"]
- konto_einzahlung nkz | sonderkonto betrag [bemerkung]
- diese Programme rufen jeweils eine entsprechende C-Funktionen
konto_stand(), konto_buchen(), konto_storno(), konto_einzahlung()
- definiert sind diese in
/afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse/finanzen.c
- die Argumente der Programme werden in POST-Variable 'eingepackt'
- mittels urzdb_run() (definiert in /afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse/urzdb.c)
werden die PHP-Scripte konto.php3 (bei Konto-Abfrage) bzw.
konto-rw.php3 (bei Buchung, Storno oder Einzahlung) ausgeführt
- die mittels urzdb_run() ausgeführte PHP-Scripte stehen in
/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/gateway
- konto.php3 führt ebenfalls nach /afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/gateway/konto-rw.php3
(dort werden
letztlich die SQL-Kommandos abgesetzt und
der Kontakt zum Bibliothekssystem aufgenommen)
- zunächst Kontrolle, ob das NKZ nur aus Ziffern besteht --> UBC-Ausweis
- Switch gemäß Variable $aktion (gesetzt in /afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse/finanzen.c)
- "kontostand"
- mittels extern_tool()
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/lib/tools.php3)
wird "ubc_anfrage $ausweis" gestartet
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/tools/bin/ubc_abfrage)
- Ergebnis von ubc_anfrage wird in stdout erwartet
- z.Z. nur echo 1 9999 , weil Abfrage des Kontostandes aus LIBERO nicht implementiert ist
- wenn der erste Wert in stdout 1 ist,
- gibt der zweite Wert den Kontostand des UBC-Users an
- sonst Fehler an die C-Funktion konto_stand() zurückgeben
- an C-Funktion konto_stand() wird zurückgeben:
- stand_alt
- errorcode
- status 0 (Problem) oder 1 (OK)
(die Umwandlung der PHP-Variable status in C-Returncode erfolgt in
der Funktion urzdb_run() des Files /afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse/urzdb.c)
- "buchen"
- $bemerkung = $seiten $duplex $drucker
- mittels extern_tool()
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/lib/tools.php3)
wird "ubc_buchung $ausweis $betrag $drucker $bemerkung $force" gestartet
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/tools/bin/ubc_buchung)
- als Ergebnis werden in stdout vier Werte erwartet:
- status
- ubc_katkey
- konto_alt
- konto_neu
- bei Force-Buchung:
printf "%s\n%s\n%s\n%s\n%s\n%s\n" 8 "$ausweis_nr" "$betrag" "D" "$drucker $bemerkung" " " | /usr/bin/nc cache.bibliothek.tu-chemnitz.de 6001
- bei anderer Buchung: printf "14\n%s\n" "$ausweis_nr" | | /usr/bin/nc cache.bibliothek.tu-chemnitz.de 6001
- wenn Rückgabewert status == 1
- mittels der PHP-Funktion ubc_log (steht mit in konto-rw.php3)
wird die Mysql-Tabelle ubc_kontenbewegung
mit den Rückgabenwerten von ubc_buchung fortgeschrieben
- sonst wird in der gleichen Tabelle des Fehlversuch registriert
- an C-Funktion konto_buchen() wird zurückgeben:
- buchungs_nr (die "Last-Insert-ID" der Mysql-Tabelle ubc_kontenbewegung) (im Fehlerfall 0)
- stand_alt (im Fehlerfall 0)
- stand_neu (im Fehlerfall 0)
- errorcode
- status 0 (Problem) oder 1 (OK)
- "storno"
- $bemerkung = $seiten $duplex $drucker
- mit der PHP-Funktion read_ubc_log (steht mit in konto-rw.php3)
ausgehend von der buchnr (entspricht ubc_kontenbewegung_id) die Werte der zu stornierenden Buchung aus der MySQL-Tabelle ubc_buchung lesen
- ausweis
- ubc_katkey
- betrag
- drucker
- flag (nur für Kontrollen, damit nichts 'Falsches' storniert werden kann)
- mittels extern_tool()
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/lib/tools.php3)
wird "ubc_storno $ausweis $betrag $ubc_katkey $drucker $bemerkung" gestartet
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/tools/bin/ubc_storno)
- in stdout wird als Ergebnis nur ein Fehlercode erwartet
- z.Z. nur echo 1 weil automatische Stornierungen vom Printserver aus nicht mehr vorgenommen werden
- mit der PHP-Funktion change_ubc_log (steht mit in konto-rw.php3)
die ursprüngliche Buchung in der Mysql-Tabelle ubc_kontenbewegung als
storniert kennzeichnen
- mit der PHP-Funktion ubc_log (steht mit in konto-rw.php3)
die Stornierung selbst in der Mysql-Tabelle ubc_kontenbewegung festhalten
- an C-Funktion konto_storno() wird zurückgeben:
- errorcode
- status 0 (Problem) oder 1 (OK)
- "einzahlung" gibt es für die UBC nicht
- das NKZ besteht nicht nur aus Ziffern --> NKZ oder Sonderkonto
- mit Funktion get_person_sonderkonten_id() ausgehend vom NKZ
die person_nr oder sonderkonten_id ermitteln
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/lib/urzdbtools.php3)
- mit Funktion konto_kontostand() alten Stand (konten_dispo, kontenbewegung_neu) laden
(Quelle:/afs/tu-chemnitz.de/admin/MoUSe/WWW/interface/lib/konto.php3)
- Switch gemäß Variable $aktion (gesetzt in /afs/tu-chemnitz.de/admin/MoUSe/EXT_TOOLS/libmouse/finanzen.c)
- "einzahlung"
- "buchen"
- "storno"
- mit Funktion konto_kontostand() neuen Stand (konten_dispo, kontenbewegung_neu) laden
- an C-Funktionen konto_buchen() ... wird zurückgeben:
- buchungs_nr (die "Last-Insert-ID" der Mysql-Tabelle kontenbewegung) (im Fehlerfall 0)
- stand_alt (im Fehlerfall 0)
- stand_neu (im Fehlerfall 0)
- errorcode
- status 0 (Problem) oder 1 (OK)
Dietmar
Grunewald
August 2003