Koha Test Wiki MW Canasta on Koha Portainer

Test major Koha Wiki changes or bug fixes here without fear of breaking the production wiki.

For the current Koha Wiki, visit https://wiki.koha-community.org .

Notices and Slips Library

From Koha Test Wiki MW Canasta on Koha Portainer
Jump to navigation Jump to search

Notices and Slips Library

Template (Do not edit)


foo

  • Developer: Your Name Here
  • Letter Code: foo
  • Message Transport Type: foo
  • Purpose: foo
  • Status: Complete
  • Notes: foo
  • How to test: Give a description of how to generate the notice or slip
fooo

How it looks


Current Notices and Scripts

Notification on receiving

  • Developer: Barton Chittenden
  • Letter Code: ACQ_NOTIF_ON_RECEIV
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

 The order <<aqorders.ordernumber>> (<<biblio.title>>) has been received.

Your library.

Article Request - Email - Canceled

  • Developer: Barton Chittenden
  • Letter Code: AR_CANCELED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)

Your request for an article from <<biblio.title>> (<<items.barcode>>) has been canceled for the following reason:

<<article_requests.notes>>

Article requested:
Title: <<article_requests.title>>
Author: <<article_requests.author>>
Volume: <<article_requests.volume>>
Issue: <<article_requests.issue>>
Date: <<article_requests.date>>
Pages: <<article_requests.pages>>
Chapters: <<article_requests.chapters>>
Notes: <<article_requests.patron_notes>>

Article Request - Email - Completed

  • Developer: Barton Chittenden
  • Letter Code: AR_COMPLETED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)

We are have completed your request for an article from <<biblio.title>> (<<items.barcode>>).

Article requested:
Title: <<article_requests.title>>
Author: <<article_requests.author>>
Volume: <<article_requests.volume>>
Issue: <<article_requests.issue>>
Date: <<article_requests.date>>
Pages: <<article_requests.pages>>
Chapters: <<article_requests.chapters>>
Notes: <<article_requests.patron_notes>>

You may pick your article up at <<branches.branchname>>.

Thank you!

Article Request - Email - Open

  • Developer: Barton Chittenden
  • Letter Code: AR_PENDING
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)

We have received your request for an article from <<biblio.title>> (<<items.barcode>>).

Article requested:
Title: <<article_requests.title>>
Author: <<article_requests.author>>
Volume: <<article_requests.volume>>
Issue: <<article_requests.issue>>
Date: <<article_requests.date>>
Pages: <<article_requests.pages>>
Chapters: <<article_requests.chapters>>
Notes: <<article_requests.patron_notes>>


Thank you!

Article Request - Email - Processing

  • Developer: Barton Chittenden
  • Letter Code: AR_PROCESSING
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)

We are now processing your request for an article from <<biblio.title>> (<<items.barcode>>).

Article requested:
Title: <<article_requests.title>>
Author: <<article_requests.author>>
Volume: <<article_requests.volume>>
Issue: <<article_requests.issue>>
Date: <<article_requests.date>>
Pages: <<article_requests.pages>>
Chapters: <<article_requests.chapters>>
Notes: <<article_requests.patron_notes>>

Thank you!

Article Request - Print Slip

  • Developer: Barton Chittenden
  • Letter Code: AR_SLIP
  • Message Transport Type: print
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Article Request:

<<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>)

Title: <<biblio.title>>
Barcode: <<items.barcode>>

Article requested:
Title: <<article_requests.title>>
Author: <<article_requests.author>>
Volume: <<article_requests.volume>>
Issue: <<article_requests.issue>>
Date: <<article_requests.date>>
Pages: <<article_requests.pages>>
Chapters: <<article_requests.chapters>>
Notes: <<article_requests.patron_notes>>

Item Check-in (Digest)

  • Developer: Barton Chittenden
  • Letter Code: CHECKIN
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
The following items have been checked in:
----
<<biblio.title>>
----
Thank you.

Item Check-out (Digest)

  • Developer: Barton Chittenden
  • Letter Code: CHECKOUT
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
The following items have been checked out:
----
<<biblio.title>>
----
Thank you for visiting <<branches.branchname>>.

Item Due Reminder

  • Developer: Barton Chittenden
  • Letter Code: DUE
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

The following item is now due:

<<biblio.title>>, <<biblio.author>> (<<items.barcode>>)

Item Due Reminder (Digest)

  • Developer: Barton Chittenden
  • Letter Code: DUEDGST
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
You have <<count>> items due

Hold Slip

  • Developer: Barton Chittenden
  • Letter Code: HOLD_SLIP
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<h5>Date: <<today>></h5>

<h3> Transfer to/Hold in <<branches.branchname>></h3>

<h3><<borrowers.surname>>, <<borrowers.firstname>></h3>

<ul>
    <li><<borrowers.cardnumber>></li>
    <li><<borrowers.phone>></li>
    <li> <<borrowers.address>><br />
         <<borrowers.address2>><br />
         <<borrowers.city>>  <<borrowers.zipcode>>
    </li>
    <li><<borrowers.email>></li>
</ul>
<br />
<h3>ITEM ON HOLD</h3>
<h4><<biblio.title>></h4>
<h5><<biblio.author>></h5>
<ul>
   <li><<items.barcode>></li>
   <li><<items.itemcallnumber>></li>
   <li><<reserves.waitingdate>></li>
</ul>
<p>Notes:
<pre><<reserves.reservenotes>></pre>
</p>

Issue Quick Slip

  • Developer: Barton Chittenden
  • Letter Code: ISSUEQSLIP
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<h3><<branches.branchname>></h3>
Checked out to <<borrowers.title>> <<borrowers.firstname>> <<borrowers.initials>> <<borrowers.surname>> <br />
(<<borrowers.cardnumber>>) <br />

<<today>><br />

<h4>Checked Out Today</h4>
<checkedout>
<p>
<<biblio.title>> <br />
Barcode: <<items.barcode>><br />
Date due: <<issues.date_due>><br />
</p>
</checkedout>


Issue Slip

  • Developer: Barton Chittenden
  • Letter Code: ISSUESLIP
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<h3><<branches.branchname>></h3>
Checked out to <<borrowers.title>> <<borrowers.firstname>> <<borrowers.initials>> <<borrowers.surname>> <br />
(<<borrowers.cardnumber>>) <br />

<<today>><br />

<h4>Checked Out</h4>
<checkedout>
<p>
<<biblio.title>> <br />
Barcode: <<items.barcode>><br />
Date due: <<issues.date_due>><br />
</p>
</checkedout>

<h4>Overdues</h4>
<overdue>
<p>
<<biblio.title>> <br />
Barcode: <<items.barcode>><br />
Date due: <<issues.date_due>><br />
</p>
</overdue>

<hr>

<h4 style="text-align: center; font-style:italic;">News</h4>
<news>
<div class="newsitem">
<h5 style="margin-bottom: 1px; margin-top: 1px"><b><<opac_news.title>></b></h5>
<p style="margin-bottom: 1px; margin-top: 1px"><<opac_news.new>></p>
<p class="newsfooter" style="font-size: 8pt; font-style:italic; margin-bottom: 1px; margin-top: 1px">Posted on <<opac_news.timestamp>></p>
<hr />
</div>
</news>

Overdue Notice

  • Developer: Barton Chittenden
  • Letter Code: ODUE
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

According to our current records, you have items that are overdue.Your library does not charge late fines, but please return or renew them at the branch below as soon as possible.

<<branches.branchname>>
<<branches.branchaddress1>>
<<branches.branchaddress2>> <<branches.branchaddress3>>
Phone: <<branches.branchphone>>
Fax: <<branches.branchfax>>
Email: <<branches.branchemail>>

If you have registered a password with the library, and you have a renewal available, you may renew online. If an item becomes more than 30 days overdue, you will be unable to use your library card until the item is returned.

The following item(s) is/are currently overdue:

<item>"<<biblio.title>>" by <<biblio.author>>, <<items.itemcallnumber>>, Barcode: <<items.barcode>> Fine: <<items.fine>></item>

Thank-you for your prompt attention to this matter.

<<branches.branchname>> Staff

Overdues Slip

  • Developer: Barton Chittenden
  • Letter Code: OVERDUES_SLIP
  • Message Transport Type: print
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
The following item(s) is/are currently overdue:

<item>"<<biblio.title>>" by <<biblio.author>>, <<items.itemcallnumber>>, Barcode: <<items.barcode>> Fine: <<items.fine>></item>

Advance Notice of Item Due

  • Developer: Barton Chittenden
  • Letter Code: PREDUE
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

The following item will be due soon:

<<biblio.title>>, <<biblio.author>> (<<items.barcode>>)

Advance Notice of Item Due (Digest)

  • Developer: Barton Chittenden
  • Letter Code: PREDUEDGST
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
You have <<count>> items due soon

Item Renewals

  • Developer: Barton Chittenden
  • Letter Code: RENEWAL
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
The following items have been renewed:
----
<<biblio.title>>
----
Thank you for visiting <<branches.branchname>>.

Transfer Slip

  • Developer: Barton Chittenden
  • Letter Code: TRANSFERSLIP
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<h5>Date: <<today>></h5>

<h3>Transfer to <<branches.branchname>></h3>

<h3>ITEM</h3>
<h4><<biblio.title>></h4>
<h5><<biblio.author>></h5>
<ul>
   <li><<items.barcode>></li>
   <li><<items.itemcallnumber>></li>
</ul>

Acquisition Claim

  • Developer: Barton Chittenden
  • Letter Code: ACQCLAIM
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<aqbooksellers.name>>
<<aqbooksellers.address1>>
<<aqbooksellers.address2>>
<<aqbooksellers.address3>>
<<aqbooksellers.address4>>
<<aqbooksellers.phone>>

<order>Ordernumber <<aqorders.ordernumber>> (<<biblio.title>>) (<<aqorders.quantity>> ordered) ($<<aqorders.listprice>> each) has not been received.</order>

Account Details Template - DEFAULT

  • Developer: Barton Chittenden
  • Letter Code: ACCTDETAILS
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Hello <<borrowers.title>> <<borrowers.firstname>> <<borrowers.surname>>.

Your new Koha account details are:

User:  <<borrowers.userid>>
Password: <<borrowers.password>>

If you have any problems or questions regarding your account, please contact your Koha Administrator.

Thank you,
Koha Administrator
kohaadmin@yoursite.org

Discharge

  • Developer: Barton Chittenden
  • Letter Code: DISCHARGE
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<h1>Discharge</h1>

The library <<borrowers.branchcode>> certifies that the following borrower :

    <<borrowers.firstname>> <<borrowers.surname>>
   Cardnumber : <<borrowers.cardnumber>>

returned all his documents.

Account expiration

  • Developer: Barton Chittenden
  • Letter Code: MEMBERSHIP_EXPIRY
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.title>> <<borrowers.firstname>> <<borrowers.surname>>,

Your library card will expire soon, on:

<<borrowers.dateexpiry>>

Thank you,

Librarian

<<branches.branchname>>

Opac Self-Registration Verification Email

  • Developer: Barton Chittenden
  • Letter Code: OPAC_REG_VERIFY
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Hello!

Your library account has been created. Please verify your email address by clicking this link to complete the signup process:

http://<<OPACBaseURL>>/cgi-bin/koha/opac-registration-verify.pl?token=<<borrower_modifications.verification_token>>

If you did not initiate this request, you may safely ignore this one-time message. The request will expire shortly.

Online password reset

  • Developer: Barton Chittenden
  • Letter Code: PASSWORD_RESET
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<html>
<p>This email has been sent in response to your password recovery request for the account <strong><<user>></strong>.
</p>
<p>
You can now create your new password using the following link:
<br/><a href="<<passwordreseturl>>"><<passwordreseturl>></a>
</p>
<p>This link will be valid for 2 days from this email's reception, then you must reapply if you do not change your password.</p>
<p>Thank you.</p>
</html>

Notification about an accepted share

  • Developer: Barton Chittenden
  • Letter Code: SHARE_ACCEPT
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear patron,

We want to inform you that <<borrowers.firstname>> <<borrowers.surname>> accepted your invitation to share your list <<listname>> in our library catalog.

Thank you.

Your library.

Invitation for sharing a list

  • Developer: Barton Chittenden
  • Letter Code: SHARE_INVITE
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear patron,

One of our patrons, <<borrowers.firstname>> <<borrowers.surname>>, invites you to share a list <<listname>> in our library catalog.

To access this shared list, please click on the following URL or copy-and-paste it into your browser address bar.

<<shareurl>>

In case you are not a patron in our library or do not want to accept this invitation, please ignore this mail. Note also that this invitation expires within two weeks.

Thank you.

Your library.

Acquisition order

  • Developer: Barton Chittenden
  • Letter Code: ACQORDER
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<aqbooksellers.name>>
<<aqbooksellers.address1>>
<<aqbooksellers.address2>>
<<aqbooksellers.address3>>
<<aqbooksellers.address4>>
<<aqbooksellers.phone>>

Please order for the library:

<order>Ordernumber <<aqorders.ordernumber>> (<<biblio.title>>) (quantity: <<aqorders.quantity>>) ($<<aqorders.listprice>> each).</order>

Thank you,

<<branches.branchname>>

Hold Available for Pickup

  • Developer: Barton Chittenden
  • Letter Code: HOLD
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

You have a hold available for pickup as of <<reserves.waitingdate>>:

Title: <<biblio.title>>
Author: <<biblio.author>>
Copy: <<items.copynumber>>
Location: <<branches.branchname>>
<<branches.branchaddress1>>
<<branches.branchaddress2>>
<<branches.branchaddress3>>
<<branches.branchcity>> <<branches.branchzip>>

Hold Available for Pickup

  • Developer: Barton Chittenden
  • Letter Code: HOLD
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

You have a hold available for pickup as of <<reserves.waitingdate>>:

Title: <<biblio.title>>
Author: <<biblio.author>>
Copy: <<items.copynumber>>
Location: <<branches.branchname>>
<<branches.branchaddress1>>
<<branches.branchaddress2>>
<<branches.branchaddress3>>
<<branches.branchcity>> <<branches.branchzip>>

Hold Available for Pickup (print)

  • Developer: Barton Chittenden
  • Letter Code: HOLD
  • Message Transport Type: print
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<branches.branchname>>
<<branches.branchaddress1>>
<<branches.branchaddress2>>


Change Service Requested







<<borrowers.firstname>> <<borrowers.surname>>
<<borrowers.address>>
<<borrowers.city>> <<borrowers.zipcode>>










<<borrowers.firstname>> <<borrowers.surname>> <<borrowers.cardnumber>>

You have a hold available for pickup as of <<reserves.waitingdate>>:

Title: <<biblio.title>>
Author: <<biblio.author>>
Copy: <<items.copynumber>>

Hold Placed on Item

  • Developer: Barton Chittenden
  • Letter Code: HOLDPLACED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
A hold has been placed on the following item : <<biblio.title>> (<<biblio.biblionumber>>) by the user <<borrowers.firstname>> <<borrowers.surname>> (<<borrowers.cardnumber>>).

Routing List

  • Developer: Barton Chittenden
  • Letter Code: RLIST
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
<<borrowers.firstname>> <<borrowers.surname>>,

The following issue is now available:

<<biblio.title>>, <<biblio.author>> (<<items.barcode>>)

Please pick it up at your convenience.

Suggestion accepted

  • Developer: Barton Chittenden
  • Letter Code: ACCEPTED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

You have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.

The library has reviewed your suggestion today. The item will be ordered as soon as possible. You will be notified by mail when the order is completed, and again when the item arrives at the library.

If you have any questions, please email us at <<branches.branchemail>>.

Thank you,

<<branches.branchname>>

Suggestion ordered

  • Developer: Barton Chittenden
  • Letter Code: ORDERED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

You have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.

We are pleased to inform you that the item you requested has now been ordered. It should arrive soon, at which time it will be processed for addition into the collection.

You will be notified again when the book is available.

If you have any questions, please email us at <<branches.branchemail>>

Thank you,

<<branches.branchname>>

Suggestion rejected

  • Developer: Barton Chittenden
  • Letter Code: REJECTED
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

You have suggested that the library acquire <<suggestions.title>> by <<suggestions.author>>.

The library has reviewed your request today, and has decided not to accept the suggestion at this time.

The reason given is: <<suggestions.reason>>

If you have any questions, please email us at <<branches.branchemail>>.

Thank you,

<<branches.branchname>>

Notify budget owner

  • Developer: Barton Chittenden
  • Letter Code: TO_PROCESS
  • Message Transport Type: email
  • Purpose: foo
  • Status: In process, needs rendered example
  • Notes: foo
  • How to test: foo
Dear <<borrowers.firstname>> <<borrowers.surname>>,

A new suggestion is ready to be processed: <<suggestions.title>> by <<suggestions.autho    r>>.

Thank you,

<<branches.branchname>>

Other Examples

Hold slip with barcode

  • Developer: Candice Hope, Payson City Library
  • Purpose: Include item barcode in Hold Slip
  • Letter Code: HOLDSLIP (AKA RESERVESLIP)
  • Message Transport Type: email
  • Status: Complete
  • Notes: See Using svc/barcode for notes on individual barcode types.
  • How to test: Put a title on hold, then check the item in. Click Accept and print slip.
<h5>Date: <<today>></h5>

<h3>Hold at <<branches.branchname>></h3>

<h3>ITEM ON HOLD</h3>
<h4><<biblio.title>></h4>
<h5><<biblio.author>></h5>
<img src="/cgi-bin/koha/svc/barcode?barcode=*<<items.barcode>>*&type=Code39"></img>
<ul>
   <li><<items.barcode>></li>
   <li><<items.itemcallnumber>></li>
   <li><<items.copynumber>></li>
</ul>
<p>Notes:
<pre><<reserves.reservenotes>></pre>
</p>
<br />
<br />
<br />
<h3><<borrowers.surname>>, <<borrowers.firstname>></h3>

<ul>
    <li><<borrowers.cardnumber>></li>
    <li><<borrowers.phone>></li>
</ul>
<br />
<br />
<br />

How it looks

Notices and slips using template toolkit

Documentation on using Template Toolkit in notices could be found on page Notices_with_Template_Toolkit


Hold slip with barcode

  • Developer: Kyle Hall
  • Purpose: Hold slip using template Toolkit.
  • Letter Code: Customising_Notices_and_Slips#HOLD_SLIP (AKA HOLDSLIP or RESERVESLIP)
  • Message Transport Type: email
  • Status: Complete
  • Notes: Uses [% USE Branches %]. See Koha/Template/Plugin/Branches.pm, as well as other modules in Koha/Template/Plugin/.
  • How to test: Put a title on hold, then check the item in. Click Accept and print slip.
[% USE Branches %]
<h5>Date: <<today>></h5>

<h5>Transfer to/Hold in <<branches.branchname>></h5>

<h5><<borrowers.surname>>, <<borrowers.firstname>></h5>

<ul>
    <li><<borrowers.cardnumber>></li>
    <li><strong><<borrowers.phone>></strong></li>
    <li> <<borrowers.address>><br />
         <<borrowers.address2>><br />
         <<borrowers.city >>  <<borrowers.zipcode>>
    </li>
    <li><<borrowers.email>></li>
</ul>
<br />
<h3>ITEM ON HOLD</h3>
<h5><<biblio.title>></h5>
<h5><<biblio.unititle>></h5>
<h5><<biblio.author>></h5>
<ul>
   <li><<items.barcode>></li>
<img src="/cgi-bin/koha/svc/barcode?barcode=*<<items.barcode>>*"></img>
</ul>
   <li><<items.itemcallnumber>></li>
   <li><<reserves.waitingdate>></li>
</ul>
<h5>Transferred From: [% Branches.GetName('<<items.holdingbranch>>') %]</h5>
<h5>Home Library: [% Branches.GetName('<<items.homebranch>>') %] </h5>
<p>Notes:
<pre><<reserves.reservenotes>></pre>
</p>


Hold slip using only Template Toolkit

  • Developer: Josef Moravec
  • Letter Code: HOLD_SLIP
  • Message Transport Type: email
  • Purpose: Hold slip using template Toolkit
  • Status: Complete
  • Notes: Tested on 17.11 with TSP 143 printer
  • How to test: Put a title on hold, then check the item in. Click Accept and print slip.
<p><small>Printed on: [% today | $KohaDates with_hours => 1 %]</small></p>

<h2 style="border-bottom: 1px solid black; margin-bottom: 1em;">[% branch.branchname %]</h2>
<div style="font-size: 1.2em; font-weight: bold;">[% IF ( biblio.author ) %]<i>[% biblio.author %]</i>:<br />[% END %][% biblio.title %]</div>

<ul>
   <li>Barcode: [% item.barcode %]</li>
   <li>Waiting until: <strong>[% hold.expirationdate | $KohaDates%]</strong></li>
</ul>
[% IF ( hold.reservenotes ) %]
<p style="margin-bottom: 1em;">Note:<b>[% hold.reservenotes %]</b></p>
[% END %]

<p style="font-size: 1em; font-weight: bold; margin-bottom: 0;">[% borrower.cardnumber %]</p>
<p style="font-size: 1.2em; font-weight: bold; margin-top: 0;">[% borrower.surname %][% IF ( borrower.firstname ) %], [% borrower.firstname %][% END %]</p>

Checkouts slip using only Template Toolkit (ISSUESLIP)

  • Developer: Josef Moravec
  • Letter Code: ISSUESLIP
  • Message Transport Type: email
  • Purpose: Checkouts slip using Template Toolkit
  • Status: Complete
  • Notes: Tested on 17.11 with TSP 143 printer
  • How to test: Go to circulation and print checkouts slip.
[% USE ItemTypes %]
[% BLOCK detail %]
<p style="font-size: 1.1em; border-bottom: 1px dotted black;">
[% IF checkout.item.biblio.author %]<i>[% checkout.item.biblio.author | $Remove_MARC_punctuation) %]</i>:[% END %]
<strong>[% checkout.item.biblio.title | $Remove_MARC_punctuation %]</strong>
[%- IF checkout.item.enumchron %], [% checkout.item.enumchron %][% END %]
([% ItemTypes.GetDescription(checkout.item.effective_itemtype) %])
<br />
Checked out on: [% checkout.issuedate | $KohaDates %]<br />
Due date: <b>[% checkout.date_due | $KohaDates as_due_date=1 %]</b><br />
[% branch.branchname %]
[% IF checkout.item.biblio.holds.count %]<br /><i><strong>Reserved</strong>, this checkout cannot be renewed</i>[% END %]
</p>
[% END # Block %]

<small>Printed on: [% today | $KohaDates with_hours=1 %]</small>
<img src="https://path.to.logo" style="width: 6cm" />
[% branch.branchemail %]<br />
[% branch.branchphone %]<br />
<p style="font-size: 1.2em; border-bottom: 1px solid black;">
Patron: <strong>[% IF ( borrower.firstname ) %][% borrower.firstname %] [% END %][% borrower.surname %]</strong> ([% borrower.cardnumber %]) <br />
Checkouts count: <strong>[% checkouts.count %]</strong><br />
</p>
[% FOREACH checkout IN checkouts %]
[% PROCESS detail checkout = checkout %]
[% END %]

[% IF overdues.count %]
[% FOREACH overdue IN overdues %]
[% PROCESS detail checkout = overdue %]
[% END %]
[% END # if overdues %]
  • Developer: Michael Kuhn
  • Letter Code: ISSUESLIP
  • Message Transport Type: email
  • Purpose: Checkouts slip using Template Toolkit
  • Status: Complete
  • Notes: This is another example on how to print the checkouts part of the slip with translated itemtype descriptions. Example text is in German.
  • How to test: Go to circulation, check something out and wait for the email.
[% FOREACH checkout IN checkouts %]
[%~ SET item = checkout.item %]
[%~ SET biblio = checkout.item.biblio %]
<p>[% biblio.title %] [% item.barcode %]<br />
[% SWITCH item.itype %]
[% CASE '01' %] Kinder-/Jugendbuch<br />
[% CASE '02' %] Sachbuch<br />
[% CASE '03' %] Schöne Literatur<br />
[% CASE '05' %] Cassetten<br />
[% CASE '06' %] CD<br />
[% CASE '07' %] Zeitschriften<br />
[% CASE '08' %] Präsenzmedien<br />
[% END %]
Fällig am: [% checkout.date_due  %]<br /></p>
[% END %]

Manipulating Dates in Notices using Template Toolkit

  • Developer: Kyle Hall
  • Purpose: To show how dates can be manipulated *within* notices using TT
  • Letter Code: All notices
  • Message Transport Type: All types
  • Status: Complete

For options, see https://metacpan.org/pod/distribution/Date-Manip/lib/Date/Manip/Examples.pod#PARSING-AN-AMOUNT-OF-TIME

This example takes the pickup date for a hold, subtracts one day from it, then converts it to the format MM/DD/YYYY

[%- USE date -%]
[%- manip = date.manip -%]
[%- date_prev = manip.DateCalc( hold.expirationdate, '1 day ago' ) -%]
[%- formatted_date_prev = manip.UnixDate(date_prev,"%m/%d/%Y") -%] 

Pick up hold on or before: [% formatted_date_prev %]

ACCOUNT_PAYMENT notice with Paypal payment and Authorized Values

  • Developer: Barton Chittenden
  • Letter Code: ACCOUNT_PAYMENT
  • Message Transport Type: email
  • Purpose: Illustrate how to use authorized values in template toolkit notices.
  • Status: Complete
  • How to test: Make a payment on the patron's 'Pay fines' tab.
[%- USE Price -%]
[%- USE AuthorisedValues -%]
A payment of $[% credit.amount * -1 | $Price %] via  has been applied to your account.

This payment affected the following fees:
[%- FOREACH o IN offsets %]
Description: [% o.debit.description %]
Amount paid: $[% o.amount * -1 | $Price %]
[% IF ( o.credit.note == 'PayPal' ) %] Paid with: [% o.credit.note %] [% ELSE%] Paid with: [% AuthorisedValues.GetByCode('PAYMENT_TYPE', o.credit.payment_type) %]  [% END %]
Amount remaining: $[% o.debit.amountoutstanding | $Price %]
[% END %]

How it looks

Footer for library system with different address lengths

  • Developer: Caroline Cyr La Rose, inLibro, with the help of Jonathan Druart
  • Letter Code: all
  • Message Transport Type: email
  • Purpose: HTML signature footer for a library system where some libraries use address line 2 and 3
  • Status: Complete
  • How to test: You can try using this footer in CHECKOUT and make a checkout in a library that has a long address (3 lines), and in a library that has a short address (only address line 1)
<p class="entete"><<branches.branchname>><br/>
<<branches.branchaddress1>><br/>
[% IF branch.branchaddress2 %] [% branch.branchaddress2 %]<br/> [% END %]
[% IF branch.branchaddress3 %] [% branch.branchaddress3 %]<br/> [% END %]
<<branches.branchcity>> (<<branches.branchstate>>) <<branches.branchzip>><br/>
<strong>Phone : <<branches.branchphone>><br/></strong></p>

How it looks with 3 address lines

How it looks with one address line (no gap!)

Remove hours on the due dates on the issue slip

  • Developer: Caroline Cyr La Rose, inLibro, modified from Michael Kuhn's ISSUESLIP above and with the help of Katrin Fischer and Lucas Gass
  • Letter code: ISSUESLIP
  • Message transport type: email
  • Purpose: Slight modification from the default ISSUESLIP to hide the 23:59:00 in the due dates
  • Status: Complete
  • How to test: Print the issue slip from a user file who has checkouts
[%- USE KohaDates -%]
<h3><<branches.branchname>></h3>
Checked out by <<borrowers.firstname>> <<borrowers.surname>> <br />
(<<borrowers.cardnumber>>) <br />

<<today>><br />

<h4>Borrowed today</h4>
[% FOREACH checkout IN checkouts %]
[%~ SET item = checkout.item %]
[%~ SET biblio = checkout.item.biblio %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% checkout.date_due | $KohaDates %]</p>
[% END %]

[% IF overdues.count %]
<h4>Overdues</h4>
[% FOREACH overdue IN overdues %]
[%~ SET item = overdue.item %]
[%~ SET biblio = overdue.item.biblio %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% overdue.date_due | $KohaDates %]</p>
[% END %]
[% END %]

<hr>

<h4 style="text-align: center; font-style:italic;">News</h4>
<news>
<div class="newsitem">
<h5 style="margin-bottom: 1px; margin-top: 1px"><b><<opac_news.title>></b></h5>
<p style="margin-bottom: 1px; margin-top: 1px"><<opac_news.content>></p>
<p class="newsfooter" style="font-size: 8pt; font-style:italic; margin-bottom: 1px; margin-top: 1px">Published on <<opac_news.timestamp>></p>
<hr />
</div>
</news>

Hold Slip

  • Developer: Lisette Scheer
  • Letter code: HOLD_SLIP
  • Message transport type: email
  • Purpose: Hold slip that will print a hold transfer slip if it is going to another library or will print a hold slip with the expiration date for holds where the patron has an email or SMS number or a space to stamp/write the expiration date after calling the patron.
  • Status: Complete
  • How to test: Print a hold slip for a transfer, a patron with an email and/or SMS number, and a patron with no e-mail/SMS number
[%- USE Branches -%]
[%- USE KohaDates -%]
[% IF hold.branchcode != Branches.GetLoggedInBranchcode() %]
<center> <font size="10">[% hold.branchcode %] - Hold</font></center>
 <ul>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
[% ELSIF hold.branchcode == Branches.GetLoggedInBranchcode() && borrower.smsalertnumber || borrower.email %]
  <h2 style="text-align:right">Hold till: [% hold.expirationdate | $KohaDates dateformat => 'us' | truncate (6, ' ') %]</h2>
<h2 style="text-align:left">  [% borrower.surname %],  [% borrower.firstname  %] 
</h2><br />
      <br />
      <br />
<div id="iteminfo">
<h3> ITEM ON HOLD </h3>
<ul>
<li> [% biblio.title %]  [% IF biblio.author %] // [% biblio.author %] [% END %] // [% item.itemcallnumber %] </li>
<li>[% item.barcode %]</li>
<li>Available Since: [% hold.waitingdate | $KohaDates dateformat => 'us' %]</li>
<ul>
[% IF hold.reservenotes %]
<p> Notes:: <br />
[% hold.reservenotes %]
</ul>
[% END %]
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</div>
[% ELSIF hold.branchcode == Branches.GetLoggedInBranchcode() %]
 <h2 style="text-align:right" "padding-left:25px">Hold till: _________</h2>
<h2 style="text-align:left">  [% borrower.surname  %]  [% borrower.firstname %] 
</h2><br />
      <br />
      <br />
<div id="iteminfo">
<h3> ITEM ON HOLD </h3>
<ul>
<li> [% biblio.title %]  [% IF biblio.author %] // [% biblio.author %] [% END %] // [% item.itemcallnumber %] </li>
<li>[% item.barcode %]</li>
<li>Available Since: [% hold.waitingdate | $KohaDates dateformat => 'us' %]</li>
<ul>
[% IF hold.reservenotes %]
<p> Notes:: <br />
[% hold.reservenotes %]
[% END %] </p>
</div>
<h2> Phone Call Checklist </h2>
<h3> [% borrower.firstname %] [% IF borrower.othernames %] ( [% borrower.othernames %] ) [% END %]      </h3>
[% borrower.phone %]
     <h3>Circle one:</h3>
      <p>Spoke directly with the patron.</p>
      <p>Left message with person who answered the phone.</p>
      <p>Left message on answering machine / voice mail.</p>
      <p>Please send a postcard to the patron if you cannot<br />
      contact them by other means within 24 hours of the<br />
      requested item's arrival.</p>
[% END %]

Hold Slip - Extended Options

  • Developer: Lisette Scheer
  • Letter code: HOLD_SLIP
  • Message transport type: email
  • Purpose: Hold slip that will print a hold transfer slip if it is going to another library or will print a hold slip with the expiration date for holds where the patron has an email or SMS number or a space to stamp/write the expiration date after calling the patron. This also has some custom sections for specific patrons such as technichal services holds, holds for library staff, and truncation of patron information for self-serve holds *Branchcode* etc should be replaced with the branchcode you want to use.
  • Status: Complete
  • How to test: Print a hold slip for a transfer, a patron with an email and/or SMS number, and a patron with no e-mail/SMS number
[%- USE Branches -%]
[%- USE KohaDates -%]
[% IF hold.branchcode != "*Branchcode*" %]
<center> <font size="10">[% hold.branchcode %] - Hold</font></center>
 <ul>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
[% ELSIF hold.branchcode == "*Branchcode*" && borrower.borrowernumber == "*Borrowernumber*" %]    
<h2> MENDING </h2>
<h3>Cancel this hold, change status to "Mending" then initial below:</h3>
<h3>INITIALS: ______</h3>
<h3>Sent to mending on: [% hold.waitingdate | $KohaDates dateformat => 'us' %] </h3>
<br />
<br />
<p> Notes: <br />
[% hold.reservenotes %]
<br />
></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
[% ELSIF hold.branchcode == "*Branchcode*" && borrower.borrowernumber == "*Borrowernumber*" %]
<h2> Send to Access Services Manager</h2>
<h3>INITIALS:______</h3>
<h3>Sent on: [% hold.waitingdate | $KohaDates dateformat => 'us' %] </h3>
<p> Notes: <br />
[% hold.reservenotes %]
<li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
[% ELSIF hold.branchcode == "*Branchcode*" && borrower.categorycode == "*categorycode*" %]
<h3>STAFF HOLD</h3>
 <h2 style="text-align:right">Hold till: [% hold.expirationdate | $KohaDates dateformat => 'us' | truncate (6, ' ') %]</h2>
<h2 style="text-align:left">  [% borrower.firstname %]
</h2><br />
      <br />
      <br />
<div id="iteminfo">
<h3> ITEM ON HOLD </h3>
<ul>
<li> [% biblio.title %]  [% IF biblio.author %] // [% biblio.author %] [% END %] // [% item.itemcallnumber %] </li>
<li>[% item.barcode %]</li>
<li>Available Since: [% hold.waitingdate | $KohaDates dateformat => 'us' %]</li>
<ul>
[% IF hold.reservenotes %]
<p> Notes:: <br />
[% hold.reservenotes %]
</ul>
[% END %]
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</div>
[% ELSIF hold.branchcode == "*Branchcode*" && borrower.categorycode != "*Categorycode*" && borrower.smsalertnumber || borrower.email %]
  <h2 style="text-align:right">Hold till: [% hold.expirationdate | $KohaDates dateformat => 'us' | truncate (6, ' ') %]</h2>
<h2 style="text-align:left">  [% borrower.surname | truncate (3, ',') %]  [% borrower.firstname | truncate (3, ' ') %] [% borrower.cardnumber  | remove('2185390') %]
</h2><br />
      <br />
      <br />
<div id="iteminfo">
<h3> ITEM ON HOLD </h3>
<ul>
<li> [% biblio.title %]  [% IF biblio.author %] // [% biblio.author %] [% END %] // [% item.itemcallnumber %] </li>
<li>[% item.barcode %]</li>
<li>Available Since: [% hold.waitingdate | $KohaDates dateformat => 'us' %]</li>
<ul>
[% IF hold.reservenotes %]
<p> Notes:: <br />
[% hold.reservenotes %]
</ul>
[% END %]
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</div>
[% ELSIF hold.branchcode == "*branchcode*" %]
 <h2 style="text-align:right" "padding-left:25px">Hold till: _________</h2>
<h2 style="text-align:left">  [% borrower.surname | truncate (3, ',') %]  [% borrower.firstname | truncate (3, ' ') %] [% borrower.cardnumber  | remove('2185390') %]
</h2><br />
      <br />
      <br />
<div id="iteminfo">
<h3> ITEM ON HOLD </h3>
<ul>
<li> [% biblio.title %]  [% IF biblio.author %] // [% biblio.author %] [% END %] // [% item.itemcallnumber %] </li>
<li>[% item.barcode %]</li>
<li>Available Since: [% hold.waitingdate | $KohaDates dateformat => 'us' %]</li>
<ul>
[% IF hold.reservenotes %]
<p> Notes:: <br />
[% hold.reservenotes %]
[% END %] </p>
</div>
<h2> Phone Call Checklist </h2>
<h3> [% borrower.firstname %] [% IF borrower.othernames %] ( [% borrower.othernames %] ) [% END %]      </h3>
[% borrower.phone %]
     <h3>Circle one:</h3>
      <p>Spoke directly with the patron.</p>
      <p>Left message with person who answered the phone.</p>
      <p>Left message on answering machine / voice mail.</p>
      <p>Please send a postcard to the patron if you cannot<br />
      contact them by other means within 24 hours of the<br />
      requested item's arrival.</p>
[% END %]

Hold Slip - Print patron "code"

  • Developer: Caroline Cyr La Rose, inLibro
  • Letter code: HOLD_SLIP
  • Message transport type: email
  • Purpose: A library wanted to print a client "code" composed of the 3 first letters of the last name in capital letters, followed by the cardnumber. I just put the first line here, which replaces the borrowers.surname, borrowers.firstname line on the original hold_slip
  • Status: Partial
  • How to test: Print a hold slip
<h2>[% borrower.surname.substr(0,3) FILTER upper %][% borrower.cardnumber %]</h2>



Hold Slip - Print patron messaging preference

  • Developer: Caroline Cyr La Rose, inLibro
  • Letter code: HOLD_SLIP
  • Message transport type: email
  • Purpose:
    • Bug 30076 added the possibility to print the patron's messaging preference on slips, this prints which message transport type the patron has chosen for the "Hold filled" message on the hold slip.
    • I just put the relevant lines here, you can add it anywhere in HOLD_SLIP.
    • This works with email and SMS and will print
      • "Patron's messaging preference: Email" if at least email is checked (just email or email AND SMS)
      • "Patron's messaging preference: SMS" if SMS is checked
      • "Patron's messaging preference: Patron is not notified" if neither email nor SMS is checked
  • Status: Partial
  • How to test: Print a hold slip
<p>Patron messaging preference: 

[% IF ((borrower.has_messaging_preference({ message_name => 'Hold_filled', message_transport_type => 'email' }))) == 1 %]  Email

[% ELSIF ((borrower.has_messaging_preference({ message_name => 'Hold_filled', message_transport_type => 'sms' }))) == 1 %] SMS

[% ELSE %]Patron is not notified [% END %]</p>



Add total value of items on issue slip

  • Developer: Caroline Cyr La Rose
  • Letter code: ISSUESLIP (should work on ISSUEQSLIP too but haven't tested)
  • Message transport type: email
  • Purpose: Add the value of all items at the bottom of the issue slip to raise awareness of the value of the library in the community
  • Status: Complete
  • How to test: Print an issue slip

The base is the slip #Remove hours on the due dates on the issue slip above

The parts that were added are:

[%- USE Price -%]
[% totalValue = 0 %]
[% totalValue = item.price + totalValue %]

(twice, once in Checkouts and once in Overdues)

<p>You saved [% totalValue | $Price %] by using the library today!</p>
[%- USE KohaDates -%]
[%- USE Price -%]
[% totalValue = 0 %]
<h3><<branches.branchname>></h3>
Checked out by <<borrowers.firstname>> <<borrowers.surname>> <br />
(<<borrowers.cardnumber>>) <br />

<<today>><br />

<h4>Borrowed today</h4>
[% FOREACH checkout IN checkouts %]
[%~ SET item = checkout.item %]
[%~ SET biblio = checkout.item.biblio %]
[% totalValue = item.price + totalValue %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% checkout.date_due | $KohaDates %]</p>
[% END %]

[% IF overdues.count %]
<h4>Overdues</h4>
[% FOREACH overdue IN overdues %]
[%~ SET item = overdue.item %]
[%~ SET biblio = overdue.item.biblio %]
[% totalValue = item.price + totalValue %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% overdue.date_due | $KohaDates %]</p>
[% END %]
[% END %]

<p>You saved [% totalValue | $Price %] by using the library today!</p>

<hr>

<h4 style="text-align: center; font-style:italic;">News</h4>
<news>
<div class="newsitem">
<h5 style="margin-bottom: 1px; margin-top: 1px"><b><<opac_news.title>></b></h5>
<p style="margin-bottom: 1px; margin-top: 1px"><<opac_news.content>></p>
<p class="newsfooter" style="font-size: 8pt; font-style:italic; margin-bottom: 1px; margin-top: 1px">Published on <<opac_news.timestamp>></p>
<hr />
</div>
</news>

Add total value of items borrowed to date on issue slip

  • Developer: Martin Renvoize
  • Letter code: ISSUESLIP (should work on ISSUEQSLIP too but haven't tested)
  • Message transport type: email
  • Purpose: Aditionally add the value of historically loaned items at the bottom of the issue slip to raise awareness of the value of the library in the community
  • Status: Complete
  • How to test: Print an issue slip (For user

with loan history)

The base is the slip #Add total value of items borrowed on issue slip above

The parts that were added are:

[%- FOREACH old_checkout IN borrowers.old_checkouts -%][%- totalValue = old_checkout.item.price + totalValue -%][%- END -%]

<p>You have saved [% totalValue | $Price %] by using the library!</p>
[%- USE KohaDates -%]
[%- USE Price -%]
[% totalValue = 0 %]
<h3><<branches.branchname>></h3>
Checked out by <<borrowers.firstname>> <<borrowers.surname>> <br />
(<<borrowers.cardnumber>>) <br />

<<today>><br />

<h4>Borrowed today</h4>
[% FOREACH checkout IN checkouts %]
[%~ SET item = checkout.item %]
[%~ SET biblio = checkout.item.biblio %]
[% totalValue = item.price + totalValue %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% checkout.date_due | $KohaDates %]</p>
[% END %]

[% IF overdues.count %]
<h4>Overdues</h4>
[% FOREACH overdue IN overdues %]
[%~ SET item = overdue.item %]
[%~ SET biblio = overdue.item.biblio %]
[% totalValue = item.price + totalValue %]
<p>[% biblio.title %]<br />
Call number: [% item.itemcallnumber %]<br />
Due date: [% overdue.date_due | $KohaDates %]</p>
[% END %]
[% END %]

<p>You saved [% totalValue | $Price %] by using the library today!</p>

[%- FOREACH old_checkout IN borrowers.old_checkouts -%]
[% totalValue = old_checkout.item.price + totalValue %]
[%- END -%]
<p>You have saved [% totalValue | $Price %] by using the library!</p>

<hr>

<h4 style="text-align: center; font-style:italic;">News</h4>
<news>
<div class="newsitem">
<h5 style="margin-bottom: 1px; margin-top: 1px"><b><<opac_news.title>></b></h5>
<p style="margin-bottom: 1px; margin-top: 1px"><<opac_news.content>></p>
<p class="newsfooter" style="font-size: 8pt; font-style:italic; margin-bottom: 1px; margin-top: 1px">Published on <<opac_news.timestamp>></p>
<hr />
</div>
</news>

Account payment

  • Developer: Martin Renvoize
  • Letter Code: ACCOUNT_CREDIT
  • Message Transport Type: print
  • Purpose: A receipt to be printed when a patron credits their library account
  • Status: Complete
  • Notes: Bug 26734 updated the previous notice to use modern best practice whilst also introducing the 'tendered' and 'change' variables
  • How to test: Click Print next to a patron's payment on their account
[% USE Price %]
[% PROCESS 'accounts.inc' %]
<table>
[% IF ( LibraryName ) %]
 <tr>
    <th colspan="4" class="centerednames">
        <h3>[% LibraryName | html %]</h3>
    </th>
 </tr>
[% END %]
 <tr>
    <th colspan="4" class="centerednames">
        <h2><u>Fee receipt</u></h2>
    </th>
 </tr>
 <tr>
    <th colspan="4" class="centerednames">
        <h2>[% Branches.GetName( credit.patron.branchcode ) | html %]</h2>
    </th>
 </tr>
 <tr>
    <th colspan="4">
        Received with thanks from  [% credit.patron.firstname | html %] [% credit.patron.surname | html %] <br />
        Card number: [% credit.patron.cardnumber | html %]<br />
    </th>
 </tr>
  <tr>
    <th>Date</th>
    <th>Description of charges</th>
    <th>Note</th>
    <th>Amount</th>
 </tr>

 <tr class="highlight">
    <td>[% credit.date | $KohaDates %]</td>
    <td>
      [% PROCESS account_type_description account=credit %]
      [%- IF credit.description %], [% credit.description | html %][% END %]
    </td>
    <td>[% credit.note | html %]</td>
    <td class="credit">[% credit.amount | $Price %]</td>
 </tr>

[% IF ( tendered ) %]
  <tr>
    <td colspan="3">Amount tendered: </td>
    <td>[% tendered | $Price %]</td>
  </tr>
  <tr>
    <td colspan="3">Change given: </td>
    <td>[% change | $Price %]</td>
  </tr>
[% END %]

<tfoot>
  <tr>
    <td colspan="3">Total outstanding dues as on date: </td>
    [% IF ( credit.patron.account.balance >= 0 ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% credit.patron.account.balance | $Price %]</td>
  </tr>
</tfoot>
</table>

Account fee

  • Developer: Martin Renvoize
  • Letter Code: ACCOUNT_DEBIT
  • Message Transport Type: print
  • Purpose: A receipt to be printed when a patron credits their library account
  • Status: Complete
  • Notes: Bug 26734 updated the previous notice to use modern best practice
  • How to test: Click Print next to a patron's fee on their account
[% USE Price %]
 [% PROCESS 'accounts.inc' %]
 <table>
   [% IF ( LibraryName ) %]
     <tr>
       <th colspan="5" class="centerednames">
         <h3>[% LibraryName | html %]</h3>
       </th>
     </tr>
   [% END %]
 
   <tr>
     <th colspan="5" class="centerednames">
       <h2><u>INVOICE</u></h2>
     </th>
   </tr>
   <tr>
     <th colspan="5" class="centerednames">
       <h2>[% Branches.GetName( debit.patron.branchcode ) | html %]</h2>
     </th>
   </tr>
   <tr>
     <th colspan="5" >
       Bill to: [% debit.patron.firstname | html %] [% debit.patron.surname | html %] <br />
       Card number: [% debit.patron.cardnumber | html %]<br />
     </th>
   </tr>
   <tr>
     <th>Date</th>
     <th>Description of charges</th>
     <th>Note</th>
     <th style="text-align:right;">Amount</th>
     <th style="text-align:right;">Amount outstanding</th>
   </tr>
 
   <tr class="highlight">
     <td>[% debit.date | $KohaDates%]</td>
     <td>
       [% PROCESS account_type_description account=debit %]
       [%- IF debit.description %], [% debit.description | html %][% END %]
     </td>
     <td>[% debit.note | html %]</td>
     <td class="debit">[% debit.amount | $Price %]</td>
     <td class="debit">[% debit.amountoutstanding | $Price %]</td>
   </tr>
 
   <tfoot>
     <tr>
       <td colspan="4">Total outstanding dues as on date: </td>
       [% IF ( debit.patron.account.balance <= 0 ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% debit.patron.account.balance | $Price %]</td>
     </tr>
   </tfoot>
 </table>"

Account payment with timestamp

  • Developer: Aleisha Amohia
  • Letter Code: ACCOUNT_CREDIT
  • Message Transport Type: print
  • Purpose: A receipt to be printed when a patron credits their library account
  • Status: Complete
  • Notes: Bug 16486 adds the timestamp to this existing notice
  • How to test: Click Print next to a patron's payment on their account
<table>
[% IF ( LibraryName ) %]
 <tr>
    <th colspan="5" class="centerednames">
        <h3>[% LibraryName | html %]</h3>
    </th>
 </tr>
[% END %]
 <tr>
    <th colspan="5" class="centerednames">
        <h2><u>Fee receipt</u></h2>
    </th>
 </tr>
 <tr>
    <th colspan="5" class="centerednames">
        <h2>[% Branches.GetName( patron.branchcode ) | html %]</h2>
    </th>
 </tr>
 <tr>
    <th colspan="5">
        Received with thanks from  [% patron.firstname | html %] [% patron.surname | html %] <br />
        Card number: [% patron.cardnumber | html %]<br />
    </th>
 </tr>
  <tr>
    <th>Created</th>
    <th>Updated</th>
    <th>Description of charges</th>
    <th>Note</th>
    <th>Amount</th>
 </tr>
  [% FOREACH account IN accounts %]
    <tr class="highlight">
      <td>[% account.date | $KohaDates %]</td>
      <td>[% account.timestamp | $KohaDates with_hours = 1 %]</td>
      <td>
        [% PROCESS account_type_description account=account %]
        [%- IF account.description %], [% account.description | html %][% END %]
      </td>
      <td>[% account.note | html %]</td>
      [% IF ( account.amountcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% account.amount | $Price %]</td>
    </tr>
  [% END %]
<tfoot>
  <tr>
    <td colspan="4">Total outstanding dues as on date: </td>
    [% IF ( totalcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% total | $Price %]</td>
  </tr>
</tfoot>
</table>

Account fee with timestamp

  • Developer: Aleisha Amohia
  • Letter Code: ACCOUNT_DEBIT
  • Message Transport Type: print
  • Purpose: An invoice for the patron
  • Status: Complete
  • Notes: Bug 16486 adds the timestamp to this existing notice
  • How to test: Click Print next to a patron's invoice on their account
<table>
  [% IF ( LibraryName ) %]
    <tr>
      <th colspan="6" class="centerednames">
        <h3>[% LibraryName | html %]</h3>
      </th>
    </tr>
  [% END %]
  <tr>
    <th colspan="6" class="centerednames">
      <h2><u>INVOICE</u></h2>
    </th>
  </tr>
  <tr>
    <th colspan="6" class="centerednames">
      <h2>[% Branches.GetName( patron.branchcode ) | html %]</h2>
    </th>
  </tr>
  <tr>
    <th colspan="6" >
      Bill to: [% patron.firstname | html %] [% patron.surname | html %] <br />
      Card number: [% patron.cardnumber | html %]<br />
    </th>
  </tr>
  <tr>
    <th>Created</th>
    <th>Updated</th>
    <th>Description of charges</th>
    <th>Note</th>
    <th style="text-align:right;">Amount</th>
    <th style="text-align:right;">Amount outstanding</th>
  </tr>
  [% FOREACH account IN accounts %]
    <tr class="highlight">
      <td>[% account.date | $KohaDates%]</td>
      <td>[% account.timestamp | $KohaDates with_hours = 1 %]</td>
      <td>
        [% PROCESS account_type_description account=account %]
        [%- IF account.description %], [% account.description | html %][% END %]
      </td>
      <td>[% account.note | html %]</td>
      [% IF ( account.amountcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% account.amount | $Price %]</td>
      [% IF ( account.amountoutstandingcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% account.amountoutstanding | $Price %]</td>
    </tr>
  [% END %]
  <tfoot>
    <tr>
      <td colspan="5">Total outstanding dues as on date: </td>
      [% IF ( totalcredit ) %]<td class="credit">[% ELSE %]<td class="debit">[% END %][% total | $Price %]</td>
    </tr>
  </tfoot>
</table>

Overdue notice with total due

  • Developer: Caroline Cyr La Rose, inLibro
  • Letter Code: ODUE
  • Message Transport Type: tested with print, but possibly works with email also
  • Purpose: Last overdue notice where the patron is informed they will have to pay the replacement cost + administration fees
  • Status: Complete
  • Notes:
    • Based on "Add total value of items on issue slip" from above
    • In this case, the administration fees for long overdue/lost items is 2$ by item, regardless of itemtype
    • The overdue notice is formatted with tables to align the patron address with an envelope with a window, sorry if the html is confusing
    • Example is in French
  • How to test: Create an overdue more than the overdue trigger by making a checkout with a due date in the past; run overdue_notices.pl

Example of printed notice

Since there is a lot of HTML in my example, here are the important parts

This is added at the top of the notice, it says we are using the Price and KohaDates formats and also resets the totalValue and adminFee to 0

[%- USE Price -%]
[%- USE KohaDates -%]
[% totalValue = 0 %]
[% adminFee = 0 %]

This is added in the FOR EACH overdue loop; each item in the notice adds its replacement price to the totalValue and 2 to adminFee

[% totalValue = item.replacementprice + totalValue %]
[% adminFee = adminFee + 2 %]

Total of all the replacement prices

[% totalValue | $Price %]

Total of all the administration fees

[% adminFee | $Price %]

Total of all the replacement prices + admin fees

[% totalValue + adminFee| $Price %]


[%- USE Price -%]
[%- USE KohaDates -%]
[% totalValue = 0 %]
[% adminFee = 0 %]
<img style="max-width:250px;" src="link to image" alt="Logo">

    <table style="width:100%;">
       <tr>
           <td width="45%"></td>
           <td width="35%" align="right"><b>DERNIER AVIS DE RETARD</b></td>
           <td></td>
       </tr>
       <tr>
           <td width="45%"></td>
           <td width="35%" align="right">Date :</td>
           <td><<today>></td>
       </tr>
       <tr>
           <td width="45%"><<borrowers.firstname>> <<borrowers.surname>></td>
           <td width="35%" align="right"></td>
           <td></td>
       </tr>
       <tr>
           <td width="45%"><<borrowers.streetnumber>> <<borrowers.address>><<borrowers.address2>></td>
           <td width="35%" align="right">Numéro de carte :</td>
           <td><<borrowers.cardnumber>></td>
       </tr>
       <tr>
           <td width="45%"><<borrowers.city>> <<borrowers.state>></td>
           <td width="35%" align="right">Téléphone :</td>
           <td><<borrowers.phone>></td>
       </tr>
       <tr>
           <td width="45%"><<borrowers.zipcode>></td>
           <td width="35%" align="right"></td>
           <td></td>
       </tr>
       <tr>
           <td width="45%"></td>
           <td width="35%" align="right"></td>
           <td></td>
       </tr>
    </table>
<p>Bonjour <<borrowers.surname>> <<borrowers.firstname>>,</p>

<p>Malgré nos avis, les documents suivants n'ont pas été rapportés à la bibliothèque. </p>
[% FOREACH overdue IN overdues %]
[%~ SET item = overdue.item %]
[%~ SET biblio = overdue.item.biblio %]
<p>
Titre : <strong>[% biblio.title %]</strong><br/>
Auteur : [% biblio.author %]<br/>
Cote : [% item.itemcallnumber %]<br/>
Code-barres : [% item.barcode %]<br/>
Date d'échéance : [% overdue.date_due | $KohaDates %]<br/>
Coût de remplacement : [% item.replacementprice | $Price %] $<p>
[% totalValue = item.replacementprice + totalValue %]
[% adminFee = adminFee + 2 %]
[% END %]

<p>Nous sommes dans l'obligation de vous facturer le prix de remplacement du ou des documents, plus des frais de traitement de 2 $ par document.</p>

<p>Coût de remplacement des documents : [% totalValue | $Price %] $<br/>

Frais d'administration (2$ par document) : [% adminFee | $Price %] $<br/>

Total : [% totalValue + adminFee| $Price %] $<br/>

<p>Toute facture non acquittée fait perdre à l'abonné le privilège d'emprunter tout document. Si vous éprouvez des difficultés, veuillez communiquer avec nous pour prendre un arrangement.
</p>

<p><<branches.branchname>><br/>
<<branches.branchaddress1>><br/>
<<branches.branchcity>> <<branches.branchstate>> <<branches.branchzip>><br/>
Tél : <<branches.branchphone>><br/>
Courriel : <<branches.branchemail>></p>