Doorgaan naar hoofdcontent

 

OCLC Wise Support NL

SIP2 manual (English)

General

Why do certain (self-services) vending machines have more features than others? Or even less in comparison with other vending machines? In this manual you'll find the possibilities and limitations of the SIP2-protocol. 

International protocol for exchanging information

SIP2 is an international protocol for exchanging messages between vending machines and library systems. This protocol was developed by 3M (company). The main advantage of this protocol is that most vending-machine and library management software suppliers support this protocol.

However, the company 3M has stopped developing and supporting this protocol. A possible successor is NCIP, which is used by OCLC for - for example - the communication between Wise and the National Royal Library (KB).

SIP2 functionalities

SIP2 offers the following functionalities:

  • Selling of depreciated items: when checking out a depreciated item, it is possible to sell it to the patron.
  • When the patron checks out an already borrowed item, ask to confirm whether the patron wants to borrow the item again.
  • Confirm that items have an attachment.
  • Handling attachments as configured in Wise.
  • Confirm items are damaged.
  • Checking out damaged items as configured in Wise.
  • Work with duplicate loan periods.
  • Improved error handling.
  • Improved design of receipts.
  • Separate renewal dialog: see borrowed items, see if item can be renewed, what the new loan period will be and see the renew costs.
  • Patron notifications: within Wise you can set individual or general notifications for a patron. These will be shown on a vending machine.

License for SIP2+ module

The functionalities above are available for SIP2-suppliers through a specific SIP2+ license. As these options only work if the software of the SIP2-supplier has been updated, libraries can only purchase these via the SIP2-suppliers.

In The Netherlands there are approximately ten providers of machines/services require communication with a library system via the SIP2 protocol. Wise has several possibilities for communicating with third-party machines/services using the SIP2-protocol. OCLC provides Wise through a licensing model to independent libraries, collaborating organizations and Provincial Service Organizations (called Contract partners). The Contract partner arranges the functional and physical access of the SIP2-machines to the OCLC Wise system (and associated licenses).

The contents and operation of the SIP2-protocol is based on the description by 3M (SIP2 Protocol Definition.pdf version 2.12 – April 2006). The SIP2-protocol defines the various messages and structure of these messages. The operations and usage of these messages is not described in the SIP2-protocol, therefore this manual will explain the practical usage and operations.

Besides the default operation and possibilities within the normal SIP2, OCLC has developed extensions for the protocol (called SIP2+). These extensions must be controlled from Wise and are expected to work within the SIP2 machine: the supplier must have updated the software of their SIP2-machines. Also, to be able to use the extensions the supplier must have enabled the SIP2+-licenses.

Capacity

OCLC advises their Contract partners about the needed server and network capacity. The loan number is an important factor in this advice. The extensions of the services and dialogs have an impact on the performances of the library system. Also, OCLC works under the assumption that the SIP2-suppliers make fair use of the granted access (by Contract partners) of the Wise system. The available capacity is tuned on the expected average usage.

To give the Contract partners an overview of the server load of SIP2-applictions, Wise counts the usage of SIP2-dialogs per branch each day on each port (machine) per dialog number. This way, Contract partners can decide for themselves what the load per SIP2-supplier is. For bigger Wise systems, Contract partners are advised to use a calculation-model where the SIP2-dialogs are included.

SIP2 suppliers

Every SIP2-supplier can be granted access to a Wise system. OCLC is not responsible for the consequences of the operations of the connected SIP2-machines and systems. The license agreement between OCLC and the Contract partner determines to which extent OCLC is responsible for the operations of the Wise systems.

Every SIP2-supplier has access to the default SIP2-dialogs. If the supplier wants to access the payment SIP2-dialogs, they should request a so-called SIP2-supplierscode from OCLC. There's a one-time fee attached to this request. OCLC will instruct and support the SIP2-supplier with configuring this code and logging into the Wise system. Using this code (and number), Wise can identify the SIP2-supplier. A suppliercode will be granted to a requester for the uses in the agreement. Transferring this code is not allowed.

OCLC has the rights to stop the support and operations of this code in case of abuse.

SIP2-suppliers that sign in with a supplier code are granted use of the payment SIP2 dialogs. Of course, the license will be checked. SIP2-suppliers with a code can request SIP2+. OCLC will charge an annual fee for this purpose (contact OCLC for the specifics). OCLC will instruct and support the supplier with configuring and usage of the additional SIP2+ functionality. The SIP2-licences must be activated by the SIP2-supplier for every branch that wants to use a payment terminal.

OCLC reserves the rights to stop the support and operations of SIP2+ in case of abuse or skipping the yearly payments of SIP2+.

Default SIP2-dialogs

From the default SIP2-protocol the following functions are supported:

Dialog Description

Dialog 9/10

Checking in

Dialog 11/12

Checking out

Dialog 17/18

Item info

Dialog 23/24

Patron status

Dialog 29/30

Renewing

Dialog 35/36

End of session

Dialog 63/64

Patron information

Dialog 65 /66

Renew every item

Dialog 97

Retry request

Dialog 93/94

Sign in / connect

Dialog 99/98

Sign in

SIP2 payment dialogs

For processing payments, OCLC has developed the following dialogs:

Dialog 37/38

Pay unpaid registrations

Dialog 41/42

View paid registrations

Usage of the dialogs depends on a few things:

  1. The SIP2-supplier should implement the SIP2 supplier code from OCLC correctly in the dialogs.
  2. The software of the SIP2-supplier must be able to process the functionality.
  3. The needed SIP2-licenses must be configured correctly for the library/branch/supplier.

SIP2-Plus (SIP2+)

Actually being able to deliver the SIP2+-functionality is dependent on the following:

  1. The SIP2-supplier should have implemented SIP2+ by OCLC (and therefore have paid for the license from OCLC).
  2. Besides that, the usage of SIP2+ is free for libraries.
  3. The software of the SIP2-supplier must be able to handle the functionality.
  4. The needed SIP2-licenses must be configured correctly for the library/branch/supplier.

SIP2+ has the following functionality:

  • Selling of depreciated items: when checking out a depreciated item, it is possible to sell it to the patron.
  • When the patron checks out an already borrowed item, ask to confirm whether the patron wants to borrow the item again.
  • Confirm that items have an attachment.
  • Handling attachments as configured in Wise.
  • Confirm items are damaged.
  • Checking out damaged items as configured in Wise.
  • Work with duplicate loan periods.
  • Improved error handling.
  • Improved design of receipts.
  • Paying for other patrons.
  • Patron language.
  • Separate renewal dialog: see borrowed items, see if item can be renewed, what the new loan period will be and see the renew costs.
  • Patron notifications: within Wise you can set individual or general notifications for a patron. These will be shown on a vending machine.

See for more information the associated license.

SIP2-Licenses

The SIP2-machine receives access to the additional functionality using these licenses. The following extensions are available and can/must be activated per branch/machine:

ANONIEME_LENERS

  • This machine can be used anonymously (creating/depositing credit).

BETAAL

  • Registrations can be paid using the indicated methods. Registrations can be viewed per type and per id (recno). Without this license, dialog 37 won’t be shown.
  • Dialog 41 can also be shown (about paid registrations).

DUBBELE_LEENTERMIJN

  • Support for double loan periods.

GEBRUIKERSNAAM

  • Support for saving the username in dialog X1.

FAMILIE

  • Ability to see if other family members have unpaid registrations. These registrations will be shown in the field FM.

ITEM_LENER

  • Showing the patron number in field AA in dialog 17/18 if the status of the item is U (loaned), R (on hold) or F (loaned to special patron).
  • This license is supplier-independent.

LENERS_MELDINGE N

  • Showing patron notifications in the AF-field.

LEENSTRIPPEN

  • Showing payment possibilities of punches and registering sold punches for patron (dialog Y1/Y2, Y3/Y4, Y5/Y6).
  • For registering punches, the license BETAAL must be configured as well.

MACHTIGING

  • Whether the library supports giving patrons permissions to let others pay unpaid registrations. With this license, this functionality is enabled.
  • Showing in dialog 64/64 whether there are unpaid registrations for patrons where you are authorized to pay these registrations for. These are shown in the field FM.

MAKEN_BOEKINGEN

  • Allow patrons to create a journal entry within Wise.
  • This license is needed for dialog 39 (depositing/creating credit for anonymous users). If a machine only needs to create a journal entry without the ability to pay them, this license is sufficient. Else the license BETAAL is needed.
  • The journal entry codes sent to Wise need to be known within the Wise system.

SORT_LIC

  • Without this license, Wise will always use the deposits 01 - 04. Every item that can be placed on the shelfs will be placed in deposit 05. Only directly checking in items from patrons will be supported. For branches without this license and with a deposit for a temporary shelf, it will look at the filled deposit. Items from a route collection don’t receive status D but can be placed directly on the shelf. No deposit filled for the temporary shelf? Then it will use deposit 4.
  • If this license is configured, all items will be placed in a deposit (no. 05-99) corresponding to the configured shelf when checking in (09/10). Wise will also handle the transport items. For dialog 17/18, it will also show the deposit number if the item is not loaned. If the item is loaned, it won’t show a deposit number.
  • Dialog 43/44 (NBD-sorting) is only available in combination with this license.
  • The license must be configured for each branch and is independent on the supplier. The license is also available for SIP2-suppliers without SIP2-supplierscode.

VERLENGMOGELIJKHEDEN

  • Support for dialog 70/71 where the renewing options are shown.

VEST_WISSEL

  • Whether the machine is able to send the branch number with journal entries. Can be used for a central machine for the purpose of internet regulation. To create a journal entry, the license ‘MAKEN_BOEKINGEN’ must be configured.

License

Conditions

Cost

ANONIEME_LENERS 

VEST/LEV 

Pricelist

BETAAL

VEST/LEV

Pricelist

DUBBELE_LEENTERMIJN

PLUS/VEST

None

GEBRUIKERSNAAM 

PLUS/VEST

None

ITEM_LENER 

VEST/LEV

Pricelist

LENERS_MELDINGEN

VEST/PLUS 

None

LEENSTRIPPEN

VEST/LEV

Pricelist

MACHTIGING

PLUS/VEST (from 6.3.2)

None

MAKEN_BOEKINGEN 

VEST/LEV

Pricelist

SORT_LIC 

VEST 

Pricelist

VERLENGMOGELIJKHEDEN

PLUS/VEST 

None

VEST_WISSEL

VEST/LEV

Pricelist

Conditions:

  • PLUS = Supplier needs a SIP2+-license.
  • PLUS/VEST = Supplier needs a SIP2+-license and the branch must have configured the license.
  • VEST/LEV = Supplier needs to share the SIP2-supplierscode and the branch must have configured the license.
  • VEST = The branch must have configured the SIP2-license.

   The table above refers to a pricelist. This pricelist is included with the offer. The Wise-licensee can request the latest version of the pricelist.

This pricelist will only be sent to Wise-licensees. Other interested parties are referred to this licensee.

SIP2 Connection/response-times

Only SIP2-connections based on socket-connections are supported in Wise. The charset of the data sent is UTF-8. The names of patrons or item descriptions can contain special characters.

In the advice from OCLC about the server and network capacities, the aim is to have an acceptable response-time in the SIP2-dialogs. Here, response time is the same as the response time from the Wise system. For the most important dialogs (9/10, 11/12 and 63/64), one second is the maximum aimed response time. For the signing dialogs (93-99), the aimed response time is less than five seconds. For all other dialogs, the aimed response time is two seconds.

The real response time depends on the network and server load.

Description dialogs

General knowledge about the design and structure of SIP2-dialogs is required. Only the custom-developed functionality by OCLC (SIP2+) is described in this paragraph. The dialogs display a 'patron number' in several places: this is the patron's main card number. The descriptions will use both patron number and card number for this.

Dialog 41/42: View unpaid registrations

Request: field FA of FB of FC should contain a Y, for example FBY. Registrations with invoice status J are sent as well. The machine can decide whether it should show it or not. Also added to the response are:

  • Description of the item
  • Status: I=invoice, D=debt collection, R=payment arrangement
  • Debt collection date, dd-mm-yyyy (with status D)
  • Unique identifier of the item: adm_id
  • Item type (1-contribution, 2-fines/contribution etc., 3-sales, 4-cash receipts, 6-theater)
  • Date payment arrangement. Items with a filled date don’t have to be paid (with status R).

Fields are separated by a tilde instead of a dash.

Field           1         2    3       4         5     6        7       8   9  10

YZ-line:   14-03-2004 ~ Boete ~ ~ 10-03-2004 ~ 0.30 ~ ID ~ 01-10-2008 ~ 10 ~1~ - -

Structure:

Field Description

Field 1

Creation date of item

Field 2

Description of item

Field 3

Title or description of journal entry code.

Field 4

Date on which calculations are based (e.g. return date of the item)

Field 5

Amount

Field 6

Status: I=invoice, D=debt collection)

Whether the registration is debt collected or if the registration will be paid by invoice. If there are unpaid membership fees, then the invoice status will be shown (when it's configured for a customer that an invoice authorization has been extended for collecting the membership fee).

Field 7

Date on which the registration is sent to the debt collector.

Field 8

Unique ID of the registration (can be used to pay registration)

Field 9

Type

Field 10

Date payment arrangement.

Dialog 41/42: Show paid registrations

Fields are separated by a tilde instead of a dash.

YZ-line: 01-11-2009 ~ Registrations ~ 0.40 ~ Cash ~ Description

Dialog 37/38: Pay open registrations

Added: multiple id’s in field fee_identifier (CG), separated by '+'
CG<id>+<id>+<id>+

Example: CG2500+417+312+

These registrations are paid first. If there is money left, it will be added to the deposit of the patron.

Added: field ‘FX’
This field can be used to gather the payments in a way the payments can be linked to the correct journal. It’s a five-digit number and it is the SIP2-client's responsibility to provide Wise with this number – this number is generated by the SIP-client. A SIP2-client can for example use a session-number for each patron/day.

This number needs to be provided when increasing the deposit and when paying for fines and fees.

Example:
A patron has two outstanding fees, both 1.25 euro. The id’s of these fees are 464305 and 464306 (obtained by dialogue 41/42)

3720200117     1347060100EURBV1.25|AOWise|AA28340011105903|AC|AD|CG|BK|FX12345|FC1.25|AY1AZEAD4
3720200117     1347060101EURBV1.25|AOWise|AA28340011105903|AC|AD|CG|BK|FX12345|FC1.25|AY1AZEAD4
3720200117     1347060109EURBV2.50|AOWise|AA28340011105903|AC|AD|CG464305+464306+|BK|FX12345|FB2.50| AY1AZEAD4

Line 1: make deposit of 1,25. The payment type is cash (paymenttype 00), identification number is 12345 (field FX)
Line 2: make deposit of 1,25. The payment type is bank (paymenttype 01), identification number is 12345 (field FX)
Line 3: pay fees with id’s 464305 and 464306 using deposit (paymenttype 09) and make use of the deposit, done under identification number 12345 (field FX)

What happens in Wise:
Financial record 464305 will be closed and registered in journal Knnn
Financial record 464306 will be closed and registered in journal (Bnnn)

The temporary financial records (the added deposit), will be removed from the database. This is done to make sure they won’t affect the journal anymore. This method only works for deposits on the same day.

If the SIP2 client doesn’t supply the id’s, Wise will automatically start write off the oldest outstanding items until all credit of the patron is used. The id’s of outstanding items can be obtained with dialogue 41/42.

Dialog 63/64: View patron information

If the field FW has the value B, it will be interpreted as retrieving patron information for a payment terminal. In that case, the action won’t be cancelled if the patron has too many registrations. The following fields are sent besides the regular fields.

  • Field FN: full patron name
  • Field FM: card numbers for other patrons that the patron can pay registrations for.
  • Field FO: username of the patron
  • Field FU: statistical category of the patron, supplied if BETAAL or MAKEN_BOEKINGEN license is configured.
  • Field LF: birthdate as yyyymmdd
  • Field AK: for each loaned item: item number, name and return date (as dd-mm-yyyy). example: AK10000021028319 De Terugkeer – 22-03-2012|

For payment terminals with a SIP2+-license, the field FM contains the card numbers of other patrons that the current patron is permitted to pay registrations for. This requires LIC_MACHTIGING to be configured, and the patron needs te be authorized for payment. Card numbers of main/extra subscriptions will also be sent in this dialog.

Increasing and using credits

General workflow

The patron will be authenticated with dialog 63/64 and a pin will be checked (if used). In the response the field FeeLimit (CC) will be returned. This field contains the amount the patron can spend.

  The FeeLimit is determined by:

  • Total unpaid registrations
  • Total credit (added to the patron's card)
  • The configuration for the max negative amount a patron can have as credit

Spending limit in that case is (credit + max_negative) – unpaid registrations.

Unpaid membership fees don't affect the FeeLimit. The maximum negative amount is defined in the patron's membership definition. So, various patrons can have different spending limits.

In case the credit/spending limit is insufficient, the patron must increase his credits (deposit). This requires SIP2 dialog 37 which responds with the FeeLimit. After using a printer, browsing the internet, etc. dialog 39 reports to Wise how much of the credits were used. This is subtracted from the patron's deposit. Unused credits won’t be returned.

 Negative amounts are not accepted.

Unknown users (in Wise) can’t deposit credits. Their use of facilities like printers etc. can be reported by creating a new dialog 39 where Payment Method Type is set and not equal to 09 (deposit).

Depositing for non-anonymous users

 The patron must be known in Wise

Dialog: 37/38

Addition to the SIP2 protocol:

  • Field FA,FB of FC to indicate what the money will be used for.
  • FA – pay membership fees
  • FB – pay registrations
  • FC – increase credits

For this solution FC should be used.

Example request
3720091116 0910000000AA29444000001179|AOHKA-Testbibliotheek|BV10.00|FC10.00|AY2AZE1EF

Dialog 37
Transaction date: 16-11-2024 (09:10:00)
Fee type: 00 (unused)
Payment type: 00 (00-cash,01-visa,02-creditcard,03-chipknip)
Patron-id: 29444000001179
Amount: 10.00
Goal: increase credits (FC) with 10.00 euro
Payment method: cash
Tracking number dialog: 2
checksum: E1EF (fake in this example)

The amount is specified in the field BC and FC.

Example response
The standard SIP 38 response contains the new FeeLimit in field CC.
38Y20091116 091000AOHKA-Testbibliotheek|AA29444000001179|AFBetaling agreed|APPayment agreed|CC10.00|AY2AZE1EF

Dialog 38
Payment accepted: Y
Transaction date: 16-11-2009 (09:10:00)
Patron-id: 29444000001179
Current credit: 10.00
Tracking number dialog: 2
Checksum: E1EF (fictional example)

Use of credits for non-anonymous patrons or registering facility usage by anonymous patrons

Dialogs: 39/40

Request
39<transaction date><Patron Identifier><Fee amount><Fiscal Transaction Type><Payment Method Type>
The message will be closed by a sequence number and, if relevant, a checksum.

Response
40<payment accepted><Patron Identifier><dialog message><print line>

Field

Code

Format

Transaction date

 

18 pos. Required: YYYYMMDDZZZZHHMMSS

Fee Amount

BV

Field of variable length, required, numeric format nnnnnn.nn (decimals after the period)

Fiscal Transaction Type

FH

Field with a length of 4, required, contains the Wise journal entry code. Dialog will be rejected if the field is empty or if it does not exist in Wise. Only journal entry codes starting with 2,3 or 4 are accepted (2xxx,3xxx,4xxx).

Patron Identifier

AA

Field of variable length, optional. If this field is used, the patron must be known in Wise. If the patron is unknown, the dialog will be rejected. If this field is omitted, the patron is anonymous.

Payment Method Type

FI

Field with a length of 2, numerical.
00 – cash, 01 – visa, 02 – credit card, 03 – chipknip, 09 – deposit.

For known patrons 09 must be used. For anonymous patrons 09 cannot be used, and value should be 00, 01, 02 or 03. Payments with PIN should be 01 or 02 (bank).

Patron passwords are not used; these happen in dialog 63/64.

Fee Amount
This amount can never be higher than the FeeLimit from dialog 63/64 or 37/38. All amounts are in euros.

Example request
3920091116 091000AA29444000001179|BV1.00|FH2910|FI09|AY3AZE1EF

Dialog 39
Transaction date: 19-03-2003 (09:10:00)
Patron-id: 29444000001179
Amount: 1.00
Action: Internet
Journal entry code: 2910
Payment method: deposit (patron is known)
Tracking number dialog: 3
checksum: E1EF (fictional example)

Example response
40Y20091116 091000AA29444000001179|AF1.00 euro paid|AG1.00 euro paid|CC9.00|AY3AZE1EF

Dialog 40
Payment accepted: Y
Transaction date: 16-11-2009 (09:10:00)
Patron-id: 29444000001179
Dialog notification: 1.00 euro paid
Print notification: 1.00 euro paid
Current limit: 9.00
Tracking number dialog: 3
Checksum: E1EF (fictional example)

Registering credits for anonymous patrons or patrons with a one-day card

The goal is to register credits that were used by an anonymous patron for the use of things like printers or internet access. The main idea is that this patron deposits credit in Wise, and Wise transforms this anonymous patron into a regular patron with a special patron number, which can be used to identify them. After this has happened, the patron can be treated as a regular patron and can increase their credits.

Dialog: 37/38

Addition to the SIP2 protocol: Field FC shows that it concerns increasing credits.

For anonymous users:
Field AA does not contain a patron number but shows **ANONIEM** instead.

For day card users:
Field AA does not contain a patron number but shows **DAGPAS** instead.

The difference between anonymous and one-day card patron is that day card patrons can only use the library facilities for a single a day. Each night the status of these patrons is set to 'bedankt' (status 9). If a pin code is used it will be stored with the anonymous patron. If the wants to increase their credits later, they need to use the same pin code.

Example request
3720180115 1347060000EURBV10.00|AA**ANONIEM**|AOHKA-Testlibrary|FC10.00|AY2AZE1EF

Dialog 37
Transaction date: 15-01-2018 (13:47:06)
Fee type: 00 (unused)
Payment type: 00 (00-cash,01-visa,02-creditcard,03-chipknip)
Patron-id: **ANONIEM**
Amount: 10.00
Goal: increase credits with 10eu
Payment method: cash
Tracking number dialog: 2
checksum: E1EF (fictional example)

Example for day card patrons:
3720180115 1347060000EURBV10.00|AA**DAGPAS**|AOHKA-Testbibliotheek|FC10.00|AY2AZE1EF

Dialog 37
Transaction date: 15-01-2018 (13:47:06)
Fee type: 00 (unused)
Payment type: 00 (00-cash,01-visa,02-creditcard,03-chipknip)
Patron-id: **DAGPAS**
Price: 10.00
Goal: increase credits with 10eu
Payment method: cash
Tracking number dialog: 2
checksum: E1EF (fictional example)

Some remarks:
The amount is sent in field BV and FC. Without FC this dialog won’t work. The payment type cannot be 09. This type is reserved for credits and credits can’t be purchased with credits.

Example response
The default SIP2 response is extended with the new limit in field CC (FeeLimit).
38Y20091116 091000AOOCLC-Test library|AA299970001012345|AFPayment agreed|AGPayment agreed|CC10.00|AY2AZE1EF

Dialog 38
Payment accepted: Y
Transaction date: 16-11-2009 (09:10:00)
Patron-id: 29997000101234. This is a generated number from the transformation from anonymous to regular patron.
New limit: 10.00
Tracking number dialog: 2
Checksum: E1EF (fictional example)

In any further communications the patron number generated here must be used.

 This dialog will only work if the functionality is configured by OCLC.

Request payments

This extension is used for viewing payments. The payments are counted per date-type-payment method. Here the payments are counted for the same type and same payment method. Also this dialog can be used to get an overview of unpaid registrations.

Dialogs: 41/42

Request
41<transaction date><Patron Identifier><Date from><Date To><Payment Method Type><Debt type>

The message needs to be closed with a sequence number and a checksum.

Field

Code

Format

Transaction date

 

Length of 18, required: YYYYMMDDZZZZHHMMSS

Patron Identifier

AA

Variable length, required.

Payment Method Type

FI

Length of 2, numerical, 00 – cash, 01 – visa, 02 – credit card, 03 – chipknip, 09 – deposit.

Date From

FJ

Required. Date from. The shown registrations are handled on or after this date. Format: dd-mm-jjjj

Date To

FK

Required. Date to. The shown registrations should be handled before or on this date. Format: dd-mm-yyyy

Debt type

FA
FB
FC
FD
FG

Which types should be shown. FA – Contributions, FB – registrations, FC – Deposit. 0, 1 or more can be shown in this dialog. If omitted, all types are shown.

Using field FD, only unpaid registrations will be shown. If FA, FB or FC are added, these will be ignored.

Field FG will only show the open amount of punches. This can’t be used in combination with other codes.

Patron passwords are not used; these happen in dialog 63/64. 
Field FD determines whether it concerns a 'debt' overview or not. If this is the case, use of Payment Method Type is not relevant and will be ignored.

Response
42[<YZmessage>|]
The non-existing field identifier YZ will be used here.

The response consists of one or more lines with the following structure:
YZDate ~ Type ~ Amount ~ Payment method|

Type can consist of:
Membership fee, registrations, deposit. This can be requested with the field ‘Debt. Type’ in the request. These cannot be requested together.

Payment method can be one of: cash, chip, bank (credit card).

Example request, show payments
4120091116 091000AA29444000001179|FJ01-11-2009|FK30-11-2009|FI00|FAY|AY3AZE1EF
or
4120091116 091000AA29444000001179|FJ01-11-2009|FK30-11-2009|FI00|FBY|AY3AZE1EF
or
4120091116 091000AA29444000001179|FJ01-11-2009|FK30-11-2009|FI00|FCY|AY3AZE1EF

Dialog 41
Transaction date: 16-11-2009 (09:10:00)
Patron-id: 29444000001179
Date from: 01-11-2009
Date to: 30-11-2009
Payment type: 00 (00-cash,01-visa,02-creditcard,03-chipknip)
Debt type: Membership fee or registrations or deposit
Tracking number dialog: 3
Checksum: AZE1EF

Example response
42YZ01-11-2009 ~ Registration ~ 10.00 ~ Cash ~ <description>|YZ01-11-2009 ~ Contribution ~ 15.00 ~ cash ~ <description>|AY3AZE1EF

Response 42
1st payment: 01-11-2009 ~ Registrations ~ 10.00 ~ Munt ~ description
2nd payment: 01-11-2009 ~ Contribution ~ 15.00 ~ Munt ~ description
Tracking number dialog: 3
Checksum: E1EF (fictional example)

Example request, request unpaid registrations
4120100310 091000AA29444000001179|FJ01-01-2009|FK31-12-2010|FDY|AY3AZE1EF

Dialog 41
Transaction date: 10-03-2010 (09:10:00)
Patron-id: 29444000001179
Date from: 01-01-2009
Date to: 31-12-2010
Debt type: Unpaid registrations
Tracking number dialog: 3
Checksum: AZE1EF

Example response
42YZ01-12-2009 ~ Adult 4155 E ~ Subscription ~ 01-01-2010 ~ 41.00 ~ J ~ - - ~ 382 ~ 1 ~ - -|YZ25-02-2010 ~ Damage ~ ~ 01-01-2010 ~ 4.00 ~ ~ - - ~ 393781 ~ 4 ~ 01-04-2010|YZ05-03-2010 ~ Replaced card ~ ~ 05-03-2010 ~ 3.00 ~ ~ - - ~ 393831 ~ 2 ~ - -|AY0

Dialog 42
1st line : 01-12-2009 ~ Adult 4155 E ~ ~ 01-01-2010 ~ 41.00 ~ J ~ - - ~ 382 ~ 1 ~ - -

field 1: 01-12-2009:   creation date registration
field 2: Adult 4155 E : description registration
field 3: <empty> : title (empty for membership rules)
field 4: 01-01-2010 : start date membership
field 5: 41.00  : amount
field 6: Y  : will be collected by automatic invoice
field 7: - -   : date sent to debt collector
field 8: 382 : identifier
field 9: 1  : type of payment, see below for definitions
field 10:  - - : date for payment regulation, does not have to be paid before this date

2nd line  : 25-02-2010 ~ Damage ~ ~ 01-01-2010 ~ 4.00 ~ ~ - - ~ 393781 ~ 4 ~ 01-04-2010
3rd line  : 05-03-2010 ~ Replaced card ~ ~ 05-03-2010 ~ 3.00 ~ ~ - - ~ 393831 ~ 2 ~ - -

Tracking number dialog : 0

Types of payment:

1

Membership fees

2

Registrations

3

Store sales

4

Other revenue

Example request, request punches
4120091116 091000AA20105000000011|FGY|AY3AZE1EF

Dialog 41
Transaction date: 16-11-2009 (09:10:00)
Patron-id: 20105000000011
Debt type: Punches
Tracking number dialog: 3
Checksum: AZE1EF

Example response
42FGBookpunches~35|FGPunches-2~75|FGPunches3~Ransomed|AY3AZE1EF

Dialog 42
1st line: Book punches, 35 times
2nd line: Punches3, 75
3rd line: Punches3, ransomed
Tracking number dialog: 3
Checksum: E1EF (fake)

Punches

  Only works if the license is activated.

Request possibilities for punch purchase, dialog Y1/Y2
Dialog Y1 can be used to request the purchasable types of punches. The dialog should show the patron number and the punches.

Request: Y1
Y120091116 091000AA20105000000011|AY3AZE1EF

Field AA contains the patron number.

Response:
Y21[FGType ~ Code ~ Description ~ Amount ~ Price|]AF<Text>|seq.n0

If the request could not be processed, the status is 0 (Y20).

Request to purchase punces, Dialog Y3/Y4
Request Y3


Example:
Y320161116 091000AA20105000000011|FG01-40-15.75-4810 ~ 02-35-13.25-4810|FI00|AY0000
Field AA contains: patron number
Field FG contains: type - amount - price - journal entry code
Field FI: payment type

The various items are separated by a tilde.

 Attention: the type of punch card originates from dialog Y1. There, it contains a description that can be shown on the dialog.

Response:
Y4[1/0]AF<notifications>
1=ok, 0 = not ok, field AF contains an explanation.

Double loan period

 Only works if the license is activated.

Field FE in dialog 11 can only be used to indicate that the patron would like a double loan period, the value must be Y. This can be used for checking out and renewing (dialog 11 and 29 respectively).

Request family members

 Only works if the license is activated.

Dialog 63/64 is extended with field FM. This field contains the (main) card number, name, unpaid membership fees, unpaid registrations and open deposits.

The structure is:
[FM<patron number> ~ <name> ~ <contribution> ~ <registrations> ~ <deposit>|]

Request/save username

 Only works if the license is activated.

Dialog X1/X2 can be used to register the username of an anonymous patron.

The structure is:
X1<FO<username>|AA<patron number>|AD<pin code>

Example:
X1FPjan12345|AA20105000000011|AD1234

Response:
X2<status>|AA<patron number>|FO<username>|AF<text>

Status:
0 – Ok
1 – Not ok

Which licenses are activated?

Dialog 98 shows which licenses are activated for the SIP2 client:
98YYYYYY30000320110201 1138402.00AO|BXYYYYYYNYYYYNNNYY|AMBibl.Test|GGLIC_SORTEER / LIC_BETAAL / LIC_MAKEN_BOEKINGEN / LIC_VERLENGMOGELIJKHEDEN|AFWelcome <machine>|AY1AZD052

The machine in the example has the following licenses activated:

  • SORTEER
  • BETAAL
  • MAKEN_BOEKINGEN
  • VERLENGMOGELIJKHEDEN

SIP2+

Besides the options above, a supplier can activate the following options using SIP2+ by OCLC.

  • Selling of depreciated items: when checking out a depreciated item, it is possible to sell it to the patron.
  • When the patron checks out an already borrowed item, ask to confirm whether the patron wants to borrow the item again.
  • Confirm that items have an attachment.
  • Confirm items are damaged.

In the cases above, the patron must confirm something before the loan/sale will be processed. These notifications are shown in field FV. By assigning this field in the request with the value Y, the confirmation will be processed. 

The system option LEENHIS must be set before the machine can show the previously loaned items. Wise can indicate the support for each port (machine).

If the SIP+ license is not activated:

  • Depreciated items cannot be sold
  • Field FV contains the date when the patron has previously borrowed the item. The loan is already processed by then.
  • Materials with an attachment are loaned as set in the settings of Wise. Either way, the loan is already processed then.
  • Damaged items are able to be loaned.

Example:

Without confirmation:
11YN20110905 09301320110905 093013|AO|AA28340011105903|AB10000021028319|BON|BIN|AY1

Response:
120NNN20110905 092633AOBibl.8340|AA28340011105903|AB10000021028319|AJDe Terugkeer van de dansleraar|AH|BHEUR|BV0.00|BK0|ST0|FVPreviously loaned on: 26-08-2011|AY1

With confirmation:
11YN20110905 09301320110905 093013|AO|AA28340011105903|AB10000021028319|BOY|FVY|BIN|AY1

Response:
121NNY20110905 093013AOBibl.8340|AA28340011105903|AB10000021028319|AJDe Terugkeer van de dansleraar|AH26-09-2011|BHEUR|BV0.10|BK4|ST0|AFUitlening akkoord|AFEUR. 0.10 Leengeld|FQ0337|FQ0342|AGLeengeld|AGEUR. 0.10 Leengeld|AY1

Request renewal possibilities

 Only works if the license is activated.

Dialog 70/71 is available for requesting the possibilities to renew specific items.

Request:
7020110907 092600|AA28340011105903|AB|AY1

Response:
71GC8340450365719~Het schateiland : een oud verhaal van R.~11-11-2011~12-12-2011~0.00~0.15~0~0.00~|GC8340450371998~Brandt New York?~28-09-2011~26-10-2011~0.00~0.15~0~0.00~|GC8340450372020~Roebels voor de generaal / Tais Teng ; t~25-07-2011~05-10-2011~4.30~0.15~0~0.00~|GC8340450372053~De wraak van Rachwana / Peter Vervloed ;~25-07-2011~05-10-2011~4.30~0.15~0~0.00~|GC8340450372079~Kinderen gezond grootbrengen : wegwijzer~02-05-2011~05-10-2011~7.50~0.15~0~0.00~|FG0|AY1

Fields are separated by a tilde.

Field             1                            2                     3              4         5     6     7     8   9
GC-regel:
8340450365719~Het schateiland : een oud verhaal van R.~11-11-2011 ~ 12-12-2011 ~ 0.00 ~ 0.15 ~ 0 ~ 0.00 ~|

Structure:

Field Description

Field 1

Item number

Field 2

Title

Field 3

Current return date

Field 4

New return date (if renewing is allowed)

Field 5

Fine if too late

Field 6

Loan costs

Field 7

Punches count

Field 8

Renewal costs

Field 9

Remarks

Processing attachments with SIP2

Wise can process attachments in different ways. Important for this to work:

  • For each machine, the self service settings must be set in Wise (ZUSprofiel / SSS profile).
  • Each supplier has different settings for handling attachments.
  • Some suppliers can communicate with Wise using SIP2+.
  • The way the attachments are registered for an item:
    • The main item and attachment have its own RFID-tag
    • The main item contains the number of attachments in its RFID-tag.

Based on the settings and possibilities, attachments are handled in several different ways.

Settings of the machine
The settings differ for each supplier/machine. The following settings can be configured one way or another for each supplier:

  • Block checking out / checking in if the item is incomplete according to the RFID-tags.
  • Have the patron confirm that the item contains attachments if the RFID-tag of the main item indicates that it should contain multiple attachments. The loan/return is continued based on the answer of the patron.

Self service settings
In self service system settings (ZUSprofiel) you can configure the following settings: 

  • Items with attachments can be borrowed (Y/N)
  • Items with attachments can be returned (Y/N)

(if the item contains an attachment code in Wise)

Option Description

N = Not

Wise will block the return.

T = Table

The attachment code table (TABBIJ) contains information whether an attachment can block returning for each different code.

If the table returns true for a specific code and the machine supports this functionality (SIP2+), the dialog with the confirmation will be shown.

If the machine does not support this functionality or the table return false, the return will be blocked.

A = Always

An attachment won’t block the return.

Sorting

When checking in items (dialog 9/10), Wise will decide whether the item can be placed back on the shelfs immediately or not. If there is a reason when it can’t be placed back immediately, Wise will show this reason in field CL.

01 = Hits
02 = Reservations
03 = Transport
04 = Warehouse / blocked

Items with blocking reasons must always get status D (not-sorted). These items need to be checked in in the Wise Client. When items can be placed back immediately, the item will get the status B (inside) and field CL will have the value 05.

If the library sorts items with status B, the sorting license must be enabled for the specific branch.

Based on the placement in the library, this functionality will determine how this item should be sorted. The values 06 up to and including 99 are available for different sorting deposits. This value will be communicated using the field CL. If this sorting takes place physically, the machine translates this value to the right deposit.

Above is a broad description of the sorting functionality. Besides these possibilities, the following is available as well:

  • Determine depositing bin number per item
  • Determine depositing bin number based on target branch (transport)
  • Possibility to show additional notifications for each material type.

These possibilities should be discussed with the system administrator.

Sending e-mails from SIP2

It is possible to send an e-mail to a patron from a SIP2 machine. Wise provides a default email address in the SIP2 protocol. The email address will be sent in the field BE (dialog 63/64).

SIP2 Two-Factor Authentication (2FA)

You can enable 2FA for adding SIP2 machines in the Wise Manager. Go to Port and profile management > Profiles > Self Service System (SSS) profiles. Select the profile for which you want to configure 2FA must be configured or create a new profile. 2FA is enabled by providing a number in the field ‘2FA token valid’; you configure the duration for which a token is valid.

Optionally: bind a machine to an IP-address. If the IP-address of the machine is not the same as the IP-address of the server, the machines have to go through the authentication process again.

image-0.png

Configuring the email address that receives the One Time Password (OTP)
Wise > Management organizations > Branches > (select a branch) > tab Address details

image-1.png

Fill an e-mail address for ‘Email 2-factor authentication’. If necessary, a carbon copy of this email can be sent to an additional email address by configuring the 'CC 2-factor authentication'. After configuring these settings, an e-mail will be sent to these addresses each time a new SIP2 machine is added. This One Time Password is only valid for 30 minutes and will be saved in the Wise Manager (Wise > Port and profile management > Ports > Sip2 Two Factor Authentication).

The messages containing a One Time Password are so-called PCC-messages. For more information see Publieksberichten (Berichtklasse P).

Handling status D items for 'intelligente kasten'

Items with a hold that are checked in by a customer through a SIP2 machine receive status D (sorted item). Usually these items have to be prepared for the hold shelf through the Wise Client. This step can be simplified using the 'intelligente kast' (smart shelf) functionality.

This functionality allows the items to be placed directly on the smart shelf, which makes them 'hold ready' without having to use the Wise Client. This only applies to items that have been placed on hold in the branch where they were checked out: if the items need to be placed on transport, the smart shelf will decline the items and will show an appropriate error message. You can use this functionality by added the field DR to the 09 dialog:

  • If the field DRY is provided in the SIP2 check in request, the server will process the hold the same way as when check in the item through the Wise Client.
  • If the field DR is not provided in the SIP2 check in request, then this will be considered DRN.
  • If the field DRN is provided in the SIP2 check in request, then checking in the item will be processed according to the behavior of the self service machine.
  • You don't need any extra settings, licences or system options for this functionality.

Extra details about the DR field:

Current situation

Option 1
Customer checks in an item with a hold at a SIP2 machine:

  • The item receives status D.
  • The SIP response contains the exceptions/alternative bin as configured in the ZUSprofiel (02 by default).

Option 2
Staff member checks in the item through the Wise Client:

  • If there's a hold that is processed in the current branch:
    • The item receives status R.
    • Emails etc are sent out.
    • The item gets placed on a regular hold shelf.
  • If there is no hold being processed in the current branch (item has status D because - for example - it needs to be placed on transport):
    • The Wise Client returns a notification.
DRN

Option 1
Customer checks in an item with a hold at a SIP2 machine:

  • The item receives status D.
  • The SIP response contains the exceptions/alternative bin as configured in the ZUSprofiel (02 by default).

Option 2
Someone checks in an item with status D using a SIP2 client: 

  • If there's a hold that is processed in the current branch:
    • An error notification appears.
  • If there is no hold being processed in the current branch (item has status D because - for example - it needs to be placed on transport):
    • An error notification appears.
DRY

Option 1
Customer checks in an item with a hold at a SIP2 machine:

  • The item receives status D.
  • The SIP response contains the exceptions/alternative bin as configured in the ZUSprofiel (02 by default).

Option 2
Staff member checks in the item using a smart shelf (SIP2):

  • If there's a hold that is processed in the current branch
    • The item receives status R.
    • Emails etc are sent out.
    • The item gets placed on the smart hold shelf.
    • The SIP response contains the exceptions/alternative bin as configured in the ZUSprofiel (02 by default).
  • If there is no hold being processed in the current branch (item has status D because - for example - it needs to be placed on transport):
    • The check in is declined.

SIP2 over HTTPS

SIP2 machines can communicate over HTTPS. The advantages of HTTPs is that it does not require any configuration in the HostedWise routing or in branches like schools or small libraries. Furthermore, the communication is encrypted. SIP2 over HTTPS is plug and play, so no additional configuration to the network is needed.

The password should be 16 to 20 characters, consisting of letters, numbers and/or @$%^&+=-". There is no filter on IP address for SIP2 HTTPS requests, which means SIP2 is available from any public internet connection. Therefore it is important that user/login/url information is handled carefully.

The password can be set up in the Wise Manager > systemWise > Access codes and authorizations > Access authorizations > tab Users. By searching for “name (with role)”, the Wise user of the SIP2 port can be found (put 'machine' or 'actor' as a prefix for the access code of the port; for example 'actor-PAY1234'). Find the right port in the search results and select it. In the section above, the password can be set at 'Manager login code + https client'.

The url that is used to communicate is:
https://[WISE-URL]/sip2https/services .

To check whether the URL is correct, you can open the URL in the browser of your computer; if you see the following text, the URL is correct:
{"error":"Method not allowed"}

JSON request and response

The sip2https tool offers a means to tunnel clear-text SIP2 commands and replies through secured HTTPS. Each SIP2 command is wrapped in a JSON object and accompanied by a token. This token serves to identify the authenticity of the request.

Below is an example request- and response-pair. Note that initially the token (sent by the client together with a 93 request) will be empty. The server will supply a token after successful login. From that point on the client must issue the last received token on each subsequent request.

JSON Request example:

{

"sip2request":"6300020071001AO|AA21234002896242|ACxyzzy|AD1234|AY3AZEF37",

"token":"rqYtfjBBMOqK+fK7yW0Z1TSyCJ8"

}

JSON Response example:

{

"sip2response":"64Y83838383838AOWisecity|AA21234002896242|AE|BLN|CQY|BHEur|BV0.00|FB0.00|FC0.00|AY3AZBFDE"

"token":"rqYtfjBBMOqK+fK7yW0Z1TSyCJ8"

}

Notes for the (client side) implementation

The sip2https service has a base URL of the format:
https://<hostname>/sip2https/services and accepts only POST requests.

POST-ed data should be op Content-type application/json. Encoding is UTF-8.

For security reasons the SIP service requires a password (CO subfield of command 93) with a length of at least 16 characters. This password must be different from the username (CN subfield).

In a REST-like fashion, the service makes use of HTTP-status codes and error messages for error situations. Status 200 indicates a successful command, status codes in the 4XX series are used for different errors.

In case of Authentication failures, the service increments a failure counter per (client) IP address. When the failure counter reaches a certain predefined limit (typically 10) the IP address will be blocked from accessing the service for a certain predetermined period (typically 1 hour) to defend against abuse. A successful login resets the counter.

The token that is provided after a successful login will expire after a certain amount of idle time (typically 2 hours). If the client makes use of an expired token the server will respond with 401 Unauthorized. A reset of the server may also trigger timeout of a token.

Implementors should automatically re-login (93) in such cases.

Installation notes

sip2https is a CGI script that runs in the same environment as the Wisecat+, i.e. under Apache with mod_perl, and is deployed from the wise-bxmcgi package. Since it is deployed in a different directory (sip2https and not cgi-bin) there are specific ScriptAlias and Allow rules needed to allow functioning within the Apache environment. To enable, the following config should be included with the Apache config associated with the SSL (HTTPS) config:

ScriptAlias /sip2https/services /home/bng/sip2https/sip2https.pl
<Directory /home/bng/sip2https>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
Require all granted
</Directory>

 Note that it is the responsibility of the host to ensure that this script is only reachable via HTTPS and not via standard HTTP. The script itself does not enforce this (nor has the means to do that). The SSL connection is supposed to be handled by Apache or some other network component (e.g. a firewall) at the hosing side and this is out of scope for the sip2https script. (This script merely relays commands.)

This script makes use of the cache that is available on the Wise web server. By default this is a File-system based cache in tmp/FileCache/sip2https. Like with the CGI Wisecat+, a hazelcast or other memcached protocol capable object store can be used as well. The script stores the failure counters, blocking information and some session state there.

Additional configuration

Checking out and checking in

For checking out and checking in, the field CK will contain the material type of the item. For the machine, the material type can be the motivation to open the locker.

The response for checking out contains the field BV (Fee) and the field ST. The field ST shows the number of punches needed for a loan. Field BV does not show number of punches, but only the amount of money.

Field FR becomes FRY if the item has the status B (available) but is checked in again at the machine.

This process is available for every type of SIP2 machine.

Message numbers (notifications)

For each SIP-response that requires a notification to be shown, the field FQ contains a message number with a length of 4 numbers.

Click hiere for a list of SIP2 notifications

GEARCEERD = WHITELIST NIET NAAR UITZONDERINGENBAK – ZELFBEDIENING WISE

CASE
    WHEN in_meldnr = '0001' THEN
        RETURN '`Pasnummer is omgelabeld naar nummer: [{0}]; Pas is niet geldig!'';

    WHEN in_meldnr = '0002' THEN
        RETURN '`Let op: dit is een omgelabeld lenernummer!'';

    WHEN in_meldnr = '0003' AND in_client = 'Z' THEN
        RETURN '`S.v.p. met deze pas melden bij personeel'';

    WHEN in_meldnr = '0003' THEN
        RETURN '`Onbekende lener [{0}]; Pas is niet geldig!'';

    WHEN in_meldnr = '0004' THEN
        RETURN '`Lener is van andere vestiging; niet geaccepteerd'';

    WHEN in_meldnr = '0005' THEN
        RETURN '`De status [{0}] is niet correct; Niet geaccepteerd'';

    WHEN in_meldnr = '0006' THEN
        RETURN '`Let op! de lener heeft nog openstaande registraties!'';

    WHEN in_meldnr = '0007' and in_client = 'Z' THEN
        RETURN '`Pincode niet correct'';

    WHEN in_meldnr = '0007' THEN
        RETURN '`Dit is een oud (omgelabeld) pasnummer; Niet geaccepteerd'';

    WHEN in_meldnr = '0008' THEN
        RETURN '`Geen inleverdata in het verleden'';

    WHEN in_meldnr = '0009' THEN
        RETURN '`Inleverdata niet geaccepteerd (> 5 jaar)'';

    WHEN in_meldnr = '0010' THEN
        RETURN '`Geen Inzage-modus bij speciale leners'';

    WHEN in_meldnr = '0011' THEN
        RETURN '`Onbekend exemplaar [{0}]; kan niet worden uitgeleend'';

    WHEN in_meldnr = '0012' THEN
        RETURN '`Onbekend exemplaar [{0}]; kan niet worden geannuleerd'';

    WHEN in_meldnr = '0013' THEN
        RETURN '`Exemplaarnummer [{0}] is te kort; niet geaccepteerd als exemplaarnummer'';

    WHEN in_meldnr = '0014' THEN
        RETURN '`Exemplaarnummer [{0}] is niet correct; niet geaccepteerd als exemplaarnummer'';

    WHEN in_meldnr = '0015' THEN
        RETURN '`Lenernummer [{0}] niet geaccepteerd als exemplaarnummer'';

    WHEN in_meldnr = '0016' THEN
        RETURN '`Geblokkeerd'';

    WHEN in_meldnr = '0017' THEN
        RETURN '`Bijlage [{0}]'';

    WHEN in_meldnr = '0018' THEN
        RETURN '`Opbergnummer [{0}]'';

    WHEN in_meldnr = '0019' THEN
        RETURN '`Schade'';

    WHEN in_meldnr = '0020' THEN
        RETURN '`Exemplaar is gereserveerd; Geen inzage mogelijk'';

    WHEN in_meldnr = '0021' THEN
        RETURN '`Is al Inzage-uitgeleend aan deze lener'';

    WHEN in_meldnr = '0022' THEN
        RETURN '`Is al uitgeleend/gekoppeld aan deze lener op: [{0}]'';

    WHEN in_meldnr = '0023' THEN
        RETURN '`Exemplaar moet naar [{0}] voor een reservering'';

    WHEN in_meldnr = '0024' THEN
        RETURN '`Nota-exemplaar is uitgeleend aan [{0}]; kan niet worden uitgeleend'';

    WHEN in_meldnr = '0025' THEN
        RETURN '`Exemplaar is afgeschreven; kan niet worden uitgeleend'';

    WHEN in_meldnr = '0026' THEN
        RETURN '`Is al uitgeleend aan deze lener t/m [{0}]'';

    WHEN in_meldnr = '0027' THEN
        RETURN '`Is al verlengd t/m {0}''; -- aangepast voor publiek, maar kan zo ook wel voor staf

    WHEN in_meldnr = '0028' THEN
        RETURN '`Exemplaar heeft substatus [{0}]; kan niet worden verlengd'';

    WHEN in_meldnr = '0029' AND in_client = 'Z' THEN
        RETURN '`Exemplaar is in rekening gebracht'';

    WHEN in_meldnr = '0029' THEN
        RETURN '`Exemplaar is in rekening gebracht; kan niet worden verlengd'';

    WHEN in_meldnr = '0030' THEN
        RETURN '`Materiaal is geblokkeerd voor verlengen'';

    WHEN in_meldnr = '0031' THEN
        RETURN '`Nieuwe inleverdatum ligt voor inleverdatum exemplaar [{0}]; niet verlengd'';

    WHEN in_meldnr = '0032' THEN
        RETURN '`Geen strippentegoed meer; Kan niet worden verlengd'';

    WHEN in_meldnr = '0033' THEN
        RETURN '`sessie-id onbekend (lenerpas moet eerst weer worden gescand)'';

    WHEN in_meldnr = '0034' AND in_client = 'Z' THEN
        RETURN '`Exemplaar is niet uitleenbaar (Res.)'';

    WHEN in_meldnr = '0034' THEN
        RETURN '`Exemplaar is gereserveerd voor een andere lener; kan niet worden uitgeleend'';

    WHEN in_meldnr = '0035' THEN
        RETURN '`Exemplaar actueler'';

    WHEN in_meldnr = '0036' THEN
        RETURN '`Openstaande betalingen: ga naar de betaalautomaat'';

    WHEN in_meldnr = '0037' THEN
        RETURN '`Pincode niet correct, kan niet worden uitgeleend'';

    WHEN in_meldnr = '0038' THEN
        RETURN '`Exemplaar is al verkocht'';

    WHEN in_meldnr = '0039' THEN
        RETURN '`Annulering niet toegestaan; Uitgeleend aan een andere lener'';

    WHEN in_meldnr = '0040' THEN
        RETURN '`Exemplaar is ingenomen van een andere lener'';

    WHEN in_meldnr = '0041' THEN
        RETURN '`Exemplaar is al gereserveerd voor een andere lener'';

    WHEN in_meldnr = '0042' THEN
        RETURN '`Exemplaar MOET worden verlengd in [{0}]'';

    WHEN in_meldnr = '0043' THEN
        RETURN '`Was transport naar [{0}]'';

    WHEN in_meldnr = '0044' THEN
        RETURN '`Verkocht'';

    WHEN in_meldnr = '0045' THEN
        RETURN '`Exemplaar is niet verlengbaar'';

    WHEN in_meldnr = '0046' THEN
        RETURN '`Exemplaar is niet uitleenbaar'';

    WHEN in_meldnr = '0047' THEN
        RETURN '`Geen strippentegoed meer; Kan niet worden uitgeleend'';

    WHEN in_meldnr = '0048' THEN
        RETURN '`Mag niet uitgeleend worden (inleververzoeken)'';

    WHEN in_meldnr = '0049' THEN
        RETURN '`Let op! de lener heeft geen geldig abonnement!'';

    WHEN in_meldnr = '0050' THEN
        RETURN '`bevat bijlage: ga naar innamebalie'';

    WHEN in_meldnr = '0051' THEN
        RETURN '`Magazijn-exemplaar'';

    WHEN in_meldnr = '0052' THEN
        RETURN '`Plaatsing: [{0}]'';

    WHEN in_meldnr = '0053' THEN
        RETURN '`Uitlenen onbekende exemplaren [{0}]; niet toegestaan'';

    WHEN in_meldnr = '0054' AND in_client = 'Z' THEN
        RETURN '`Exemplaar is niet uitleenbaar (R)'';

    WHEN in_meldnr = '0054' THEN
        RETURN '`Exemplaar is niet uitleenbaar, geen reglement gevonden'';

    WHEN in_meldnr = '0055' AND in_client = 'Z' THEN
        RETURN '`Exemplaar is niet uitleenbaar (GR)'';

    WHEN in_meldnr = '0055' THEN
        RETURN '`Exemplaar is niet uitleenbaar, geen reglement gevonden [Gastreglement: {0}]'';

    WHEN in_meldnr = '0060' THEN
        RETURN '`Exemplaar is gereserveerd; Nogmaals innemen!'';

    WHEN in_meldnr = '0102' THEN
        RETURN '`Lener is van andere vestiging'';

    WHEN in_meldnr = '0106' THEN
        RETURN '`De status van de lener is niet correct [{0}]'';

    WHEN in_meldnr = '0107' THEN
    - - RETURN '`Maximale registratiebedrag is overschreden [{0}]'';
    RETURN '`Totaal aan registraties [{0}] overschrijdt maximum [{1}]'';

    WHEN in_meldnr = '0108' THEN
        RETURN '`'';

    WHEN in_meldnr = '0109' THEN
        RETURN '`'';

    WHEN in_meldnr = '0110' THEN
        RETURN '`Materiaal is niet geschikt voor automaat'';

    WHEN in_meldnr = '0111' THEN
        RETURN '`'';

    WHEN in_meldnr = '0112' THEN
        RETURN '`Artikel kan alleen aan de balie worden uitgeleend'';

    WHEN in_meldnr = '0113' THEN
        RETURN '`'';

    WHEN in_meldnr = '0114' THEN
        RETURN '`Bevat bijlage: ga naar uitleenbalie'';

    WHEN in_meldnr = '0115' THEN
        RETURN '`Exemplaar is geblokkeerd [{0}]'';

    WHEN in_meldnr = '0116' THEN
        RETURN '`'';

    WHEN in_meldnr = '0117' THEN
        RETURN '`Uitgeleend aan [{0}]'';

    WHEN in_meldnr = '0118' THEN
        RETURN '`Exemplaar is vermist'';

    WHEN in_meldnr = '0121' THEN
        RETURN '`Exemplaar heeft onbekende status [{0}]'';

    WHEN in_meldnr = '0122' THEN -- tbv uitlenen
        RETURN '`Collectie-exemplaar: retourdatum [{0}]'';

    WHEN in_meldnr = '0123' THEN -- tbv verlengen
        RETURN '`Collectie-exemplaar: retourdatum [{0}]'';

    WHEN in_meldnr = '0124' THEN -- tbv innemen
        RETURN '`Collectie-exemplaar: retourdatum [{0}]'';

    WHEN in_meldnr = '0125' THEN
        RETURN '`'';

    WHEN in_meldnr = '0126' THEN
        RETURN '`Exemplaar controleren op bijlage(n) [{0}]'';

    WHEN in_meldnr = '0127' THEN
        RETURN '`Materiaal is geblokkeerd voor deze lenerscategorie'';

    WHEN in_meldnr = '0128' THEN
        RETURN '`Lener is te jong'';

    WHEN in_meldnr = '0129' THEN
        RETURN '`Maximum aantal uitleningen is overschreden [nr: {0} max: {1}]'';

    WHEN in_meldnr = '0130' THEN
        RETURN '`Maximum van groep [{0}] is overschreden [nr: {1} max: {2}]'';

    WHEN in_meldnr = '0131' THEN
        RETURN '`'';

    WHEN in_meldnr = '0132' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen; beveiliging'';

    WHEN in_meldnr = '0133' THEN
        RETURN '`'';

    WHEN in_meldnr = '0134' THEN
        RETURN '`'';

    WHEN in_meldnr = '0135' THEN
        RETURN '`Titel eerder geleend op [{0}]'';

    WHEN in_meldnr = '0136' THEN
        RETURN '`'';

    WHEN in_meldnr = '0137' THEN
        RETURN '`Max. aantal verlengingen bereikt: [{0}]'';

    WHEN in_meldnr = '0138' THEN
        RETURN '`Materiaalsoort [{0}] is geblokkeerd voor uitlenen'';

    WHEN in_meldnr = '0139' THEN
        RETURN '`Exemplaar is geblokkeerd collectie-exemplaar'';

    WHEN in_meldnr = '0140' THEN
        RETURN '`Exemplaar is geblokkeerd voor verlengen'';

    WHEN in_meldnr = '0141' THEN
        RETURN '`'';

    WHEN in_meldnr = '0142' THEN
        RETURN '`'';

    WHEN in_meldnr = '0143' THEN
        RETURN '`'';

    WHEN in_meldnr = '0144' THEN
        RETURN '`'';

    WHEN in_meldnr = '0145' THEN
        RETURN '`'';

    WHEN in_meldnr = '0146' AND in_client = 'Z' THEN
        RETURN '`Artikel mag niet worden uitgeleend'';

    WHEN in_meldnr = '0146' THEN
        RETURN '`Materiaal is geblokkeerd voor uitlenen'';

    WHEN in_meldnr = '0147' THEN
        RETURN '`'';

    WHEN in_meldnr = '0148' THEN
        RETURN '`'';

    WHEN in_meldnr = '0149' THEN
        RETURN '`Exemplaar is een HIT-exemplaar'';

    WHEN in_meldnr = '0150' THEN
        RETURN '`Exemplaar moet op transport naar: {0}'';

    WHEN in_meldnr = '0151' THEN
       RETURN '`Reservering'';

    WHEN in_meldnr = '0152' THEN
        RETURN '`Was gereserveerd voor: {}; Reservering geopend'';

    WHEN in_meldnr = '0153' THEN
        RETURN '`Ontkoppeld van {0}'';

    WHEN in_meldnr = '0154' THEN
        RETURN '`Reservering (spec)'';

    WHEN in_meldnr = '0155' THEN
        RETURN '`Leenstr: {0} Tegoed: {1}-{0}={2}'';

    WHEN in_meldnr = '0156' THEN
        RETURN '`Er zullen leenstrips worden berekend'';

    WHEN in_meldnr = '0157' THEN
        RETURN '`Er zal leengeld worden berekend'';

    WHEN in_meldnr = '0158' THEN
        RETURN '`Inhoud is opgeborgen onder nummer [{0}]'';

    WHEN in_meldnr = '0159' THEN
        RETURN '`Exemplaar staat op transport voor een reservering van [{0}]'';

    WHEN in_meldnr = '0160' THEN
        RETURN '`Exemplaar is geregistreerd beschadigd [{0}]'';

    WHEN in_meldnr = '0161' THEN
        RETURN '`Exemplaar is geregistreerd beschadigd [{0}]'';

    WHEN in_meldnr = '0162' THEN
        RETURN '`Te lang uitstaande registratie [{0}]'';

    WHEN in_meldnr = '0163' THEN
        RETURN '`Afgeschreven exemplaar VERKOPEN aan deze lener voor [{0}]'';

    WHEN in_meldnr = '0164' THEN
        RETURN '`'';

    WHEN in_meldnr = '0165' THEN
        RETURN '`Er is nog een wachtende reservering voor dit exemplaar'';

    WHEN in_meldnr = '0166' THEN
        RETURN '`Gereserveerd materiaal; Retourdatum {0} '';

    WHEN in_meldnr = '0167' AND in_client = 'Z' THEN
        RETURN '`Reservering binnen'';

    WHEN in_meldnr = '0168' THEN
        RETURN '`'';

    WHEN in_meldnr = '0169' THEN
        RETURN '`'';

    WHEN in_meldnr = '0170' THEN
        RETURN '`'';

    WHEN in_meldnr = '0199' THEN
        RETURN '`De NNT-teller van deze lener is [{0}]'';

    WHEN in_meldnr = '0201' THEN
        RETURN '`Onbekend exemplaar'';

    WHEN in_meldnr = '0202' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen [{0}]'';

    WHEN in_meldnr = '0203' THEN
        RETURN '`Inname van artikel geannuleerd'';

    WHEN in_meldnr = '0204' THEN
        RETURN '`Is reeds ingenomen'';

    WHEN in_meldnr = '0205' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen; status'';

    WHEN in_meldnr = '0206' THEN
        RETURN '`Materiaal niet geschikt voor automaat'';

    WHEN in_meldnr = '0207' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen; materiaal blok'';

    WHEN in_meldnr = '0208' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen; nota'';

    WHEN in_meldnr = '0209' THEN
        RETURN '`Exemplaar is geblokkeerd [{0}]'';

    WHEN in_meldnr = '0210' THEN
        RETURN '`Exemplaar is geblokkeerd collectie-exemplaar'';

    WHEN in_meldnr = '0211' THEN
        RETURN '`Eigen exemplaar; Terugontvangen van [{0}]'';

    WHEN in_meldnr = '0212' AND in_client = 'Z' THEN
        RETURN '`Van andere bibliotheek: Ga naar balie'';

    WHEN in_meldnr = '0212' THEN
        RETURN '`Exemplaar is van vestiging [{0}]'';

    WHEN in_meldnr = '0213' THEN
        RETURN '`Er is een reservering voor dit exemplaar'';

    WHEN in_meldnr = '0238' THEN
        RETURN '`Exemplaar is geblokkeerd [{0}]'';

    WHEN in_meldnr = '0239' THEN
        RETURN '`Exemplaar is van vestiging [{0}] en geblokkeerd [{1}]'';

    WHEN in_meldnr = '0241' THEN
        RETURN '`Dit exemplaar is uitgeleend in vestiging [{0}]'';

    WHEN in_meldnr = '0242' THEN
        RETURN '`Dit exemplaar is verlengd in vestiging [{0}]'';

    WHEN in_meldnr = '0243' THEN
        RETURN '`Dit exemplaar is uitgeleend [{0}]'';

    WHEN in_meldnr = '0244' THEN
        RETURN '`Dit exemplaar is verlengd [{0}]'';

    WHEN in_meldnr = '0246' THEN
        RETURN '`Exemplaar vandaag al verlengd voor deze lener'';

    WHEN in_meldnr = '0247' THEN
        RETURN '`Exemplaar vandaag uitgeleend aan deze lener'';

    WHEN in_meldnr = '0248' THEN
        RETURN '`Exemplaar is vandaag door lener ingeleverd'';

    WHEN in_meldnr = '0249' THEN
        RETURN '`Exemplaar is uitgeleend aan deze lener'';

    WHEN in_meldnr = '0250' THEN
        RETURN '`Uitlening geannuleerd'';

    WHEN in_meldnr = '0251' THEN
        RETURN '`Verlenging geannuleerd'';

    WHEN in_meldnr = '0252' THEN
        RETURN '`Dit artikel kunt u niet zelf innemen'';

    WHEN in_meldnr = '0300' THEN
        RETURN '`Alleen artikelen van uzelf kunt u verlengen'';

    WHEN in_meldnr = '0301' AND in_client = 'Z' THEN
        RETURN '`Bedrag niet correct, niet betaald'';

    WHEN in_meldnr = '0301' AND in_client = 'Z' THEN
        RETURN '`Pas niet correct, niet betaald'';

    WHEN in_meldnr = '0302' AND in_client = 'Z' THEN
        RETURN '`Pincode niet correct, niet betaald'';

    WHEN in_meldnr = '0303' AND in_client = 'Z' THEN
        RETURN '`Bedrag {0} niet correct, niet betaald'';

    WHEN in_meldnr = '0304' AND in_client = 'Z' THEN
        RETURN '`Bedrag {0} betaald'';

    WHEN in_meldnr = '0305' AND in_client = 'Z' THEN
        RETURN '`Restant strippen: {0}'';

    WHEN in_meldnr = '0306' AND in_client = 'Z' THEN
        RETURN '`Registraties: EUR {0}'';

    WHEN in_meldnr = '0307' AND in_client = 'Z' THEN
        RETURN '`Deposito: EUR {0}'';

    WHEN in_meldnr = '0308' AND in_client = 'Z' THEN
        RETURN '`In bezit: {0}'';

    WHEN in_meldnr = '0309' AND in_client = 'Z' THEN
        RETURN '`Waarvan telaat: {0}'';

    WHEN in_meldnr = '0310' AND in_client = 'Z' THEN
        RETURN '`Onjuiste betaalwijze bij anonieme lener'';

    WHEN in_meldnr = '0311' AND in_client = 'Z' THEN
        RETURN '`Alleen betaalwijze DEPOSITO (09) is toegestaan bij geldige Bicat leners'';

    WHEN in_meldnr = '0312' AND in_client = 'Z' THEN
        RETURN '`Gebruik niet toegestaan'';

    WHEN in_meldnr = '0313' AND in_client = 'Z' THEN
        RETURN '`Geen boekcode, gebruik geweigerd'';

    WHEN in_meldnr = '0314' AND in_client = 'Z' THEN
        RETURN '`Alleen positieve bedragen worden geaccepteerd'';

    WHEN in_meldnr = '0315' AND in_client = 'Z' THEN
        RETURN '`Onjuiste boekcode [{0}], gebruik geweigerd'';

    WHEN in_meldnr = '0316' AND in_client = 'Z' THEN
        RETURN '`Rec. courant is opgebruikt, registratiepost {0} toegevoegd'';

    WHEN in_meldnr = '0317' AND in_client = 'Z' THEN
        RETURN '`Registratiepost {0} toegevoegd'';

    WHEN in_meldnr = '0318' AND in_client = 'Z' THEN
        RETURN '`{0} van uw tegoed afgeboekt'';

    WHEN in_meldnr = '0319' AND in_client = 'Z' THEN
        RETURN '`Pas niet correct, gebruik geweigerd [{0}]'';

    WHEN in_meldnr = '0320' AND in_client = 'Z' THEN
        RETURN '`Gebruik van {0} vastgelegd'';

    WHEN in_meldnr = '0321' AND in_client = 'Z' THEN
        RETURN '`Welkom {0}'';

    WHEN in_meldnr = '0322' AND in_client = 'Z' THEN
        RETURN '`Request wordt niet ondersteund'';

    WHEN in_meldnr = '0323' AND in_client = 'Z' THEN
        RETURN '`Vestiging {0} accepteert geen externe aanvragen"'';

    WHEN in_meldnr = '0324' AND in_client = 'Z' THEN
        RETURN '`Exemplaarnummer komt reeds voor'';

    WHEN in_meldnr = '0325' AND in_client = 'Z' THEN
        RETURN '`Exemplaar {0} niet gevonden'';

    WHEN in_meldnr = '0326' AND in_client = 'Z' THEN
        RETURN '`Exemplaar kan niet worden geleverd'';

    WHEN in_meldnr = '0327' AND in_client = 'Z' THEN
        RETURN '`Exemplaar en titelsleutel niet gevuld'';

    WHEN in_meldnr = '0328' AND in_client = 'Z' THEN
        RETURN '`Exemplaar kan niet worden geleverd'';

    WHEN in_meldnr = '0329' AND in_client = 'Z' THEN
        RETURN '`Reservering akkoord'';

    WHEN in_meldnr = '0330' AND in_client = 'Z' THEN
        RETURN '`Aanvraag akkoord'';

    WHEN in_meldnr = '0331' AND in_client = 'Z' THEN
        RETURN '`Saldo ontoereikend!'';

    WHEN in_meldnr = '0332' AND in_client = 'Z' THEN
        RETURN '`Bedrag/aantal of boekcode niet correct'';

    WHEN in_meldnr = '0333' AND in_client = 'Z' THEN
        RETURN '`Inname akkoord'';

    WHEN in_meldnr = '0334' AND in_client = 'Z' THEN
        RETURN '`Inname akkoord boete: {0} {1}'';

    WHEN in_meldnr = '0335' AND in_client = 'Z' THEN
        RETURN '`Boete: {0} {1}'';

    WHEN in_meldnr = '0336' AND in_client = 'Z' THEN
        RETURN '`Transportkosten: {0} {1}'';

    WHEN in_meldnr = '0337' AND in_client = 'Z' THEN
        RETURN '`Uitlening akkoord'';

    WHEN in_meldnr = '0338' AND in_client = 'Z' THEN
        RETURN '`Verlenggeld'';

    WHEN in_meldnr = '0339' AND in_client = 'Z' THEN
        RETURN '`Verlengd'';

    WHEN in_meldnr = '0340' AND in_client = 'Z' THEN
        RETURN '`Leengeld'';

    WHEN in_meldnr = '0341' AND in_client = 'Z' THEN
        RETURN '`{0}. {1} Boete'';

    WHEN in_meldnr = '0342' AND in_client = 'Z' THEN
        RETURN '`{0}. {1} Leengeld'';

    WHEN in_meldnr = '0343' AND in_client = 'Z' THEN
        RETURN '`{0} Strip(en)'';

    WHEN in_meldnr = '0344' AND in_client = 'Z' THEN
        RETURN '`{0}. {1} Res.geld'';

    WHEN in_meldnr = '0345' AND in_client = 'Z' THEN
        RETURN '`{0}. {1} Verlengkosten'';

    WHEN in_meldnr = '0346' AND in_client = 'Z' THEN
        RETURN '`Onbekende lener [{0}]; Pas is niet geldig!''; -- zoek & boek

    WHEN in_meldnr = '0347' AND in_client = 'Z' THEN
        RETURN '`******************************************'';

    WHEN in_meldnr = '0348' AND in_client = 'Z' THEN
        RETURN '`******** NOG OPHALEN BIJ DE BALIE ********'';

    WHEN in_meldnr = '0349' AND in_client = 'Z' THEN
        RETURN '`Opbergnr {0}'';

    WHEN in_meldnr = '0350' AND in_client = 'Z' THEN
        RETURN '`De contributie voor deze periode is nog niet betaald'';

    WHEN in_meldnr = '0351' AND in_client = 'Z' THEN
        RETURN '`Gaarne zo spoedig mogelijk betalen'';

    WHEN in_meldnr = '0352' AND in_client = 'Z' THEN
        RETURN '`Status exemplaar is niet correct'';

    WHEN in_meldnr = '0353' AND in_client = 'Z' THEN
        RETURN '`Inzage-uitlening kan niet worden verlengd'';

    WHEN in_meldnr = '0354' AND in_client = 'Z' THEN
        RETURN '`Exemplaar kan hier niet worden verlengd'';

    WHEN in_meldnr = '0355' AND in_client = 'Z' THEN
        RETURN '`Exemplaar MOET worden verlengd in uitleenvestiging'';

    WHEN in_meldnr = '0350' THEN
        RETURN '`"Naar" vestiging [{0}] komt niet voor'';

    WHEN in_meldnr = '0351' THEN
        RETURN '`"Van" vestiging [{0}] komt niet voor'';

    WHEN in_meldnr = '0352' THEN
        RETURN '`Lener komt reeds voor'';

    WHEN in_meldnr = '0353' THEN
        RETURN '`Pasnummer [{0}] reeds in gebruik'';

    WHEN in_meldnr = '0500' THEN
        RETURN '`Exemplaar is reeds ingenomen'';

    WHEN in_meldnr = '0501' THEN
        RETURN '`Exemplaar actueler'';

    WHEN in_meldnr = '0502' THEN
        RETURN '`Annulering verkoop'';

    WHEN in_meldnr = '0503' THEN
        RETURN '`Afgeschreven exemplaar is nog niet verkocht'';

    WHEN in_meldnr = '0504' THEN
        RETURN '`Onbekende lener bij verkocht afgeschreven exemplaar'';

    WHEN in_meldnr = '0505' THEN
        RETURN '`Annulering uitlening'';

    WHEN in_meldnr = '0506' THEN
        RETURN '`Annulering verlenging'';

    WHEN in_meldnr = '0507' THEN
        RETURN '`Exemplaar vandaag niet geleend of verlengd'';

    WHEN in_meldnr = '0508' THEN
        RETURN '`Alleen U-uitleningen kunnen worden geannuleerd'';

    WHEN in_meldnr = '0509' THEN
        RETURN '`Bijbehorende reservering niet gevonden'';

    WHEN in_meldnr = '0510' THEN
        RETURN '`Aan andere lener uitgeleend; kan niet worden ingenomen'';

    WHEN in_meldnr = '0511' THEN
        RETURN '`Ingekomen aanvraag'';

    WHEN in_meldnr = '0512' THEN
        RETURN '`Ingekomen aanvraag [{0}]; Geen reservering'';

    WHEN in_meldnr = '0513' THEN
        RETURN '`Ontvangen van: {0}'';

    WHEN in_meldnr = '0514' THEN
        RETURN '`Gereserveerd exemplaar'';

    WHEN in_meldnr = '0515' THEN
        RETURN '`Eigen exemplaar is op transport gezet naar [{0}]'';

    WHEN in_meldnr = '0516' THEN
        RETURN '`Dit exemplaar is op transport gezet naar [{0}]'';

    WHEN in_meldnr = '0517' THEN
        RETURN '`Dit exemplaar is verkocht;'';

    WHEN in_meldnr = '0518' THEN
        RETURN '`Exemplaar was verkocht; Geannuleerd!'';

    WHEN in_meldnr = '0519' THEN
        RETURN '`Exemplaar was vermist; Ingenomen!'';

    WHEN in_meldnr = '0520' THEN
        RETURN '`Terug naar eigenaar'';

    WHEN in_meldnr = '0521' THEN
        RETURN '`Afgeschreven exemplaar is verkocht aan [{0}]'';

    WHEN in_meldnr = '0522' THEN
        RETURN '`Afgeschreven exemplaar is verkocht'';

    WHEN in_meldnr = '0523' THEN
        RETURN '`Exemplaar is afgeschreven'';

    WHEN in_meldnr = '0524' THEN
        RETURN '`Dit exemplaar kan niet worden verwerkt'';

    WHEN in_meldnr = '0525' THEN
        RETURN '`Exemplaar heeft onbekende status [{0}]'';

    WHEN in_meldnr = '0526' THEN
        -- ab - 6.0.8
        -- RETURN '`Niet uitgeleend. Laatste inleverdatum: [{0}] [{1}]'';
        RETURN '`Niet uitgeleend. Laatste inleverdatum: [{0}]'';

    WHEN in_meldnr = '0527' THEN
        RETURN '`Exemplaar MOET worden ingeleverd in [{0}]'';

    WHEN in_meldnr = '0528' THEN
        RETURN '`Retourdatum overschreden'';

    WHEN in_meldnr = '0529' THEN
        RETURN '`Ingenomen van Zoek&Boek-Transport'';

    WHEN in_meldnr = '0530' THEN
        RETURN '`Dit exemplaar is op transport gezet naar vestiging [{0}]'';

    WHEN in_meldnr = '0531' THEN
        RETURN '`Nieuw exemplaar'';

    WHEN in_meldnr = '0532' THEN
        RETURN '`Hier geplaatst (Floating coll.)'';

    WHEN in_meldnr = '0533' THEN
        RETURN '`Op transport naar: {0}'';

    WHEN in_meldnr = '0534' THEN
        RETURN '`COLLECTIE-exemplaar op transport zetten naar: {0}'';

    WHEN in_meldnr = '0535' THEN
        RETURN '`Collectie: {0}'';

    WHEN in_meldnr = '0536' THEN
        RETURN '`IBL-exemplaar op transport zetten naar: {0}'';

    WHEN in_meldnr = '0537' THEN
        RETURN '`Aanvraag: {0}'';

    WHEN in_meldnr = '0538' THEN
        RETURN '`Exemplaar op transport zetten naar: {0}'';

    WHEN in_meldnr = '0539' THEN
        RETURN '`Reden: {0}'';

    WHEN in_meldnr = '0540' THEN
        RETURN '`Terug naar de eigenaar'';

    WHEN in_meldnr = '0541' THEN
        RETURN '`[Reservering]'';

    WHEN in_meldnr = '0542' THEN
        RETURN '`Aan andere lener uitgeleend; Familie-optie'';

    WHEN in_meldnr = '0543' THEN
        RETURN '`Exemplaar heeft NIET de status: TRANSPORT'';

    WHEN in_meldnr = '0544' THEN
        RETURN '`Exemplaar is ontkoppeld uit collectie [{0}]'';
        -- 6.0.8 - a3

    WHEN in_meldnr = '0545' THEN
        RETURN '` Laatste lener: {0} [{1}]'';
        -- 6.0.9 - a3 - 2010-08-05 - gastexemplaar

    WHEN in_meldnr = '0546' THEN
        RETURN '`Exemplaar versturen naar gasrtvestiging!'';

    WHEN in_meldnr = '0547' THEN
        RETURN '`NB: Gast-exemplaar moet retour worden gestuurd'';

    WHEN in_meldnr = '0548' THEN
        RETURN '`Retour naar: '';

    WHEN in_meldnr = '0550' THEN
        RETURN '`Bericht'';

    WHEN in_meldnr = '0551' THEN
        RETURN '`Ontvangen'';

    WHEN in_meldnr = '0552' THEN
        RETURN '`Open'';

    WHEN in_meldnr = '0553' THEN
        RETURN '`Aantal dagen bericht:'';

    WHEN in_meldnr = '0554' THEN
        RETURN '`Aantal dagen bericht: {0} [{1}]'';

    WHEN in_meldnr = '0555' THEN
        RETURN '`Aantal dagen op plank:'';

    WHEN in_meldnr = '0556' THEN
        RETURN '`Aantal dagen op plank: {0} [{1}]'';

    WHEN in_meldnr = '0557' THEN
        RETURN '`NB: Tijdelijk IBL-exemplaar wordt afgeschreven'';

    WHEN in_meldnr = '0558' THEN
        RETURN '`Op transport naar IBL-afdeling'';

    WHEN in_meldnr = '0559' THEN
        RETURN '`NB: Tijdelijk exemplaar wordt afgeschreven'';

    WHEN in_meldnr = '0560' THEN
        RETURN '`Exemplaar zit in collectie: {0}'';

    WHEN in_meldnr = '0561' THEN
        RETURN '`U kunt dit artikel niet zelf innemen; ga naar innamebalie'';

    WHEN in_meldnr = '0562' THEN
        RETURN '`Leendatum:'';

    WHEN in_meldnr = '0563' THEN
        RETURN '`Verlengdatum:'';

    WHEN in_meldnr = '1104' THEN
        RETURN '`Gebruikersnaam fout: Gebruikersnaam moet minimaal 1 teken A t/m Z bevatten'';

    WHEN in_meldnr = '1105' THEN
        RETURN '`Gebruikersnaam fout: Alleen tekens A/Z en 0/9 worden toegestaan'';

    WHEN in_meldnr = '1106' THEN
        RETURN '`Gebruikersnaam fout: Gebruikersnaam moet minimaal 4 tekens bevatten'';

    WHEN in_meldnr = '1107' THEN
        RETURN '`Gebruikersnaam fout: Naam reeds in gebruik'';

    WHEN in_meldnr = '1108' THEN
        RETURN '`Gebruikersnaam fout: Gebruikersnaam te lang (max 11 pos.)'';

    WHEN in_meldnr = '1110' THEN
        RETURN '`Onbekende lener'';

    WHEN in_meldnr = '1111' THEN
        RETURN '`Verlopen pas'';

    WHEN in_meldnr = '1112' THEN
        RETURN '`Pas geblokkeerd'';

    WHEN in_meldnr = '1180' THEN
        RETURN '`Nieuwe lener'';

    WHEN in_meldnr = '1181' THEN
        RETURN '`Vervallen per {0}'';

    WHEN in_meldnr = '1182' THEN
        RETURN '`Factuur aangemaakt'';

    WHEN in_meldnr = '1183' THEN
        RETURN '`Vervalt {0}'';

    WHEN in_meldnr = '1184' THEN
        RETURN '`Pas niet geldig!'';

    WHEN in_meldnr = '1189' THEN
        RETURN '`t/m {0}'';

    WHEN in_meldnr = '1190' THEN
        RETURN '`Opgezegd per {0}, reden {1}'';

    WHEN in_meldnr = '1200' THEN
        RETURN '`Leners van deze vestiging mogen hier niet reserveren'';

    WHEN in_meldnr = '1201' THEN
        RETURN '`Deze titel kan niet worden gereserveerd; (geen exemplaren)'';

    WHEN in_meldnr = '1202' THEN
        RETURN '`Deze titel kan niet worden gereserveerd'';

    WHEN in_meldnr = '1203' THEN
        RETURN '`U bent geblokkeerd voor reserveren'';

    WHEN in_meldnr = '1204' THEN
        RETURN '`Lener geblokkeerd voor reserveren'';

    WHEN in_meldnr = '1205' THEN
        RETURN '`U had deze titel al gereserveerd'';

    WHEN in_meldnr = '1206' THEN
        RETURN '`Lener heeft deze titel al [{0}] keer gereserveerd; Doorgaan?'';

    WHEN in_meldnr = '1207' THEN
        RETURN '`Dubbele reserveringen zijn niet toegestaan'';

    WHEN in_meldnr = '1208' THEN
        RETURN '`Reserveren is niet toegestaan'';

    WHEN in_meldnr = '1209' THEN
        RETURN '`Reserveren voor categorie:[{0}] is niet toegestaan; Doorgaan?'';

    WHEN in_meldnr = '1210' THEN
        RETURN '`Reserveren van materiaal:[{0}] is niet toegestaan'';

    WHEN in_meldnr = '1211' THEN
        RETURN '`Reserveren van materiaal:[{0}] voor categorie:[{1}] is niet toegestaan; Doorgaan?'';

    WHEN in_meldnr = '1212' THEN
        RETURN '`U heeft het maximale aantal toegestane reserveringen [{0}] al bereikt'';

    WHEN in_meldnr = '1213' THEN
        RETURN '`Lener heeft al maximum aantal gereserveerd; Doorgaan?'';

    WHEN in_meldnr = '1214' THEN
        RETURN '`Reserveren is niet toegestaan, jeugdblokkade. Doorgaan?'';

    WHEN in_meldnr = '1215' THEN
        RETURN '`Er zijn geen exemplaren'';

    WHEN in_meldnr = '1216' THEN
        RETURN '`Er zijn 1 of meer exemplaren binnen'';

    WHEN in_meldnr = '1217' THEN
        RETURN '`Er zijn geen exemplaren te reserveren'';

    WHEN in_meldnr = '1218' THEN
        RETURN '`Onbekende hoofdvestiging'';

    WHEN in_meldnr = '1219' THEN
        RETURN '`Reserveren is niet toegestaan, kijkwijzer'';

    WHEN in_meldnr = '1220' THEN
        RETURN '`Deze titel kan niet worden aangevraagd'';

    WHEN in_meldnr = '1221' THEN
        RETURN '`Van deze titel eerst een exemplaar kiezen'';

    WHEN in_meldnr = '1222' THEN
        RETURN '`Reservering is niet voor speciale lener'';

    WHEN in_meldnr = '1223' THEN
        RETURN '`Reservering heeft niet de juiste status (A)'';

    WHEN in_meldnr = '1224' THEN
        RETURN '`Exemplaar reservering'';

    WHEN in_meldnr = '1225' THEN
        RETURN '`C90 melding'';

    WHEN in_meldnr = '1226' THEN
        RETURN '`Thuisbezorging per post'';

    WHEN in_meldnr = '1230' THEN
        RETURN '`Geen titel geselecteerd'';

    WHEN in_meldnr = '1231' THEN
        RETURN '`Onbekende ophaalvestiging [{0}]'';

    WHEN in_meldnr = '1232' THEN
        RETURN '`Is voor u gereserveerd'';

    WHEN in_meldnr = '1233' THEN
        RETURN '`Titel is voor u aangevraagd'';

    WHEN in_meldnr = '1234' THEN
        RETURN '`Onbekende titel'';

    WHEN in_meldnr = '1235' THEN
        RETURN '`Titel is al [{0}] keer gereserveerd'';

    WHEN in_meldnr = '1239' THEN
        RETURN '`Er zijn geen leverbare IBL-exemplaren. Doorgaan?'';

    WHEN in_meldnr = '1240' THEN
        RETURN '`Er is een exemplaar binnen. Plaatsing: [{0}].'';

    WHEN in_meldnr = '1241' THEN
        RETURN '`Er is een exemplaar binnen. Plaatsing: [{0}]. Doorgaan?'';

    WHEN in_meldnr = '1242' THEN
        RETURN '`Er zijn geen exemplaren bij deze titel!'';

    WHEN in_meldnr = '1243' THEN
        RETURN '`Vestiging [{0}] heeft exemplar(en) binnen. Leveringsverzoek versturen?'';

    WHEN in_meldnr = '1244' THEN
        RETURN '`Vestiging [{0}] heeft exemplar(en) binnen. Doorgaan?'';

    WHEN in_meldnr = '1245' THEN
        RETURN '`Er zijn exemplaren binnen bij de vestigingen: [{0}]. Leveringsverzoek versturen?'';

    WHEN in_meldnr = '1246' THEN
        RETURN '`Er zijn exemplaren binnen bij de vestigingen: [{0}]. Doorgaan?'';

    WHEN in_meldnr = '1247' THEN
        RETURN '`Er zijn alleen INZAGE-exemplaren. Doorgaan?'';

    WHEN in_meldnr = '1248' THEN
        /* RETURN '`Geen exemplaren beschikbaar voor reservering in deze vestiging. Doorgaan?''; */
        RETURN '`Geen exemplaren beschikbaar voor reservering. Doorgaan?'';

    WHEN in_meldnr = '1249' THEN
        /* RETURN '`Geen exemplaren beschikbaar voor reservering in deze organisatie. Doorgaan?''; */
        RETURN '`Er zijn geen exemplaren beschikbaar om te reserveren'';

    WHEN in_meldnr = '1251' THEN
        RETURN '`Reservering geannuleerd'';

    WHEN in_meldnr = '1252' THEN
        RETURN '`Reservering NIET geannuleerd; raadpleeg informatiebalie'';

    WHEN in_meldnr = '1253' THEN
        RETURN '`Aanvraag geannuleerd'';

    WHEN in_meldnr = '1254' THEN
        RETURN '`Aanvraag NIET geannuleerd; raadpleeg informatiebalie'';

    WHEN in_meldnr = '1255' THEN
        RETURN '`Lener is afgevoerd! Doorgaan?'';

    WHEN in_meldnr = '1256' THEN
        RETURN '`{0} reserveringen opgenomen met groepsnummer {1}'';

    WHEN in_meldnr = '1257' THEN
        RETURN '`{0} reserveringen opgenomen'';

    WHEN in_meldnr = '1260' THEN
        RETURN '`Geen CDR-vestigingsnummer bekend'';

    WHEN in_meldnr = '1531' THEN
        RETURN '`Collectie [{0}] niet gevonden'';

    WHEN in_meldnr = '1532' THEN
        RETURN '`Collectie is van andere vestiging [eigenaar]'';

    WHEN in_meldnr = '1533' THEN
        RETURN '`Collectie is niet vrij volgens planning, toch uitlenen?'';

    WHEN in_meldnr = '1534' THEN
        RETURN '`Collectie [collectie] is al in gebruik! Werkelijk hier exemplaren aan toevoegen?'';

    WHEN in_meldnr = '1535' THEN
        RETURN '`Collectienummer [collectie] is al in gebruik!'';

    WHEN in_meldnr = '1536' THEN
        RETURN '`Geen materialen uitgeleend aan deze lener'';

    WHEN in_meldnr = '1537' THEN
        RETURN '`Titel NIET eerder geleend'';

    WHEN in_meldnr = '1538' THEN
        RETURN '`Titel eerder geleend op {0}'';

    WHEN in_meldnr = '1539' THEN
        RETURN '`Exemplaar reeds opgenomen in deze collectie'';

    WHEN in_meldnr = '1540' THEN
        RETURN '`Geen collectie exemplaar'';

    WHEN in_meldnr = '1541' THEN
        RETURN '`Exemplaar van andere collectie [{0}]'';

    WHEN in_meldnr = '1542' THEN
        RETURN '`Geen collectie doorgegeven'';

    WHEN in_meldnr = '1543' THEN
        RETURN '`Geen exemplaren in deze collectie'';

    WHEN in_meldnr = '1544' THEN
        RETURN '`Geen lenernummer doorgegeven'';

    WHEN in_meldnr = '1545' THEN
        RETURN '`Geen exemplaarnummer doorgegeven'';

    WHEN in_meldnr = '1546' THEN
        RETURN '`Niet toegestaan, Exemplaar is van vestiging [{0}]'';

    WHEN in_meldnr = '1547' THEN
        RETURN '`Exemplaar reeds opgenomen in andere collectie [{0}], exemplaar verkoppelen?'';

    WHEN in_meldnr = '1548' THEN
        RETURN '`Exemplaar [{0}] zit niet in een collectie'';

    WHEN in_meldnr = '1549' THEN
        RETURN '`Geen routecollecties voor deze vestiging'';

    WHEN in_meldnr = '1550' THEN
        RETURN '`Routecollectie [{0}] is niet bekend'';

    WHEN in_meldnr = '1551' THEN
        RETURN '`Collectie [{0}] is geen route'';

    WHEN in_meldnr = '1552' THEN
        RETURN '`Vestiging [{0}] komt niet voor in route [{1}]'';

    WHEN in_meldnr = '1553' THEN
        RETURN '`Vestiging [{0}] heeft volgnummer [{1}] in route [{2}]'';

    WHEN in_meldnr = '1554' THEN
        RETURN '`Collectienummer invullen'';

    WHEN in_meldnr = '1555' THEN
        RETURN '`Vestigingsnummer niet correct gevuld'';

    WHEN in_meldnr = '1556' THEN
        RETURN '`Onbekende vestiging [{0}]'';

    WHEN in_meldnr = '1557' THEN
        RETURN '`Exemplaar is van: [{0}]; Mag niet worden gemuteerd door [{1}]'';

    WHEN in_meldnr = '1558' THEN
        RETURN '`Vestigingsnummer invullen'';

    WHEN in_meldnr = '1559' THEN
        RETURN '`Alleen vestigingen met categorie: I, U of S toegestaan'';

    WHEN in_meldnr = '1560' THEN
        RETURN '`Aantal weken invullen'';

    WHEN in_meldnr = '1561' THEN
        RETURN '`Inschietgroep AA/ZZ invullen'';

Configuration notes

It is advised to hand out hard passwords to the SIP2 clients. The minimal length is 16 characters. The advise is to make us of some random string generator for this. Thi functionality will eventually be provided in the Wise Manager.

Configuration of the script takes place in /etc/bng.d/sip2https.conf. Minimal contents are (*):

$cfg = {
'CONN' => {
'WISEURL' => 'http://wiseas/bxmas',
},
'DEBUG' => 3,
};
1;

DEBUG level 4 is the minimum that is advised, as this still gives warnings and some statistics. The following options exist for modifying "failure counter" behavior:

$cfg->{'CONN'}{'MAX_TRIES_PER_IP'} with a default of 10
$cfg->{'CONN'}{'BLOCK_TIME'} with a default of '60m' (60 minutes)

(*) without a config file these defaults will be used

 

  • Was dit artikel nuttig?