PINES Custom Receipt Templates - Updated for 3.10 rel_3_10_pines_custom_receipt_templates
authorTerran McCanna <tmccanna@georgialibraries.org>
Fri, 18 Nov 2022 16:17:49 +0000 (11:17 -0500)
committerTerran McCanna <tmccanna@georgialibraries.org>
Fri, 18 Nov 2022 16:29:49 +0000 (11:29 -0500)
Signed-off-by: Terran McCanna <tmccanna@georgialibraries.org>
21 files changed:
Open-ILS/src/templates/staff/share/print_templates/t_bill_payment.tt2
Open-ILS/src/templates/staff/share/print_templates/t_bills_current.tt2
Open-ILS/src/templates/staff/share/print_templates/t_bills_historical.tt2
Open-ILS/src/templates/staff/share/print_templates/t_checkin.tt2
Open-ILS/src/templates/staff/share/print_templates/t_checkout.tt2
Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_list.tt2
Open-ILS/src/templates/staff/share/print_templates/t_hold_shelf_slip.tt2
Open-ILS/src/templates/staff/share/print_templates/t_hold_transit_slip.tt2
Open-ILS/src/templates/staff/share/print_templates/t_holds_for_bib.tt2
Open-ILS/src/templates/staff/share/print_templates/t_holds_for_patron.tt2
Open-ILS/src/templates/staff/share/print_templates/t_item_label.tt2
Open-ILS/src/templates/staff/share/print_templates/t_items_out.tt2
Open-ILS/src/templates/staff/share/print_templates/t_offline_checkin.tt2
Open-ILS/src/templates/staff/share/print_templates/t_offline_checkout.tt2
Open-ILS/src/templates/staff/share/print_templates/t_offline_in_house_use.tt2
Open-ILS/src/templates/staff/share/print_templates/t_offline_renew.tt2
Open-ILS/src/templates/staff/share/print_templates/t_patron_data.tt2
Open-ILS/src/templates/staff/share/print_templates/t_renew.tt2
Open-ILS/src/templates/staff/share/print_templates/t_transit_list.tt2
Open-ILS/src/templates/staff/share/print_templates/t_transit_slip.tt2

index 1020066..ca4fc6e 100644 (file)
@@ -1,46 +1,21 @@
-<!--
-Template for bill payment receipts. Data specific to this template
-includes:
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Payment Receipt</h3>
 
-* patron - has several fields from the patron object, including a financial summary
-
-  * first_given_name
-  * second_given_name
-  * family_name
-  * suffix
-  * pref_ versions of all name fields (e.g. pref_family_name);
-  * card.barcode
-  * expire_date
-  * alias - aka Holds Alias
-  * has_email - boolean value to show/hide elements on the receipt
-  * has_phone - same as has_email
-
-* current_location.name - name of workstation location
-* payment_type
-* payment_total - total paid
-* new_balance - balance after the payments were applied
-* payments - list of specific payments
-* approval_code - credit card approval code
-
-Individual payments within payments contain:
-* payment.xact.copy_barcode - Item barcode
-* payment.xact.title - Item title
--->
-Welcome to {{current_location.name}}!<br/>
-A receipt of your  transaction:<hr/>
-
-<table style="width:100%"> 
-  <tr> 
-    <td>[% l('Original Balance:') %]</td> 
-    <td align="right">{{previous_balance | currency}}</td> 
-  </tr> 
-  <tr> 
-    <td>[% l('Payment Method:') %]</td> 
-    <td align="right">
+<table style="width:100%">
+  <tr>
+    <td valign="top">Original Balance:</td>
+    <td align="right" valign="top">{{previous_balance | currency}}</td>
+  </tr>
+  <tr>
+    <td valign="top">Payment Method:</td>
+    <td align="right" valign="top">
       <div ng-switch="payment_type">
         <div ng-switch-when="cash_payment">[% l('Cash') %]</div>
         <div ng-switch-when="check_payment">[% l('Check') %]</div>
-        <div ng-switch-when="credit_card_payment">[% l('Credit Card') %]</div>
+       <div ng-switch-when="credit_card_payment">[% l('Credit Card') %]<br/>
+           [% l('Approval Code') %]: {{approval_code}}</div>
         <div ng-switch-when="debit_card_payment">[% l('Debit Card') %]</div>
         <div ng-switch-when="credit_payment">[% l('Patron Credit') %]</div>
         <div ng-switch-when="work_payment">[% l('Work') %]</div>
@@ -48,51 +23,49 @@ A receipt of your  transaction:<hr/>
         <div ng-switch-when="goods_payment">[% l('Goods') %]</div>
       </div>
     </td>
-  </tr> 
-  <tr> 
-    <td>[% l('Payment Received:') %]</td> 
-    <td align="right">{{payment_total | currency}}</td> 
-  </tr> 
-  <tr> 
-    <td>[% l('Payment Applied:') %]</td> 
-    <td align="right">{{payment_applied | currency}}</td> 
-  </tr> 
-  <tr> 
-    <td>[% l('Billings Voided:') %]</td> 
-    <td align="right">{{amount_voided | currency}}</td> 
-  </tr> 
-  <tr> 
-    <td>[% l('Change Given:') %]</td> 
-    <td align="right">{{change_given | currency}}</td> 
-  </tr> 
-  <tr> 
-    <td>[% l('New Balance:') %]</td> 
-    <td align="right">{{new_balance | currency}}</td> 
-  </tr> 
-</table> 
+  </tr>
+  <tr>
+    <td valign="top">Amount Paid:</td>
+    <td align="right" valign="top">{{payment_applied | currency}}</td>
+  </tr>
+  <tr>
+    <td valign="top">Billings Voided:</td>
+    <td align="right" valign="top">{{amount_voided | currency}}</td>
+  </tr>
+  <tr>
+    <td valign="top">New Balance:</td>
+    <td align="right" valign="top">{{new_balance | currency}}</td>
+  </tr>
+</table>
+<div ng-if="payment_note"><br/><b><i>Note: {{payment_note}}</i></b></div>
 
-<p>[% l('Note: [_1]', '{{payment_note}}') %]</p>
+<hr/>
+<h4>Bill Details</h4>
 
-<p>
-[% l('Specific Bills') %]
-  <blockquote>
-    <div ng-repeat="payment in payments">
-      <table style="width:100%">
+<div ng-repeat="payment in payments">
+     <br/>
+      <table>
         <tr>
-          <td>[% l('Bill # [_1]', '{{payment.xact.id}}') %]</td>
-          <td>{{payment.xact.summary.last_billing_type}}</td>
-          <td>[% l('Received: [_1]', '{{payment.amount | currency}}') %]</td>
+          <td valign="top">Bill #:</td>
+          <td valign="top">{{payment.xact.id}}</td>
         </tr>
         <tr>
-          <td colspan="5">
-            {{payment.xact.copy_barcode}} {{payment.xact.title}}
-          </td>
+          <td valign="top">Last Billing Type: &nbsp; </td>
+          <td valign="top">{{payment.xact.summary.last_billing_type}}</td>
+        </tr>
+        <tr>
+          <td valign="top">Received: &nbsp;</td>
+                 <td valign="top">{{payment.amount | currency}}</td>
+        </tr>
+        <tr ng-if="payment.xact.title">
+          <td valign="top">Title:</td>
+          <td valign="top">{{payment.xact.title}}</td>
+        </tr>
+        <tr ng-if="payment.xact.copy_barcode">
+          <td valign="top">Barcode:</td>
+          <td valign="top">{{payment.xact.copy_barcode}}</td>
         </tr>
       </table>
-      <br/>
     </div>
-  </blockquote>
-</p> 
 <hr/>
-<br/><br/> 
-{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}
+{{current_location.shortname}} {{today | date:'short'}}
index f3bf386..8df61ce 100644 (file)
@@ -1,93 +1,44 @@
-<!--
-Template for printing a list of current bills. Data specific
-to this template includes:
-
-* today - Today's date and time
-* current_location - the current library
-    current_location.name - Current location's name
-    current_location.shortname - Current location's shortname
-* patron - the patron who was billed, which contains:
-    patron.prefix - Prefix of the patron
-    patron.first_given_name - First given name of the patron
-    patron.second_given_name - Second given name of the patron
-    patron.family_name - Family name of the patron
-    patron.suffix - Suffix of the patron
-    patron.card - The patron's barcode number
-    patron.expire_date - The patron's expiration date
-    patron.alias - The patron's alias
-    patron.has_email - Whether or not the patron has an email address
-    patron.has_phone - Whether or not the patron has a phone number
-    pref_ versions of all name fields (e.g. pref_family_name);
-* transasctions - a list of transactions, each of which
-  contains:
-    xact.id - Bill unique id
-    xact.title - Copy title
-    xact.copy_barcode - Copy barcode
-    xact.xact_finish - Billing finish date and time
-    xact.xact_start - Billing start date and time
-    xact.summary - information about the transaction
-    xact.summary.balance_owed - Balance owed
-    xact.summary.last_billing_note - Last billing note
-    xact.summary.last_billing_type - Last billing type
-    xact.summary.last_payment_note - Last payment note
-    xact.summary.last_payment_ts - Last payment date and time
-    xact.summary.last_payment_type - Last payment type
-    xact.summary.total_owed - Total billed
-    xact.summary.total_paid - Total paid
-    xact.summary.xact_type - Billing type
-    xact.call_number - Information about the copy
-    xact.call_number.label - Copy call number
-    xact.call_number.prefix - Copy call number prefix
-    xact.call_number.suffix - Copy call number suffix
-    xact.call_number.owning_lib.name - The owning library's name
-    xact.call_number.owning_lib.shortname - The owning library's shortname
--->
-Welcome to {{current_location.name}}!<br/>
-You have the following bills:
-<hr/>
-<dl>
-  <div ng-repeat="xact in transactions">
-    <dt><b>Bill #{{xact.id}}</b></dt>
-    <dd>
-    <table>
-      <tr valign="top">
-        <td>[% l('Date:') %]</td>
-        <td>{{xact.xact_start | date:$root.egDateAndTimeFormat}}</td>
-      </tr>
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Current Bills</h3>
+<div ng-repeat="xact in transactions">
+    <br/>
+    <table> 
       <tr valign="top">
-        <td>[% l('Type') %]:</td>
-        <td>{{xact.summary.xact_type}}</td>
-      </tr>
+        <td><b>Bill ID:</b></td>
+        <td><b>{{xact.id}}</b></td>
+      </tr> 
       <tr valign="top">
-        <td>[% l('Last Billing') %]:</td>
-        <td>{{xact.summary.last_billing_type}}<br/>
-            {{xact.summary.last_billing_note}}
-        </td>
-      </tr>
+        <td>Bill Start Date: &nbsp; </td>
+        <td>{{xact.xact_start | date:'M/d/yyyy'}}</td>
+      </tr> 
+        <tr>
+          <td valign="top">Last Billing Type: &nbsp; </td>
+          <td valign="top">{{xact.summary.last_billing_type}}</td>
+        </tr>
+        <tr ng-if="xact.title">
+          <td valign="top">Title:</td>
+          <td valign="top">{{xact.title}}</td>
+        </tr>
+        <tr ng-if="xact.copy_barcode">
+          <td valign="top">Barcode:</td>
+          <td valign="top">{{xact.copy_barcode}}</td>
+        </tr>
       <tr valign="top">
-        <td>[% l('Total Billed') %]:</td>
+        <td>Total Billed:</td>
         <td>{{xact.summary.total_owed | currency}}</td>
-      </tr>
+      </tr> 
       <tr valign="top">
-        <td>[% l('Last Payment') %]:</td>
-        <td>{{xact.summary.last_payment_type}}<br/>
-            {{xact.summary.last_payment_note}}
-        </td>
-      </tr>
-      <tr valign="top">
-        <td>[% l('Total Paid') %]:</td>
+        <td>Total Paid:</td>
         <td>{{xact.summary.total_paid | currency}}</td>
-      </tr>
+      </tr> 
       <tr valign="top">
-        <td><b>[% l('Balance') %]:</b></td>
+        <td><b>Balance:</b></td>
         <td><b>{{xact.summary.balance_owed | currency}}</b></td>
-      </tr>
+      </tr> 
     </table>
-    </dd>
-    <br/>
   </div><!-- ng-repeat -->
-</dl>
 <hr/>
-{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}
-<br/><br/>
-
+{{current_location.shortname}} {{today | date:'short'}}
+<br/>
index b6baeff..57634f3 100644 (file)
@@ -1,94 +1,44 @@
-<!--
-Template for printing a list of past bills. Data specific
-to this template includes:
-
-* today - Today's date and time
-* current_location - the current library
-    current_location.name - Current location's name
-    current_location.shortname - Current location's shortname
-* patron - the patron who was billed, which contains:
-    patron.prefix - Prefix of the patron
-    patron.first_given_name - First given name of the patron
-    patron.second_given_name - Second given name of the patron
-    patron.family_name - Family name of the patron            
-    patron.suffix - Suffix of the patron
-    patron.card - The patron's barcode number
-    patron.expire_date - The patron's expiration date
-    patron.alias - The patron's alias
-    patron.has_email - Whether or not the patron has an email address
-    patron.has_phone - Whether or not the patron has a phone number
-    pref_ versions of all name fields (e.g. pref_family_name);
-* transasctions - a list of transactions, each of which contains:
-    xact.id - Bill unique id
-    xact.title - Copy title
-    xact.copy_barcode - Copy barcode
-    xact.xact_finish - Billing finish date and time
-    xact.xact_start - Billing start date and time
-    xact.summary - information about the transaction
-      xact.summary.balance_owed - Balance owed
-      xact.summary.last_billing_note - Last billing note
-      xact.summary.last_billing_type - Last billing type
-      xact.summary.last_payment_note - Last payment note
-      xact.summary.last_payment_ts - Last payment date and time 
-      xact.summary.last_payment_type - Last payment type
-      xact.summary.total_owed - Total billed 
-      xact.summary.total_paid - Total paid
-      xact.summary.xact_type - Billing type 
-    xact.call_number - Information about the copy
-      xact.call_number.label - Copy call number
-      xact.call_number.prefix - Copy call number prefix
-      xact.call_number.suffix - Copy call number suffix
-      xact.call_number.owning_lib.name - The owning library's name
-      xact.call_number.owning_lib.shortname - The owning library's shortname
-
--->
-[% l('Welcome to [_1]', '{{current_location.name}}') %]!<br/>
-[% l('You had the following bills:') %]
-<hr/>
-<dl>
-  <div ng-repeat="xact in transactions">
-    <dt><b>[% l('Bill #') %]{{xact.id}}</b></dt>
-    <dd>
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Bill History</h3>
+<div ng-repeat="xact in transactions">
+    <br/>
     <table> 
-      <tr valign="top">
-        <td>[% l('Billing Date:') %]</td>
-        <td>{{xact.xact_start | date:$root.egDateAndTimeFormat}}</td>
-      </tr> 
-      <tr valign="top">
-        <td>[% l('Type') %]:</td>
-        <td>{{xact.summary.xact_type}}</td>
+      <tr>
+        <td valign="top"><b>Bill ID:</b></td>
+        <td valign="top"><b>{{xact.id}}</b></td>
       </tr> 
-      <tr valign="top">
-        <td>[% l('Last Billing') %]:</td>
-        <td>{{xact.summary.last_billing_type}}<br/>
-            {{xact.summary.last_billing_note}}
-        </td>
+      <tr>
+        <td valign="top">Bill Start Date: &nbsp; </td>
+        <td valign="top">{{xact.xact_start | date:'M/d/yyyy'}}</td>
       </tr> 
-      <tr valign="top">
-        <td>[% l('Total Billed') %]:</td>
-        <td>{{xact.summary.total_owed | currency}}</td>
+        <tr>
+          <td valign="top">Last Billing Type: &nbsp; </td>
+          <td valign="top">{{xact.summary.last_billing_type}}</td>
+        </tr>
+        <tr ng-if="xact.title">
+          <td valign="top">Title:</td>
+          <td valign="top">{{xact.title}}</td>
+        </tr>
+        <tr ng-if="xact.copy_barcode">
+          <td valign="top">Barcode:</td>
+          <td valign="top">{{xact.copy_barcode}}</td>
+        </tr>
+      <tr>
+        <td valign="top">Total Billed:</td>
+        <td valign="top">{{xact.summary.total_owed | currency}}</td>
       </tr> 
-      <tr valign="top">
-        <td>[% l('Last Payment') %]:</td>
-        <td>{{xact.summary.last_payment_type}}<br/>
-            {{xact.summary.last_payment_note}}<br/>
-            {{xact.summary.last_payment_ts | date:$root.egDateAndTimeFormat}}
-        </td>
+      <tr>
+        <td valign="top">Total Paid:</td>
+        <td valign="top">{{xact.summary.total_paid | currency}}</td>
       </tr> 
-      <tr valign="top">
-        <td>[% l('Total Paid') %]:</td>
-        <td>{{xact.summary.total_paid | currency}}</td>
-      </tr> 
-      <tr valign="top">
-        <td><b>[% l('Balance') %]:</b></td>
-        <td><b>{{xact.summary.balance_owed | currency}}</b></td>
+      <tr>
+        <td valign="top"><b>Balance:</b></td>
+        <td valign="top"><b>{{xact.summary.balance_owed | currency}}</b></td>
       </tr> 
     </table>
-    </dd>
-    <br/>
   </div><!-- ng-repeat -->
-</dl>
 <hr/>
-{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}
-<br/><br/>
-
+{{current_location.shortname}} {{today | date:'short'}}
+<br/>
index ee94ae6..28e5a2b 100644 (file)
@@ -1,29 +1,16 @@
-<!--
-Template for printing a checkin receipt. Data specific to this
-template includes:
-
-* checkins - list of checkins recorded during the session. Each
-  includes:
-
-  * title
-  * copy_barcode
-  * call_number.label
-
--->
-<div>
-  <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
-  <div>[% l('You checked in the following items:') %]</div>
-  <hr/>
-  <ol>
-    <li ng-repeat="checkin in checkins">
-      <div>{{checkin.title}}</div>
-      <span>[% l('Barcode: ') %]</span>
-      <span>{{checkin.copy_barcode}}</span>
-      <span>[% l('Call Number: ') %]</span>
-      <span>{{checkin.call_number.label || "[% l("Not Cataloged") %]"}}</span>
-    </li>
-  </ol>
-  <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <br/>
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Checkin Receipt</h3>
+<div>You returned the following items:</div>
+<br/>
+<ol>
+<div ng-repeat="checkin in checkins">
+      <li><b>{{checkin.title}}</b><br/>
+      Barcode: {{checkin.copy_barcode}}<br/>
+      Call Number: {{checkin.call_number.label || "Not Cataloged"}}
+      </li>
 </div>
+</ol>
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index 94f5bed..74b5b10 100644 (file)
@@ -1,56 +1,21 @@
-<!--
-Template for printing checkout receipts; fields available include:
-
-* patron - has several fields from the patron object, including a financial summary
-
-  * patron.prefix
-  * patron.first_given_name
-  * patron.second_given_name
-  * patron.family_name
-  * patron.suffix
-  * patron.pref_prefix
-  * patron.pref_first_given_name
-  * patron.pref_second_given_name
-  * patron.pref_family_name
-  * patron.pref_suffix
-  * patron.card.barcode
-  * patron.money_summary.balance_owed - current balance
-  * patron.money_summary.total_paid - payments made on outstanding fines/fees
-  * patron.money_summary.total_owed - total of outstanding fines/fees
-  * patron.expire_date
-  * patron.alias - aka Holds Alias
-  * patron.has_email - boolean value to show/hide elements on the receipt
-  * patron.has_phone - same as has_email
-  * patron.juvenile - boolean value (t/f) to show/hide elements on the receipt
-
-* circulations - list of loans made during this session. Each
-  checkout includes:
-
-  * checkout.title
-  * checkout.author
-  * checkout.circ.due_date
-  * checkout.circ.renewal_remaining
-  * checkout.copy.barcode
-  * checkout.copy.circ_modifier.name
-  * checkout.call_number.label
-  * checkout.call_number.owning_lib.name
-  * checkout.call_number.owning_lib.shortname
-
--->
-<div>
-  <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
-  <div>[% l('You checked out the following items:') %]</div>
-  <hr/>
-  <ol>
-    <li ng-repeat="checkout in circulations">
-      <div>{{checkout.title}}</div>
-      <div>[% l('Barcode: [_1] Due: [_2]', 
-        '{{checkout.copy.barcode}}',
-        '{{checkout.circ.due_date | egDueDate:$root.egDateAndTimeFormat:checkout.circ.circ_lib:checkout.circ.duration}}') %]</div>
-    </li>
-  </ol>
-  <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <div>[% l('You were helped by [_1]', '{{staff.first_given_name}}') %]</div>
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Checkout Receipt</h3>
+<div>You checked out the following items:</div>
 <br/>
-
+<div ng-init="transactions.subtotal=0">
+<ol>
+<div ng-repeat="checkout in circulations">
+      <li ng-init="transactions.subtotal=transactions.subtotal -- checkout.copy.price"><b>{{checkout.title}}</b><br/>
+      Barcode: {{checkout.copy.barcode}}<br/>
+      Due: {{checkout.circ.due_date | date:"M/d/yyyy"}}
+    </li>
+</div>
+</ol>
+</div>
+<div style="font-weight:bold;">Total Amount Owed: {{patron_money.balance_owed | currency}}</div>
+<div style="font-weight:bold;border:1px dotted black; padding:5px;text-align:center;">You Saved<br/>
+{{transactions.subtotal | currency}}<br/>by borrowing from the library!</div>
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index 292f60c..d9dc3af 100644 (file)
@@ -1,15 +1,6 @@
-<!--
-Template for printing a table of holds to pull. Fields include:
-
-* holds - list of holds, each hold_data item includes:
-
-  * hold_data.title
-  * hold_data.author
-  * hold_data.hold.hold_type
-  * hold_data.copy.barcode
-  * hold_data.copy.location_name
-  * hold_data.volume.label - call number
--->
+<h3>Hold Pull List</h3>
+<b>Pull Date: {{today | date:'short'}}</b>
+<br/>
 <table id='pull-list-template-table'>
   <style>
     #pull-list-template-table td,
@@ -20,22 +11,22 @@ Template for printing a table of holds to pull. Fields include:
   </style>
   <thead>
     <tr>
-      <th>[% l('Type') %]</th>
-      <th>[% l('Title') %]</th>
-      <th>[% l('Author') %]</th>
-      <th>[% l('Shelf Location') %]</th>
-      <th>[% l('Call Number') %]</th>
-      <th>[% l('Barcode/Part') %]</th>
+      <th>Shelf Location</th>
+      <th>Call Number</th>
+      <th>Title</th>
+      <th>Author</th>
+      <th>Barcode/Part</th>
+      <th>Type</th>
     </tr>
   </thead>
   <tbody>
     <tr ng-repeat="hold_data in holds | orderBy : ['hold._copy_location_position', 'copy.location.name', 'volume.prefix_sortkey', 'volume.label_sortkey', 'volume.suffix_sortkey']">
-      <td>{{hold_data.hold.hold_type}}</td>
-      <td>{{hold_data.title}}</td>
-      <td>{{hold_data.author}}</td>
-      <td>{{hold_data.copy.location.name}}</td>
-      <td>{{hold_data.volume.prefix}} {{hold_data.volume.label}} {{hold_data.volume.suffix}}</td>
-      <td>{{hold_data.copy.barcode}} {{hold_data.part.label}}</td>
+      <td valign="top">{{hold_data.copy.location.name}}</td>
+      <td valign="top">{{hold_data.volume.label}}</td>
+      <td valign="top">{{hold_data.title}}</td>
+      <td valign="top">{{hold_data.author}}</td>
+      <td valign="top">{{hold_data.copy.barcode}} {{hold_data.part.label}}</td>
+      <td valign="top">{{hold_data.hold.hold_type}}</td>
     </tr>
   </tbody>
 </table>
index a948882..acec875 100644 (file)
@@ -1,60 +1,39 @@
-<!--
-Template for printing a list of items on the hold shelf. Fields include:
-
-* holds - list of hold requests, including
-
-  * call_number.label
-  * call
-  * patron_alias
-  * patron_last
-  * patron_first
-  * hold.hold_type
-  * title
-  * author
-  * volume.label
-  * copy.barcode
-  * status_string
-  * hold.shelf_expire_time
-
--->
-<table id='shelf-list-template-table'>
-  <style>
-    #pull-list-template-table td,
-    #pull-list-template-table th {
+<style>
+    #shelf-list-template-table td,
+    #shelf-list-template-table th {
       padding: 5px;
       border: 1px solid #000;
     }
-  </style>
+</style>
+<h3>Hold Shelf List</h3>
+<b>List Date: {{today | date:'short'}}</b>
+<br/>
+
+<table id='shelf-list-template-table'>
   <thead>
     <tr>
-      <th>[% l('Patron') %]</th>
-      <th>[% l('Type') %]</th>
-      <th>[% l('Title') %]</th>
-      <th>[% l('Author') %]</th>
-      <th>[% l('Call Number') %]</th>
-      <th>[% l('Barcode/Part') %]</th>
-      <th>[% l('Status') %]</th>
-      <th>[% l('Shelf Expire Time') %]</th>
+      <th>Patron</th>
+      <th>Title</th>
+      <th>Author</th>
+      <th>Call Number</th>
+      <th>Barcode/Part</th>
+         <th>Status</th>
+         <th>Shelf Expire Date</th>
     </tr>
   </thead>
   <tbody>
-    <tr ng-repeat="hold_data in holds">
-      <td>
-        <span ng-if="hold_data.patron_alias">{{hold_data.patron_alias}}</span>
+      <tr ng-repeat="hold_data in holds | orderBy : ['patron_alias','patron_last','patron_first','title']">
+      <td valign="top"><span ng-if="hold_data.patron_alias">{{hold_data.patron_alias}}</span>
         <span ng-if="!hold_data.patron_alias">
-          [% l('[_1], [_2]',
-            '{{hold_data.patron_last}}',
-            '{{hold_data.patron_first}}') %]
-        </span>
-      </td>
+          {{hold_data.patron_last}}, {{hold_data.patron_first}}
+        </span><br/>
       </td>
-      <td>{{hold_data.hold.hold_type}}</td>
-      <td>{{hold_data.title}}</td>
-      <td>{{hold_data.author}}</td>
-      <td>{{hold_data.volume.label}}</td>
-      <td>{{hold_data.copy.barcode}} {{hold_data.part.label}}</td>
-      <td>{{hold_data.status_string}}</td>
-      <td>{{hold_data.hold.shelf_expire_time | date:'yyyy-MM-dd HH:mm:ss'}}</td>
+      <td valign="top">{{hold_data.title}}</td>
+      <td valign="top">{{hold_data.author}}</td>
+      <td valign="top">{{hold_data.volume.label}}</td>
+      <td valign="top">{{hold_data.copy.barcode}} {{hold_data.part.label}}</td>
+         <td valign="top">{{hold_data.status_string}}</td>
+         <td valign="top">{{hold_data.hold.shelf_expire_time | date:'short'}}</td>
     </tr>
   </tbody>
 </table>
index 95802ae..a30294a 100644 (file)
@@ -1,65 +1,40 @@
-<!--
-Template for printing hold request slips. Fields include:
-
-* call_number.label
-* call number.prefix.label
-* call_number.suffix.label
-* hold.behind_desk
-* copy.barcode
-* title
-* patron.alias
-* patron.family_name
-* patron.first_given_name
-* patron.second_given_name
-* patron.card.barcode
-* patron.profile.name
-* hold.request_time
-* hold.phone_notify
-* hold.sms_notify
-* hold.email_notify
-* hold_notes (array of slip-printable notes)
-
--->
-<div>
-  <div ng-switch on="hold.behind_desk">
+<h1>{patron.pref_family_name ? patron.pref_family_name : patron.family_name}, 
+    {patron.pref_first_given_name ? patron.pref_first_given_name : patron.first_given_name}</h1>
+<b>Available on {{today | date:"M/d/yyyy"}}</b>
+<div ng-switch on="hold.behind_desk">
     <div ng-switch-when="t">
-      [% l('This item needs to be routed to the [_1]Private Holds Shelf[_2].',
-        '<strong>','</strong>') %]
+      <strong>Private - Hold Behind Desk</strong>
     </div>
     <div ng-switch-when="f">
-      [% l('This item needs to be routed to the [_1]Public Holds Shelf[_2].',
-        '<strong>','</strong>') %]
+      <strong>Public Holds Shelf</strong>
     </div>
-  </div>
-  <br/>
-
-  [% l('Barcode: [_1]', '{{copy.barcode}}') %]</div>
-  [% l('Title: [_1]', '{{title}}') %]</div>
-  <br/>
-  <div>[% l('Call Number: [_1] [_2] [_3]', '{{call_number.prefix}}', '{{call_number.label}}', '{{call_number.suffix}}') %]</div>
-
-  <br/>
-  <br/>
-
-  <div>[% l('Hold for patron: [_1], [_2] [_3]',
-    '{{patron.family_name}}',
-    '{{patron.first_given_name}}',
-    '{{patron.second_given_name}}') %]</div>
-  <div>[% l('Barcode: [_1]', '{{patron.card.barcode}}') %]</div>
-  <div ng-if="hold.phone_notify">[% l('Notify by phone: [_1]', '{{hold.phone_notify}}') %]</div>
-  <div ng-if="hold.sms_notify">[% l('Notify by text: [_1]', '{{hold.sms_notify}}') %]</div>
-  <div ng-if="hold.email_notify == 't'">[% l('Notify by email: [_1]', '{{patron.email}}') %]</div>
-    <div ng-if="hold_notes">
-      <ul>Notes:
-        <li ng-repeat="note in hold_notes | filter: {slip : 't'}"><strong>{{note.title}}</strong> - {{note.body}}</li>
-      </ul>
-    </div>
-  <br/>
-
-  <div>[% l('Request Date: [_1]', 
-    '{{hold.request_time | date:$root.egDateAndTimeFormat}}') %]</div>
-  <div>[% l('Slip Date: [_1]', '{{today | date:$root.egDateAndTimeFormat}}') %]</div>
-  <div>[% l('Printed by [_1] at [_2]', 
-    '{{staff.first_given_name}}', '{{current_location.shortname}}') %]</div>
-
 </div>
+<br/>
+
+<table>
+  <tr><td valign="top"><b>Title:</b></td><td valign="top"><b>{{title}}</b></td></tr>
+  <tr><td valign="top">Barcode:</td><td valign="top">{{copy.barcode}}</td></tr>
+  <tr><td valign="top">Hold Shelf Date: &nbsp;</td><td valign="top">{{hold.shelf_time | date:'M/d/yyyy'}}</td></tr>
+  <tr><td valign="top">Request Date: &nbsp;</td><td valign="top">{{hold.request_time | date:"M/d/yyyy"}}</td></tr>
+  <tr><td>&nbsp;</td><td></td></tr>
+  <tr><td valign="top"><b>Patron:</td><td valign="top"><b>{{patron.family_name}}, {{patron.first_given_name}} {{patron.second_given_name}}</b></tr>
+  <tr><td valign="top">Barcode:</td><td valign="top">{{patron.card.barcode}}</td></tr>
+  <tr><td>&nbsp;</td><td></td></tr>
+  <tr><td colspan="2" style="font-weight:bold;text-decoration:underline;">Notify By:</td></tr>
+  <tr ng-if="hold.phone_notify"><td  ng-if="hold.phone_notify" valign="top" style="font-weight:bold;">Phone: &nbsp;</td>
+        <td ng-if="hold.phone_notify" valign="top" style="font-weight:bold;">{{hold.phone_notify}}</td>
+  </tr>
+  <tr ng-if="hold.sms_notify"><td ng-if="hold.sms_notify" valign="top">Text:</td>
+        <td ng-if="hold.sms_notify" valign="top">{{hold.sms_notify}}</td>
+  </tr>
+  <tr ng-if="hold.email_notify == 't'"><td ng-if="hold.email_notify == 't'" valign="top">Email:</td>
+        <td ng-if="hold.email_notify == 't'" valign="top">{{patron.email}}</td>
+  </tr>
+</table>
+<ol>
+<li ng-repeat="note in hold_notes | filter: {slip : 't'}">
+<strong>{{note.title}}</strong><br/>
+{{note.body}}</li>
+</ol>
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index 7690302..689134c 100644 (file)
@@ -1,64 +1,15 @@
-<!--
-Template for printing hold transit slips. Fields include:
-
-* dest_location.name - name of destination library
-* dest_location.shortname
-* dest_address.street1
-* dest_address.street2
-* dest_address.city
-* dest_address.state
-* dest_address.post_code
-* dest_courier_code - from lib.courier_code library setting
-* source_location.name - name of source library
-* source_location.shortname
-* source_address.street1
-* source_address.street2
-* source_address.city
-* source_address.state
-* source_address.post_code
-* hold.behind_desk
-* copy.barcode
-* copy.status.name - Copy status
-* title
-* patron.family_name
-* patron.first_given_name
-* patron.second_given_name
-* patron.card.barcode
-* hold.request_time
-* hold.phone_notify
-* hold.sms_notify
-* hold.email_notify
-
--->
-<div>
-  <div>[% l('This item needs to be routed to [_1]', '<b>{{dest_location.shortname}}</b>') %]</div>
-  <div>{{dest_location.name}}</div>
-  <div ng-if="dest_address">
-    <div>{{dest_address.street1}}</div>
-    <div>{{dest_address.street2}}</div>
-    <div>{{dest_address.city}},
-        {{dest_address.state}}
-        {{dest_address.post_code}}</div>
-  </div>
-  <div ng-if="!dest_address">
-    [% l('We do not have a holds address for this library.') %]
-  </div>
-  <br/>
-
-  [% l('Barcode: [_1]', '{{copy.barcode}}') %]</div>
-  [% l('Title: [_1]', '{{title}}') %]</div>
-  [% l('Author: [_1]', '{{author}}') %]</div>
-
-  <br/>
-
-  <div>[% l('Hold for patron [_1]', '{{patron.card.barcode}}') %]</div>
-
-  <br/>
-
-  <div>[% l('Request Date: [_1]', 
-    '{{hold.request_time | date:$root.egDateAndTimeFormat}}') %]</div>
-  <div>[% l('Slip Date: [_1]', '{{today | date:$root.egDateAndTimeFormat}}') %]</div>
-  <div>[% l('Printed by [_1] at [_2]', 
-    '{{staff.first_given_name}}', '{{current_location.shortname}}') %]</div>
-
-</div>
+<div style="text-align:center;font-weight:bold;font-size:4em;">{{dest_courier_code}}</div>
+<div style="text-align:center;font-weight:bold;font-size:2.5em;">{{dest_location.shortname}}</div>
+<br/>
+<hr/>
+<b>This item is needed for a hold.</b>
+<div>This item needs to be routed to:<br/>
+{{dest_location.name}}</div>
+<br/>
+<table>
+<tr><td valign="top">Title:</td><td valign="top">{{title}}</td></tr>
+<tr><td valign="top">Author:</td><td valign="top">{{author}}</td></tr>
+<tr><td valign="top">Barcode: &nbsp;</td><td valign="top">{{copy.barcode}}</td></tr>
+</table>
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index df2eda5..bafb13e 100644 (file)
@@ -27,16 +27,14 @@ bib record. Fields include:
     </thead>
     <tbody>
       <tr ng-repeat="hold in holds">
-        <td>{{hold.hold.request_time | date:$root.egDateAndTimeFormat}}</td>
-        <td>{{hold.patron_barcode}}</td>
-        <td>{{hold.patron_last}}</td>
-        <td>{{hold.patron_alias}}</td>
-        <td>{{hold.copy.barcode}}</td>
+        <td valign="top">{{hold.hold.request_time | date:$root.egDateAndTimeFormat}}</td>
+        <td valign="top">{{hold.patron_barcode}}</td>
+        <td valign="top">{{hold.patron_last}}</td>
+        <td valign="top">{{hold.patron_alias}}</td>
+        <td valign="top">{{hold.copy.barcode}}</td>
       </tr>
     </tbody>
   </table>
   <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <div>[% l('Printed by [_1]', '{{staff.first_given_name}}') %]</div>
-<br/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
 
index c8a2fb2..452fc06 100644 (file)
@@ -1,26 +1,14 @@
-<!--
-Template for printing a list of hold requests for a patron. Fields include:
-
-* patron - has several fields from the patron object, but does not include the financial summary
-* holds - a list of hold request, each of which includes
-  * hold - details about the hold
-  * copy - data for an item
-  * volume - data for a call number
-  * author
-  * title
-
--->
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Current Holds</h3>
 <div>
-  <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
-  <div>[% l('You have the following title on hold:') %]</div>
-  <hr/>
+  <div>You have the following title(s) on hold:</div>
+  <br/>
   <ol>
     <li ng-repeat="hold in holds">
-      <div>{{hold.title}}</div>
+      {{hold.title}}
     </li>
   </ol>
-  <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <div>[% l('You were helped by [_1]', '{{staff.first_given_name}}') %]</div>
-<br/>
-
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index 46730ac..6fb33a1 100644 (file)
@@ -1,98 +1,42 @@
 <?xml version="1.0" encoding="Windows-1252"?>
-<!--
-Template for printing item labels (spine, pocket, etc.).
 
-Like receipt slip templates, this template uses AngularJS
-which fuses HTML and code together.  The code portion is
-mostly used to bind data for the item labels being printed
-to various HTML elements, but you can also use code to
-perform conditional logic, transform the data, etc.
-
--->
-<!--
-
-The <style> section is for holding most of our CSS, which
-is a language for controlling the appearance of HTML markup.
-
-The {{ and }} markers are similar to HTML's < and > characters,
-but are for separating AngularJS variables and code from the
-HTML itself.
-
--->
 <style>
-    /* The .spine here defines a CSS "class", which in this case, is used by our
-       left label */
-    .spine {
+    /* These CSS defaults will be used if the Label Settings fields are not filled out.
+       Do NOT edit this section. If you need to add or modify fields, scroll to the
+       bottom where you see the "{{col.c ? col.c.barcode : ''}}" line. Refer to the
+       instructions for additional details at:
+       https://pines.georgialibraries.org/dokuwiki/doku.php?id=cat:spine-label-printing */
 
-        /* this pulls from the "Item Print Label Font Family" setting, but will
-           default to 'monospace' */
+    .spine {
         font-family: {{settings['webstaff.cat.label.font.family'] || 'monospace'}};
-
-        /* this pulls from the "Item Print Label Font Size" setting, but will
-           default to 'normal' */
         font-size: {{settings['webstaff.cat.label.font.size'] || '10'}};
-
-        /* this pulls from the "Item Print Label Font Weight" setting, but will
-           default to 'normal' */
         font-weight: {{settings['webstaff.cat.label.font.weight'] || 'normal'}};
-
-        /* this pulls from the "Item Print Label - Height for Left Label"
-           setting, but will default to '1.25in' */
         height: {{settings['webstaff.cat.label.left_label.height'] || '1.25in'}};
         min-height: {{settings['webstaff.cat.label.left_label.height'] || '1.25in'}};
         max-height: {{settings['webstaff.cat.label.left_label.height'] || '1.25in'}};
-
-        /* this pulls from the "Item Print Label - Width for Left Label"
-           setting, but will default to '1in' */
         width: {{settings['webstaff.cat.label.left_label.width'] || '1in'}};
         min-width: {{settings['webstaff.cat.label.left_label.width'] || '1in'}};
         max-width: {{settings['webstaff.cat.label.left_label.width'] || '1in'}};
-
-        /* this pulls from the "Item Print Label - Left Margin for Left Label"
-           setting, but will default to '0in' */
         margin-left: {{settings['webstaff.cat.label.left_label.left_margin'] || '0in'}};
     }
 
-    /* This CSS class is used by our right label */
     .pocket {
-
-        /* this pulls from the "Item Print Label Font Family" setting, but will
-           default to 'monospace' */
         font-family: {{settings['webstaff.cat.label.font.family'] || 'monospace'}};
-
-        /* this pulls from the "Item Print Label Font Size" setting, but will
-           default to 'normal' */
         font-size: {{settings['webstaff.cat.label.font.size'] || '10'}};
-
-        /* this pulls from the "Item Print Label Font Weight" setting, but will
-           default to 'normal' */
         font-weight: {{settings['webstaff.cat.label.font.weight'] || 'normal'}};
-
-        /* this pulls from the "Item Print Label - Height for Left Label"
-           setting, but will default to '1.25in' */
         height: {{settings['webstaff.cat.label.right_label.height'] || '1.25in'}};
         min-height: {{settings['webstaff.cat.label.right_label.height'] || '1.25in'}};
         max-height: {{settings['webstaff.cat.label.right_label.height'] || '1.25in'}};
-
-        /* this pulls from the "Item Print Label - Width for Left Label"
-           setting, but will default to '2.625in' */
         width: {{settings['webstaff.cat.label.right_label.width'] || '2.625in'}};
         min-width: {{settings['webstaff.cat.label.right_label.width'] || '2.625in'}};
         max-width: {{settings['webstaff.cat.label.right_label.width'] || '2.625in'}};
-
-        /* this pulls from the "Item Print Label - Left Margin for Left Label"
-           setting, but will default to '0in' */
         margin-left: {{settings['webstaff.cat.label.right_label.left_margin'] || '0in'}};
-
     }
 
-    /* This is to help mitigate artifacts in the Preview pane which don't
-       actually print */
     .labels ::-webkit-scrollbar { 
         display: none; 
     }
 
-    /* This pulls from the "Item Print Label - Inline CSS" setting */
     {{settings['webstaff.cat.label.inline_css']||''}}
 
     .print+.print {
@@ -100,197 +44,3 @@ HTML itself.
     }
 
 </style>
-
-<!-- Here we are implementing our combined label as 2-column HTML <table>, with
-     each table containing a <pre> tag for preserving whitespace and linefeeds.
-
-     The ng-repeat attribute is from AngularJS, and in this case is looping
-     through a list of all the items that were selected when the Print Label
-     interface was invoked.  Each iteration puts item data into the variable
-     "copy", which may be referenced in the HTML by escaping it with {{ and }}
-
-     The following are available, and you may treat these similar to the
-     "macros" in earlier versions of Evergreen:
-
-                copy['active_date']
-                copy['age_protect']
-                copy['alert_message']
-                copy['barcode']
-                copy['call_number.copies']
-                copy['call_number.create_date']
-                copy['call_number.deleted']
-                copy['call_number.edit_date']
-                copy['call_number.id']
-                copy['call_number.label']
-                copy['call_number.label_class']
-                copy['call_number.label_sortkey']
-                copy['call_number.notes']
-                copy['call_number.owning_lib']
-                copy['call_number.owning_lib.id']
-                copy['call_number.owning_lib.shortname']
-                copy['call_number.owning_lib.name']
-                copy['call_number.prefix.id']
-                copy['call_number.prefix.label']
-                copy['call_number.prefix.label_sortkey']
-                copy['call_number.prefix.owning_lib']
-                copy['call_number.record.active']
-                copy['call_number.record.author_field_entries']
-                copy['call_number.record.call_numbers']
-                copy['call_number.record.create_date']
-                copy['call_number.record.creator.ws_ou']
-                copy['call_number.record.deleted']
-                copy['call_number.record.edit_date']
-                copy['call_number.record.fingerprint']
-                copy['call_number.record.fixed_fields']
-                copy['call_number.record.full_record_entries']
-                copy['call_number.record.id']
-                copy['call_number.record.identifier_field_entries']
-                copy['call_number.record.keyword_field_entries']
-                copy['call_number.record.language']
-                copy['call_number.record.last_xact_id']
-                copy['call_number.record.marc']
-                copy['call_number.record.metarecord']
-                copy['call_number.record.notes']
-                copy['call_number.record.owner']
-                copy['call_number.record.quality']
-                copy['call_number.record.series_field_entries']
-                copy['call_number.record.share_depth']
-                copy['call_number.record.simple_record.author']
-                copy['call_number.record.simple_record.fingerprint']
-                copy['call_number.record.simple_record.id']
-                copy['call_number.record.simple_record.isbn']
-                copy['call_number.record.simple_record.issn']
-                copy['call_number.record.simple_record.pubdate']
-                copy['call_number.record.simple_record.publisher']
-                copy['call_number.record.simple_record.quality']
-                copy['call_number.record.simple_record.tcn_source']
-                copy['call_number.record.simple_record.tcn_value']
-                copy['call_number.record.simple_record.title']
-                copy['call_number.record.source']
-                copy['call_number.record.subject_field_entries']
-                copy['call_number.record.tcn_source']
-                copy['call_number.record.tcn_value']
-                copy['call_number.record.title_field_entries']
-                copy['call_number.suffix.id']
-                copy['call_number.suffix.label']
-                copy['call_number.suffix.label_sortkey']
-                copy['call_number.suffix.owning_lib']
-                copy['call_number.uri_maps']
-                copy['call_number.uris']
-                copy['circ_as_type']
-                copy['circ_lib']
-                copy['circ_lib.id']
-                copy['circ_lib.shortname']
-                copy['circ_lib.name']
-                copy['circ_modifier']
-                copy['circulate']
-                copy['copy_number']
-                copy['cost']
-                copy['create_date']
-                copy['deleted']
-                copy['deposit']
-                copy['deposit_amount']
-                copy['dummy_author']
-                copy['dummy_isbn']
-                copy['dummy_title']
-                copy['edit_date']
-                copy['fine_level']
-                copy['floating']
-                copy['holdable']
-                copy['id']
-                copy['loan_duration']
-                copy['location.checkin_alert']
-                copy['location.circulate']
-                copy['location.copies']
-                copy['location.deleted']
-                copy['location.holdable']
-                copy['location.hold_verify']
-                copy['location.id']
-                copy['location.label_prefix']
-                copy['location.label_suffix']
-                copy['location.name']
-                copy['location.opac_visible']
-                copy['location.orders']
-                copy['location.owning_lib']
-                copy['mint_condition']
-                copy['opac_visible']
-                copy['price']
-                copy['ref']
-                copy['status_changed_time']
-                copy['status.copy_active']
-                copy['status.holdable']
-                copy['status.id']
-                copy['status.is_available']
-                copy['status.name']
-                copy['status.opac_visible']
-                copy['status.restrict_copy_delete']
-
-    There are also two functions available.  The following pulls manually
-    edited call numbers for a given item:
-
-                get_cn_for(copy)
-
-    And this one pulls bibliographic data for a given item:
-
-                get_bib_for(copy)
-
-    It returns a data structure similar to "copy" that has the following fields:
-
-                get_bib_for(copy)['author']
-                get_bib_for(copy)['copy_count']
-                get_bib_for(copy)['doc_id']
-                get_bib_for(copy)['doc_type']
-                get_bib_for(copy)['edition']
-                get_bib_for(copy)['isbn']
-                get_bib_for(copy)['physical_description']
-                get_bib_for(copy)['pubdate']
-                get_bib_for(copy)['publisher']
-                get_bib_for(copy)['series.0']
-                get_bib_for(copy)['synopsis']
-                get_bib_for(copy)['tcn']
-                get_bib_for(copy)['title']
-                get_bib_for(copy)['toc']
-                get_bib_for(copy)['types_of_resource.0']
-
-    Finally, there are filter functions which can be used to modify or transform
-    data being outputted.  For example, consider the following:
-
-                get_bib_for(copy)['title'] | limitTo:28
-
-    This would show up to the first 28 characters for an item's title and
-    truncate the rest.  Now, this:
-
-                get_bib_for(copy)['title'] | wrap:28
-
-    This would try to the wrap the item's title every 28 characters.
-
-                get_bib_for(copy)['title'] | wrap:28:multi:'  '
-
-    This does the same thing but indents subsequent lines with 2 spaces each.
-    
-                get_bib_for(copy)['title'] | wrap:28:once:'  '
-
-    This wraps the title just once, prefixes the second line with two spaces,
-    and truncates anything after the 2nd line.
-
--->
-
-<table class="labels" style="page-break-after: always;" ng-repeat="copy in copies"><tr valign="top"><td>
-
-<!-- Spine Label contents -->
-<pre class="spine" style="border:none" ng-show="true">
-{{get_cn_for(copy)}}
-</pre>
-
-</td><td>
-
-<!-- Pocket Label contents -->
-<pre class="pocket" style="border:none" ng-show="true">
-{{copy.barcode}}
-{{copy['call_number.label']}}
-{{get_bib_for(copy).author }}
-{{get_bib_for(copy).title | wrap:28:'once':' '}}
-</pre>
-
-</td></tr></table>
-
index 90948b7..0d96763 100644 (file)
@@ -1,52 +1,16 @@
-<!--
-Template for printing a list of items that a patron has checked out.
-Fields include:
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Items Out</h3>
 
-* patron - has several fields from the patron object, including a financial summary
-
-  * patron.first_given_name
-  * patron.second_given_name
-  * patron.family_name
-  * patron.suffix
-  * patron.pref_ versions of all name fields (e.g. pref_family_name);
-  * patron.card.barcode
-  * patron.money_summary.balance_owed - current balance
-  * patron.money_summary.total_paid - payments made on outstanding fines/fees
-  * patron.money_summary.total_owed - total of outstanding fines/fees
-  * patron.expire_date
-  * patron.alias - aka Holds Alias
-  * patron.has_email - boolean value to show/hide elements on the receipt
-  * patron.has_phone - same as has_email
-  * patron.juvenile - boolean value (t/f) to show/hide elements on the receipt
-
-* circulations - list of current loans, including for each checkout
-
-  * checkout.title
-  * checkout.author
-  * checkout.circ.due_date
-  * checkout.circ.renewal_remaining
-  * checkout.copy.barcode
-  * checkout.copy.circ_modifier.name
-  * checkout.copy.call_number.label
-  * checkout.copy.call_number.owning_lib.name
-  * checkout.copy.call_number.owning_lib.shortname
-  * checkout.copy.location.name - Shelving location
-
--->
-<div>
-  <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
-  <div>[% l('You have the following items:') %]</div>
-  <hr/>
+<div>You have the following items checked out:</div>
+<br/>
   <ol>
     <li ng-repeat="checkout in circulations">
-      <div>{{checkout.title}}</div>
-      <div>[% l('Barcode: [_1] Due: [_2]', 
-        '{{checkout.copy.barcode}}',
-        '{{checkout.circ.due_date | egDueDate:$root.egDateAndTimeFormat:checkout.circ.circ_lib:checkout.circ.duration}}') %]</div>
+      <div style="font-weight:bold;text-transform:capitalize;">{{checkout.title}}</div>
+      <div>Barcode: {{checkout.copy.barcode}}</div>
+      <div>Due: {{checkout.circ.due_date | date:"M/d/yyyy"}}</div>
     </li>
   </ol>
-  <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <div>[% l('You were helped by [_1]', '{{staff.first_given_name}}') %]</div>
-<br/>
-
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index 7c0acdd..a2df19d 100644 (file)
@@ -1,25 +1,11 @@
-<!--
-Template for printing offline checkout receipts; fields available include:
-
-* transactions - list of loans made during this session. Each
-  includes:
-
-  * barcode
-  * backdate
-  * timestamp
-
--->
-<div>
-  <div>[% l('You checked in the following [_1] items:', '{{transactions.length}}') %]</div>
+  <h1 style="text-align:center;">PINES</h1>
+  <div>You checked in the following {{transactions.length}} items:</div>
   <hr/>
   <ol>
     <li ng-repeat="checkin in transactions">
-      <div>[% l('Barcode: [_1] Checkin date: [_2]', 
-        '{{checkin.barcode}}',
-        '{{checkin.backdate | date:"short"}}') %]</div>
+      <div>Barcode: {{checkin.barcode}}<br/>
+      Checkin date: {{checkin.backdate | date:"short"}}</div>
     </li>
   </ol>
   <hr/>
   <div>{{today | date:'short'}}</div>
-<br/>
-
index dc2bd27..b8e38e8 100644 (file)
@@ -1,27 +1,14 @@
-<!--
-Template for printing offline checkout receipts; fields available include:
-
-* transactions - list of loans made during this session. Each
-  includes:
-
-  * barcode
-  * patron_barcode
-  * due_date
-  * noncat_count
-
--->
-<div>
-  <div>[% l('Patron [_1]', '{{transactions[0].patron_barcode}}') %]</div>
-  <div>[% l('You checked out the following [_1] items:', '{{transactions.length}}') %]</div>
+  <h1 style="text-align:center;">PINES</h1>
+  <div>You checked out the following {{transactions.length}} items:</div>
   <hr/>
   <ol>
     <li ng-repeat="checkout in transactions">
-      <div ng-if="checkout.barcode">[% l('Barcode:') %] {{checkout.barcode}}</div>
-      <div ng-if="!checkout.barcode">[% l('Non-cataloged Item') %] ({{checkout.noncat_count}})</div>
-      <div>[% l('Due Date:') %] {{checkout.due_date | date:"short"}}</div>
+      <div ng-if="checkout.barcode">Barcode: {{checkout.barcode}}<br/>
+         Due: {{checkout.due_date | date:"M/d/yyyy"}}</div>
+      <div ng-if="!checkout.barcode">Non-cataloged Item<br/>
+         Due: {{checkout.due_date | date:"M/d/yyyy"}}</div>
     </li>
   </ol>
   <hr/>
   <div>{{today | date:'short'}}</div>
-<br/>
-
+  <td ng-if="hold.sms_notify" valign="top">{{hold.sms_notify}}</td>
index 1f177ce..efb11a0 100644 (file)
@@ -1,24 +1,11 @@
-<!--
-Template for printing offline in-house use receipts; fields available include:
+<h1 style="text-align:center;">PINES</h1>
 
-* transactions - list of loans made during this session. Each
-  includes:
-
-  * barcode
-  * count
-
--->
-<div>
-  <div>[% l('You recorded use for the following [_1] items:', '{{transactions.length}}') %]</div>
+  <div>You recorded in-house use for the following {{transactions.length}} items:</div>
   <hr/>
   <ol>
     <li ng-repeat="checkout in transactions">
-      <div>[% l('Barcode [_1] used [_2] times', 
-        '{{checkout.barcode}}',
-        '{{checkout.count}}') %]</div>
+      <div>Barcode {{checkout.barcode}} used {{checkout.count}} times</div>
     </li>
   </ol>
   <hr/>
   <div>{{today | date:'short'}}</div>
-<br/>
-
index 7bd8242..ba87cc1 100644 (file)
@@ -1,24 +1,12 @@
-<!--
-Template for printing offline renew receipts; fields available include:
-
-* transactions - list of loans made during this session. Each
-  includes:
-
-  * barcode
-  * due_date
-
--->
-<div>
-  <div>[% l('You renewed the following [_1] items:', '{{transactions.length}}') %]</div>
+  <h1 style="text-align:center;">PINES</h1>
+  <div>You renewed the following {{transactions.length}} items:</div>
   <hr/>
   <ol>
     <li ng-repeat="checkout in transactions">
-      <div>[% l('Barcode: [_1] Due: [_2]', 
-        '{{checkout.barcode}}',
-        '{{checkout.due_date | date:"short"}}') %]</div>
+      <div>Barcode: {{checkout.barcode}}<br/>
+      Due: {{checkout.due_date | date:"M/d/yyyy"}}</div>
     </li>
   </ol>
   <hr/>
   <div>{{today | date:'short'}}</div>
-<br/>
 
index 619ab0e..5bf66bc 100644 (file)
@@ -1,54 +1,50 @@
-<!--
-Template for printing a patron's data, including addresses and statistical categories.
--->
-<div>
-  <div>=-=-=-=</div>
-  <div>-------</div>
-  <div>Barcode: {{patron.card.barcode}}</div>
-  <div>-------</div>
-  <div>Patron's Username: {{patron.usrname}}</div>
-  <div>Prefix/Title: {{patron.prefix}}</div>
-  <div>First Name: {{patron.first_given_name}}</div>
-  <div>Middle Name: {{patron.second_given_name}}</div>
-  <div>Last Name: {{patron.family_name}}</div>
-  <div>Suffix: {{patron.suffix}}</div>
-  <div>Holds Alias: {{patron.alias}}</div>
-  <div>Date of Birth: {{patron.dob}}</div>
-  <div>Juvenile: {{patron.juvenile}}</div>
-  <div>Primary Identification Type: {{patron.ident_type.name()}}</div>
-  <div>Primary Identification: {{patron.ident_value}}</div>
-  <div>Secondary Identification Type: {{patron.ident_type2.name()}}</div>
-  <div>Secondary Identification: {{patron.ident_value2}}</div>
-  <div>Email Address: {{patron.email}}</div>
-  <div>Daytime Phone: {{patron.day_phone}}</div>
-  <div>Evening Phone: {{patron.evening_phone}}</div>
-  <div>Other Phone: {{patron.other_phone}}</div>
-  <div>Home Library: {{patron.home_ou.name()}}</div>
-  <div>Main (Profile) Permission Group: {{patron.profile.name()}}</div>
-  <div>Privilege Expiration Date: {{patron.expire_date}}</div>
-  <div>Internet Access Level: {{patron.net_access_level.name()}}</div>
-  <div>Active: {{patron.active}}</div>
-  <div>Barred: {{patron.barred}}</div>
-  <div>Is Group Lead Account: {{patron.master_account}}</div>
-  <div>Claims-Returned Count: {{patron.claims_returned_count}}</div>
-  <div>Claims-Never-Checked-Out Count: {{patron.claims_never_checked_out_count}}</div>
-
-  <div>
+<style>
+    td {padding: 2px;}
+</style>
+<h3 style="text-align:center;">Patron Information</h3>
+<div style="text-align:center;margin-bottom:10px;">This information will be used for library purpose only<br/>
+ and is considered confidential as specified by Georgia Code 24-9-46.</div>
+<table border=0>
+<tr><td><b>Name:</b></td><td><b><span ng-if="patron.prefix">{{patron.prefix}} </span>
+{{patron.first_given_name}} {{patron.second_given_name}} {{patron.family_name}} {{patron.suffix}}</b></td></tr>
+<tr><td><b>Barcode:</b></td><td><b>{{patron.card.barcode}}</b></td></tr>
+<tr><td>Date of Birth:</td><td>{{patron.dob | date:'M/d/yyyy'}} <div ng-if="patron.juvenile=='t'">Juvenile)</td></tr>
+<tr><td>Primary Identification Type: </td><td>{{patron.ident_type.name()}}</td></tr>
+<tr><td>Primary Identification: </td><td>{{patron.ident_value}}</td></tr>
+<tr><td>Parent/Guardian: </td><td>{{patron.guardian}}</td></tr>
+<tr><td>Email Address: </td><td>{{patron.email}}</td></tr>
+<tr><td>Daytime Phone: </td><td>{{patron.day_phone}}</td></tr>
+<tr><td>Evening Phone: </td><td>{{patron.evening_phone}}</td></tr>
+<tr><td>Other Phone: </td><td>{{patron.other_phone}}</td></tr>
+<tr><td>Home Library: </td><td>{{patron.home_ou.name()}}</td></tr>
+<tr><td>Patron Type: </td><td>{{patron.profile.name()}}</td></tr>
+<tr><td>Privilege Expiration Date: </td><td>{{patron.expire_date | date:'M/d/yyyy'}}</td></tr>
+<tr><td>Internet Access Level: </td><td>{{patron.net_access_level.name()}}</td></tr>
+<tr><td valign="top">Alert Message: </td><td>{{patron.alert_message}}</td></tr>
+<tr><td valign="top">Address:</td><td>
     <div ng-repeat="address in patron.addresses">
-      <div>-------</div>
-      <div>Type: {{address.address_type}}</div>
-      <div>Street (1): {{address.street1}}</div>
-      <div>Street (2): {{address.street2}}</div>
-      <div>City: {{address.city}}</div>
+      <div>Type: {{address.address_type}}</div> 
+      <div>{{address.street1}}</div>
+      <div ng-if="address.street2">{{address.street2}}</div>
+      <div>{{address.city}}, {{address.state}} &nbsp; {{address.post_code}}</div>
       <div>County: {{address.county}}</div>
-      <div>State: {{address.state}}</div>
-      <div>Postal Code: {{address.post_code}}</div>
       <div>Country: {{address.country}}</div>
       <div>Valid Address?: {{address.valid}}</div>
-      <div>Within City Limits?: {{address.within_city_limits}}</div>
+      <div>Within City Limits?: {{address.within_city_limits}}<br/> <br/></div>
     </div>
-    <div>-------</div>
-    <div ng-repeat="entry in patron.stat_cat_entries">{{entry.stat_cat.name}} : {{entry.stat_cat_entry}}</div>
-    <div>=-=-=-=</div>
-  </div>
+</td></tr>
+</table>
+<br/>
+<div style="border:1px dotted black;padding:3px;margin-bottom:5px;">
+<ul><li>I apply for the right to use the Library, agree to comply with all its rules and regulations, and give immediate notice of any change of address.</li>
+<li>I accept financial responsibility for all fines and/or damages to all Library materials, audiovisual materials and equipment beyond normal wear and tear, which is lost or damaged beyond use while checked out on your card. Under Georgia Code (OCGA Annotated Rev. 1985 20-5-53), failure to return items borrowed from a public library is considered a misdemeanor.</li>
+<li><u>If this card is for a juvenile</u>: As the parent or guardian of a child under 18 years, I am willing to allow him/her to borrow materials from the Public Library. I will take responsibility and make good any charges or loss to library materials and pay any fine justly charged. 
+</li>
+</ul>
+<table border=0>
+<tr><td>Name:</td><td>________________________________________________________</td></tr>
+<tr><td>Signature: </td><td>________________________________________________________</td></tr>
+<tr><td>Date: </td><td>___________________</td></tr>
+</table>
 </div>
+Printed at: {{current_location.shortname}} on {{today | date:'short'}}
index c7587e7..d4d3357 100644 (file)
@@ -1,36 +1,15 @@
-<!--
-Template for printing a renewal receipt. Fields include:
-
-* circulations - list of renewals made during the session, including
-  for each renewal:
-
-  * renewal.title
-  * renewal.author
-  * renewal.circ.due_date
-  * renewal.circ.renewal_remaining
-  * renewal.circ.circ_lib
-  * renewal.circ.duration
-  * renewal.copy.barcode
-  * renewal.copy.circ_modifier
-  * renewal.copy.call_number.label
-  * renewal.copy.call_number.owning_lib.name
-  * renewal.copy.call_number.owning_lib.shortname
-
--->
-<div>
-  <div>[% l('Welcome to [_1]', '{{current_location.name}}') %]</div>
-  <div>[% l('You renewed the following items:') %]</div>
-  <hr/>
+<center><img src="https://gapines.org/images/pines_logo.jpg" style="width:150px;"><br/>
+<b>www.gapines.org</b><br/>
+<b>{{current_location.name}}</b></center>
+<h3>Renewals</h3>
+<div>You renewed the following items:</div>
+<br/>
   <ol>
     <li ng-repeat="renewal in circulations">
-      <div>{{renewal.title}}</div>
-      <div>[% l('Barcode: [_1] Due: [_2]', 
-        '{{renewal.copy.barcode}}',
-        '{{renewal.circ.due_date | egDueDate:$root.egDateAndTimeFormat:renewal.circ.circ_lib:renewal.circ.duration}}') %]</div>
+      <div><b>{{renewal.title}}</b></div>
+      <div>Barcode: {{renewal.copy.barcode}}</div>
+      <div>New Due Date: <b>{{renewal.circ.due_date | date:"M/d/yyyy"}}</b></div>
     </li>
   </ol>
-  <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
-  <div>[% l('You were helped by [_1]', '{{staff.first_given_name}}') %]</div>
-<br/>
-
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>
index a4c583c..646233c 100644 (file)
@@ -13,18 +13,13 @@ transits - list; each entry contains:
   * target_copy.call_number.record.simple_record.title
 -->
 <div>
-  <div>[% l('Transits:') %]</div>
+  <h1>Transit List:</h1>
   <hr/>
   <ol>
     <li ng-repeat="transit in transits">
-      <div>[% l('From: [_1] To: [_2] <br> When: [_3] <br> Barcode: [_4] Title: [_5]',
-        '{{transit.source.shortname}}',
-        '{{transit.dest.shortname}}',
-        '{{transit.source_send_time | date:$root.egDateAndTimeFormat}}',
-        '{{transit.target_copy.barcode}}',
-        '{{transit.target_copy.call_number.record.simple_record.title}}') %]</div>
+      <div>From: {{transit.source.shortname}}<br/>To: {{transit.dest.shortname}}<br/> When: {{transit.source_send_time | date:'short'}}<br/> Barcode: {{transit.target_copy.barcode}}<br/> Title: {{transit.target_copy.call_number.record.simple_record.title}}</div>
     </li>
   </ol>
   <hr/>
-  <div>{{current_location.shortname}} {{today | date:$root.egDateAndTimeFormat}}</div>
+  <div>{{current_location.shortname}}  {{today | date:'short'}}</div>
 <br/>
index a27585c..47e2ea4 100644 (file)
@@ -1,49 +1,14 @@
-<!--
-Template for printing a transit slip. Fields include:
-
-* dest_location.name - name of destination library
-* dest_location.shortname
-* dest_address.street1
-* dest_address.street2
-* dest_address.city
-* dest_address.state
-* dest_address.post_code
-* dest_courier_code - from lib.courier_code library setting
-* source_location.name - name of source library
-* source_location.shortname
-* source_address.street1
-* source_address.street2
-* source_address.city
-* source_address.state
-* source_address.post_code
-* copy.barcode
-* copy.status.name - Copy status
-* title
-* author
--->
-<div>
-  <div>[% l('This item needs to be routed to [_1]', '<b>{{dest_location.shortname}}</b>') %]</div>
-  <div>{{dest_location.name}}</div>
-  <div ng-if="dest_address">
-    <div>{{dest_address.street1}}</div>
-    <div>{{dest_address.street2}}</div>
-    <div>{{dest_address.city}},
-        {{dest_address.state}}
-        {{dest_address.post_code}}</div>
-  </div>
-  <div ng-if="!dest_address">
-    [% l('We do not have a holds address for this library.') %]
-  </div>
-  <br/>
-
- [% l('Barcode: [_1]', '{{copy.barcode}}') %]</div>
- [% l('Title: [_1]', '{{title}}') %]</div>
- [% l('Author: [_1]', '{{author}}') %]</div>
-
-  <br/>
-
-  <div>[% l('Slip Date: [_1]', '{{today | date:$root.egDateAndTimeFormat}}') %]</div>
-  <div>[% l('Printed by [_1] at [_2]', 
-    '{{staff.first_given_name}}', '{{current_location.shortname}}') %]</div>
-
-</div>
+<div style="text-align:center;font-weight:bold;font-size:4em;">{{dest_courier_code}}</div>
+<div style="text-align:center;font-weight:bold;font-size:2.5em;">{{dest_location.shortname}}</div>
+<br/>
+<hr/>
+<div>This item needs to be routed to:<br/>
+{{dest_location.name}}</div>
+<br/>
+<table>
+<tr><td valign="top">Title:</td><td valign="top">{{title}}</td></tr>
+<tr><td valign="top">Author:</td><td valign="top">{{author}}</td></tr>
+<tr><td valign="top">Barcode: &nbsp;</td><td valign="top">{{copy.barcode}}</td></tr>
+</table>
+<hr/>
+<div>{{current_location.shortname}} {{today | date:'short'}}</div>