1 [% PROCESS "default/opac/parts/header.tt2";
2 PROCESS "default/opac/parts/misc_util.tt2";
3 WRAPPER "default/opac/parts/base.tt2" +
4 "default/opac/parts/myopac/base.tt2";
6 show_payments = (CGI.param('expand') == 'payments');
9 <div id='myopac_summary_div' style="padding:0px;">
11 <div style="width:742px;float:left;">
12 <div class="header_middle">[% l('Account Summary') %]</div>
15 <!-- fines summary along the right of the page -->
16 <div id="myopac_sum_fines">
17 <div style="position:absolute;">
18 <div style="position:relative;top:-15px;left:-23px;">
19 <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tl.png" />
22 <div style="position:absolute;">
23 <div style="position:relative;top:-15px;left:172px;">
24 <img src="[% ctx.media_prefix %]/images/acct_sum_fines_tr.png" />
27 <div style="position:absolute;">
28 <div style="position:relative;top:161px;left:-23px;">
29 <img src="[% ctx.media_prefix %]/images/acct_sum_fines_bl.png" />
32 <div style="position:absolute;">
33 <div style="position:relative;top:161px;left:172px;">
34 <img src="[% ctx.media_prefix %]/images/acct_sum_fines_br.png" />
38 <span id="myopac_sum_fines_bal" class='[% ctx.user_stats.fines.balance_owed ? "red" : ""%]'>
39 [% money(ctx.user_stats.fines.balance_owed) %]
41 <a class="hide_me" href="#" id="pay_fines_btn1"><img
42 alt="[% l('Pay Fines') %]"
43 onmouseover="this.src='[% ctx.media_prefix %]/images/pay-fines-btn-hover.png';"
44 onmouseout="this.src='[% ctx.media_prefix %]/images/pay-fines-btn.png';"
45 src="[% ctx.media_prefix %]/images/pay-fines-btn.png"
46 style="position:relative;top:5px;" /></a>
50 <div style="width:662px;">
51 <div style="float:left;">
52 <div style="padding:10px 0px;" id="myopac_sum_name"></div>
53 <div class="acct_sum_row">
54 <table width="100%" cellspacing="0" cellpadding="0">
56 <td>[% l("Items Currently Checked out ([_1])", ctx.user_stats.checkouts.total_out) %]</td>
58 <a href="[% ctx.opac_root %]/myopac/circs">[% l("View All") %]</a>
63 <div class="acct_sum_row">
64 <table width="100%" cellspacing="0" cellpadding="0">
66 <td>[% l('Items Currently on Hold ([_1])', ctx.user_stats.holds.total) %]</td>
68 <a href="[% ctx.opac_root %]/myopac/holds">[% l('View All') %]</a>
73 <div class="acct_sum_row">
74 <table width="100%" cellspacing="0" cellpadding="0">
76 <td>[% l('Items ready for pickup ([_1])', ctx.user_stats.holds.ready) %]</td>
78 <a href="[% ctx.opac_root %]/myopac/holds?available=1">[% l('View All') %]</a>
84 <!-- this is here to allow for hiding open transactions, but that
85 also hides payments history, which we don't want. perhaps this
86 can be left out entirely
87 <div class="acct_sum_row" id="myopac_sum_fines_slim">
88 <table width="100%" cellspacing="0" cellpadding="0">
90 <td>[% l('Fees & Fines') %]</td>
92 <a href="#">Show Overdue Materials</a>
101 <div class="clear-both"></div>
103 <div id='fines_payments_wrapper'>
104 <div id='acct_fines_tabs'>
105 [% IF show_payments %]
106 <a href='main'><img src='[% ctx.media_prefix %]/images/acct_fines_off.jpg'/></a>
107 <a href=''><img src='[% ctx.media_prefix %]/images/acct_payments_on.jpg'/></a>
109 <a href=''><img src='[% ctx.media_prefix %]/images/acct_fines_on.jpg'/></a>
110 <a href='?expand=payments'><img src='[% ctx.media_prefix %]/images/acct_payments_off.jpg'/></a>
115 [% IF !show_payments %]
116 [% IF ctx.fines.circulation.size > 0 %]
117 <div id='myopac_circ_trans_div'>
118 <table width='100%' class='data_grid'>
121 <td colspan='10' style='padding: 6px'>
122 <strong>[% l("Fines") %]</strong>
126 <td>[% l("Title") %]</td>
127 <td>[% l("Author") %]</td>
128 <td>[% l("Checkout Date") %]</td>
129 <td>[% l("Due Date") %]</td>
130 <td>[% l("Date Returned") %]</td>
131 <td>[% l("Balance Owed") %]</td>
132 <!-- TODO: hidden until pay-fines is implemented
133 <td nowrap="nowrap" style="white-space:nowrap;">
134 <input id="pay_fines_box1" checked="checked"
135 type="checkbox" title="[% l('Click to (un)select all fines') %]" />
136 <label for="pay_fines_box1">[% l('Pay Fines') %]</label>
141 <tbody id='myopac_circ_trans_tbody'>
142 [% FOR f IN ctx.fines.circulation;
143 attrs = {marc_xml => f.marc_xml};
144 PROCESS get_marc_attrs args=attrs %]
145 <tr id='myopac_circ_trans_row'>
147 <a href="[% ctx.opac_root %]/record/[% f.xact.circulation.target_copy.call_number.record.id %]">[% attrs.title %]</a>
150 <a href="[% ctx.opac_root %]/results?qtype=author&query=[% attrs.author | replace('[,\.:;]', '') | url %]">[% attrs.author %]</a>
152 <td name='myopac_circ_trans_start'>
155 f.xact.circulation.xact_start
159 <td name='myopac_circ_trans_due'>
162 f.xact.circulation.due_date
166 <td name='myopac_circ_trans_finished'>
167 [% IF f.xact.circulation.checkin_time;
170 f.xact.circulation.checkin_time
174 <!-- XXX TODO fines aren't really accruing
175 if circ has hit maxfines. more clarity
177 <span class="red">[% l('(fines accruing)') %]</span>
182 [% money(f.xact.balance_owed) %]
185 <!-- TODO: hidden until pay-fines is implemented
187 <input type="checkbox" name="selector" title="[% l('Pay this fine') %]" />
197 [% IF ctx.fines.grocery.size > 0 %]
198 <!-- Table for all non-circulation transactions -->
199 <div id='myopac_trans_div'>
201 <hr class='opac-auto-013' color="#dcdbdb" />
203 <table width='100%' class='data_grid data_grid_center'
204 id='myopac_trans_table'>
207 <td colspan='8' style='padding: 6px'>
208 <b>[% l("Other Fees") %]</b>
212 <td width='16%'>[% l("Transaction Start Time") %]</td>
213 <td width='16%'>[% l("Last Payment Time") %]</td>
214 <td width='16%'>[% l("Initial Amount Owed") %]</td>
215 <td width='16%'>[% l("Total Amount Paid") %]</td>
216 <td width='16%'>[% l("Balance Owed") %]</td>
217 <td width='16%'>[% l("Billing Type") %]</td>
218 <!-- TODO: hidden until pay-fines is implemented
219 <td width='4%' align="center" nowrap="nowrap"
220 style="white-space:nowrap;">
221 <input id="pay_fines_box2" checked="checked"
223 title="[% l('Click to (un)select all fines') %]" />
224 <label for="pay_fines_box2">[% l("Pay Fines") %]</label>
229 <tbody id='myopac_trans_tbody'>
230 [% FOR f IN ctx.fines.grocery %]
231 <tr id='myopac_trans_row'>
233 ctx.parse_datetime(f.xact.xact_start),
237 [% IF f.xact.last_payment_ts;
240 f.xact.last_payment_ts
245 <td>[% money(f.xact.total_owed) %]</td>
246 <td>[% money(f.xact.total_paid) %]</td>
249 [% money(f.xact.balance_owed) %]
252 <td>[% f.xact.last_billing_type %]</td>
253 <!-- TODO: hidden until pay-fines is implemented
255 <input type="checkbox" name='selector' title='[% l("Pay this fine") %]'/>
265 <!-- TODO: hidden until pay-fines is implemented
266 <a href="#"><img alt="[% l('Pay Fines') %]"
267 onmouseover="this.src='[% ctx.media_prefix %]/images/pay-fines-btn-hover.png';"
268 src="[% ctx.media_prefix %]/images/pay-fines-btn.png"
269 style="position:relative;top:5px;" /></a>
273 [% ELSE %] <!-- show payments -->
275 <table id='myopac_payments_table' width='100%' class='data_grid'>
277 <th>[% l('Payment Date') %]</th>
278 <th>[% l('Payment For') %]</th>
279 <th>[% l('Amount') %]</th>
280 <th>[% l('Receipt') %]</th>
283 [% FOR payment IN ctx.payments %]
285 <td>[% date.format(ctx.parse_datetime(payment.mp.payment_ts), DATE_FORMAT) %]</td>
286 <td>[% (payment.xact_type == 'grocery') ? payment.last_billing_type : payment.title %]</td>
287 <td>[% money(payment.mp.amount) %]</td>
289 [%# post to print/email form... %]
290 <a href=''>[% l('Print') %]</a> / <a href=''>[% l('Email') %]</a>
300 <!-- TODO: move payment form to its own page -->
302 <div id="pay_fines_now" class="hide_me">
303 <table id='oils-selfck-cc-payment-table'>
306 <td><div style="width:129px;"></div></td>
307 <td><div style="width:195px;"></div></td>
308 <td><div style="width:324px;"></div></td>
311 <td colspan='2'><strong>Billing Information</strong></td>
312 <td rowspan='13' valign='top'>
313 Selected fines you are paying for:
314 <table cellpadding="0" cellspacing="5" border="0">
318 <strong>Name</strong>
321 <strong>Amount</strong>
325 <tbody id="selectedFines">
329 <div id='oils-selfck-cc-payment-summary'>
331 <strong>$<span></span></strong>
334 Click <strong>Cancel</strong> to go back and (un)select
340 <td><input jsId='oilsSelfckCCFName' /></td>
344 <td><input jsId='oilsSelfckCCLName' /></td>
347 <td>Street Address</td>
348 <td><input jsId='oilsSelfckCCStreet' /></td>
352 <td><input jsId='oilsSelfckCCCity' /></td>
355 <td>State or Province</td>
356 <td><input jsId='oilsSelfckCCState' /></td>
359 <td>ZIP or Postal Code</td>
360 <td><input jsId='oilsSelfckCCZip' /></td>
363 <td colspan='2'><strong>Credit Card Information</strong></td>
365 <!-- Technically not needed since card type is derived from the CC number
367 <td>Type of Card</td>
369 <select jsId='oilsSelfckCCType' required='true'>
370 <option value='VISA'>VISA</option>
371 <option value='MasterCard'>MasterCard</option>
372 <option value='American Express'>American Express</option>
378 <td>Credit Card #</td>
379 <td><input jsId='oilsSelfckCCNumber' /></td>
383 <div style="position:absolute;">
384 <div style="position:relative;left:80px;">
386 src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
392 <input jsId='oilsSelfckCCCVV' />
396 <td>Exipration Month</td>
398 <select jsId='oilsSelfckCCMonth'>
399 <option value='01' selected='selected'>January</option>
400 <option value='02'>February</option>
401 <option value='03'>March</option>
402 <option value='04'>April</option>
403 <option value='05'>May</option>
404 <option value='06'>June</option>
405 <option value='07'>July</option>
406 <option value='08'>August</option>
407 <option value='09'>September</option>
408 <option value='10'>October</option>
409 <option value='11'>November</option>
410 <option value='12'>December</option>
415 <td>Expiration Year</td>
417 <select jsId='oilsSelfckCCYear'>
418 <option value='2011'>2011</option>
419 <option value='2012'>2012</option>
420 <option value='2013'>2013</option>
421 <option value='2014'>2014</option>
422 <option value='2015'>2015</option>
423 <option value='2016'>2016</option>
424 <option value='2017'>2017</option>
425 <option value='2018'>2018</option>
426 <option value='2019'>2019</option>
431 <td>Edit Billing Address</td>
433 <input jsId='oilsSelfckEditDetails'/>
437 <td colspan='2' align="center">
438 <button jsId='oilsSelfckCCSubmit'>
449 Important! You must have a printed receipt to be
450 eligible for a refund on lost items (regulations allow
454 To ensure your necessary receipt information is
455 not lost, enter your email address above and a
456 receipt will be emailed to you. Otherwise, make
457 certain you have a printed receipt in hand before
458 closing the payment receipt screen.
461 Refunds are not available for parts and pieces, overdue
462 fines, or items that do not display a specific title in
463 My Account. For a full list of refundable and
464 non-refundable items, visit
465 <a href="http://www.kcls.org/usingthelibrary/borrowing/refundable.cfm">http://www.kcls.org/usingthelibrary/borrowing/refundable.cfm</a><br /><br />
466 This site uses VeriSign SSL encryption to ensure your