Owen Leonard
30ab16657b
This patch makes changes to the way hold fees are recorded and displayed in the OPAC and staff client: - No English strings should be stored in the accountline description. - The accounttype code should be used to display what kind of charge it is. To test, apply the patch and go to the staff client: - Configure a patron category to have a hold fee. - Place one or more holds for a patron in that category. - On the patron's record, view Accounting -> Make a payment - There should be a separate column for "Account type" showing "Hold fee" for the hold charges. - There should be no "Res" or "Reserve Charge" text in the description column--just the title. - Switch to the "Transactions" tab. The display should be similar. - In the OPAC, log in as a patron who has hold fees on their account. - View the "your fines" page to confirm that the information is displayed correctly there as well. - Place a hold for a patron who incurs hold charges. - Log in to the self-checkout module as that patron and check out an item which will fulfill that hold. - The correct fine information should be saved to accountlines: A "Res" type with a description consisting only of the title. Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
233 lines
10 KiB
Text
233 lines
10 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE Koha %]
|
|
[% USE AuthorisedValues %]
|
|
[% USE Branches %]
|
|
[% USE Price %]
|
|
[% USE ColumnsSettings %]
|
|
[% USE KohaDates %]
|
|
[% SET footerjs = 1 %]
|
|
[% PROCESS 'accounts.inc' %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Patrons › Make a payment for [% patron.firstname | html %] [% patron.surname | html %]</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
</head>
|
|
|
|
<body id="pat_pay" class="pat">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'patron-search.inc' %]
|
|
|
|
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a> › Make a payment for [% patron.firstname | html %] [% patron.surname | html %]</div>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
|
|
[% INCLUDE 'members-toolbar.inc' borrowernumber=patron.borrowernumber %]
|
|
|
|
<!-- The manual invoice and credit buttons -->
|
|
<div class="statictabs">
|
|
<ul>
|
|
<li><a href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=[% patron.borrowernumber | uri %]">Transactions</a></li>
|
|
<li class="active"><a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | uri %]" >Make a payment</a></li>
|
|
<li><a href="/cgi-bin/koha/members/maninvoice.pl?borrowernumber=[% patron.borrowernumber | uri %]" >Create manual invoice</a></li>
|
|
<li><a href="/cgi-bin/koha/members/mancredit.pl?borrowernumber=[% patron.borrowernumber | uri %]" >Create manual credit</a></li>
|
|
</ul>
|
|
<div class="tabs-container">
|
|
|
|
[% IF ( accounts ) %]
|
|
<form action="/cgi-bin/koha/members/pay.pl" method="post" id="pay-fines-form">
|
|
<input type="hidden" name="borrowernumber" id="borrowernumber" value="[% patron.borrowernumber | html %]" />
|
|
<p><span class="checkall"><a id="CheckAll" href="#"><i class="fa fa-check"></i> Select all</a></span> | <span class="clearall"><a id="CheckNone" href="#"><i class="fa fa-remove"></i> Clear all</a></span></p>
|
|
<table id="finest">
|
|
<thead>
|
|
<tr>
|
|
<th class="NoSort"> </th>
|
|
<th class="NoSort">Actions</th>
|
|
<th>Account type</th>
|
|
<th>Description</th>
|
|
<th class="title-string">Date</th>
|
|
<th>Barcode</th>
|
|
<th>Due date</th>
|
|
<th>Return date</th>
|
|
<th class="NoSort">Payment note</th>
|
|
<th>Amount</th>
|
|
<th>Amount outstanding</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
[% FOREACH line IN accounts %]
|
|
<tr>
|
|
<td>
|
|
[% IF ( line.amountoutstanding > 0 ) %]
|
|
<input class="cb" type="checkbox" checked="checked" name="incl_par_[% line.accountlines_id | html %]" />
|
|
[% END %]
|
|
</td>
|
|
<td class="actions">
|
|
[% IF ( line.amountoutstanding > 0 ) %]
|
|
<button type="submit" class="btn btn-default btn-xs" name="pay_indiv_[% line.accountlines_id | html %]" value="Pay">Pay</button>
|
|
[% IF CAN_user_updatecharges_writeoff %]
|
|
<button type="submit" class="btn btn-default btn-xs" name="wo_indiv_[% line.accountlines_id | html %]" value="Write off">Write off</button>
|
|
[% END %]
|
|
[% END %]
|
|
<input type="hidden" name="itemnumber[% line.accountlines_id | html %]" value="[% line.itemnumber | html %]" />
|
|
<input type="hidden" name="description[% line.accountlines_id | html %]" value="[% line.description | html %]" />
|
|
<input type="hidden" name="accounttype[% line.accountlines_id | html %]" value="[% line.accounttype | html %]" />
|
|
<input type="hidden" name="amount[% line.accountlines_id | html %]" value="[% line.amount | html %]" />
|
|
<input type="hidden" name="accountlines_id[% line.accountlines_id | html %]" value="[% line.accountlines_id | html %]" />
|
|
<input type="hidden" name="amountoutstanding[% line.accountlines_id | html %]" value="[% line.amountoutstanding | html %]" />
|
|
<input type="hidden" name="borrowernumber[% line.accountlines_id | html %]" value="[% line.borrowernumber | html %]" />
|
|
</td>
|
|
<td>
|
|
[% PROCESS account_type_description account=line %]
|
|
</td>
|
|
<td>
|
|
[%- IF line.description %][% line.description | html %][% END %]
|
|
[% IF line.itemnumber %]([% line.item.biblio.title | html %])[% END %]
|
|
</td>
|
|
<td>
|
|
<span title="[% line.date | html %]">[% line.date | $KohaDates %]</span>
|
|
</td>
|
|
<td>
|
|
[% IF line.itemnumber %]
|
|
<a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% line.itemnumber | uri %]&biblionumber=[% line.item.biblionumber | uri %]#item[% line.itemnumber | uri %]">[% line.item.barcode | html %]</a>
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
[% IF line.issue_id %]
|
|
[% line.checkout.date_due | $KohaDates as_due_date => 1 %]
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
[% IF line.issue_id %]
|
|
[% line.checkout.returndate | $KohaDates with_hours => 1 %]
|
|
[% END %]
|
|
</td>
|
|
<td class="actions">
|
|
<a href="#" class="add-note" data-accountlines_id="[% line.accountlines_id | html %]"><i class="fa fa-plus"></i> Add note</a>
|
|
<span class="payment_note" id="payment_note_[% line.accountlines_id | html %]" style="display:none"><input type="text" size="10" name="payment_note_[% line.accountlines_id | html %]" value="" /> <a href="#" class="cancel-note"><i class="fa fa-remove"></i></a></span>
|
|
</td>
|
|
<td class="debit" style="text-align: right;">[% line.amount | $Price %]</td>
|
|
<td class="debit" style="text-align: right;">[% line.amountoutstanding | $Price %]</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
[% IF outstanding_credits.total_outstanding < 0 %]
|
|
<tr>
|
|
<td class="total" colspan="10">Outstanding credits could be applied: </td>
|
|
<td class="credit" style="text-align: right;"><button type="submit" id="apply_credits" name="apply_credits" value="apply_credits" class="btn btn-default btn-sm">Apply <strong class="credit">[% outstanding_credits.total_outstanding | $Price %]</strong></button></td>
|
|
</tr>
|
|
[% END %]
|
|
[% IF ( account_grp.total ) %]
|
|
<tr>
|
|
<td class="total" colspan="10" style="text-align: right;">Sub total:</td>
|
|
<td style="text-align: right;">[% account_grp.total | $Price %]</td>
|
|
</tr>
|
|
[% END %]
|
|
<tr>
|
|
<td class="total" colspan="10">Total due:</td>
|
|
[% IF outstanding_credits.total_outstanding < 0 %]
|
|
<td style="text-align: right;">[% total + outstanding_credits.total_outstanding | $Price %]</td>
|
|
[% ELSE %]
|
|
<td style="text-align: right;">[% total | $Price %]</td>
|
|
[% END %]
|
|
</tr>
|
|
</tfoot>
|
|
|
|
</table>
|
|
<fieldset class="action">
|
|
<input type="submit" id="paycollect" name="paycollect" value="Pay amount" class="submit" />
|
|
[% IF CAN_user_updatecharges_writeoff %]<input type="submit" name="woall" id="woall" value="Write off all" class="submit" />[% END %]
|
|
<input type="submit" id="payselected" name="payselected" value="Pay selected" class="submit" />
|
|
<input type="submit" id="writeoff-selected" name="writeoff_selected" value="Write off selected" class="submit" />
|
|
<a class="cancel" href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a>
|
|
</fieldset>
|
|
</form>
|
|
[% ELSE %]
|
|
<p>[% patron.firstname | html %] [% patron.surname | html %] has no outstanding fines.</p>
|
|
[% END %]
|
|
</div></div>
|
|
|
|
</main>
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
[% INCLUDE 'circ-menu.inc' %]
|
|
</aside>
|
|
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
|
</div> <!-- /.row -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% INCLUDE 'str/members-menu.inc' %]
|
|
[% Asset.js("js/members-menu.js") | $raw %]
|
|
[% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
[% INCLUDE 'columns_settings.inc' %]
|
|
<script>
|
|
function enableCheckboxActions(){
|
|
// Enable/disable controls if checkboxes are checked
|
|
var checkedBoxes = $("input.cb:checked");
|
|
if ($(checkedBoxes).size()) {
|
|
$("#payselected, #writeoff-selected").prop("disabled",false);
|
|
} else {
|
|
$("#payselected, #writeoff-selected").prop("disabled",true);
|
|
}
|
|
}
|
|
$(document).ready(function(){
|
|
$('#pay-fines-form').preventDoubleFormSubmit();
|
|
$("#woall").click(function(event){
|
|
var msg = _("Are you sure you want to write off %s in outstanding fines? This cannot be undone!").format( "[% total | $Price %]" );
|
|
var answer = confirm(msg);
|
|
if (!answer){
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
$('#CheckAll').click(function(e){
|
|
e.preventDefault();
|
|
$("#finest").checkCheckboxes();
|
|
enableCheckboxActions();
|
|
return false;
|
|
});
|
|
$('#CheckNone').click(function(e){
|
|
e.preventDefault();
|
|
$("#finest").unCheckCheckboxes();
|
|
enableCheckboxActions();
|
|
return false;
|
|
});
|
|
$(".cb").change(function(){
|
|
enableCheckboxActions();
|
|
});
|
|
enableCheckboxActions();
|
|
$(".add-note").on("click", function(e){
|
|
e.preventDefault();
|
|
$(this).hide();
|
|
var accountlines_id = $(this).data("accountlines_id");
|
|
$("#payment_note_" + accountlines_id ).show().find("input").focus();
|
|
});
|
|
$(".cancel-note").on("click", function(e){
|
|
e.preventDefault();
|
|
$(".payment_note").hide().find("input").val("");
|
|
$(".add-note").show();
|
|
});
|
|
|
|
var columns_settings = [% ColumnsSettings.GetColumns('members', 'pay', 'pay-fines-table', 'json') | $raw %];
|
|
KohaTable("finest", {
|
|
"columnDefs": [
|
|
{ "bSortable": false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
|
|
{ "sType": "anti-the", "aTargets" : [ "anti-the" ] },
|
|
{ "sType": "title-string", "aTargets" : [ "title-string" ] }
|
|
],
|
|
"paging": false,
|
|
'sorting': [[ 3, "asc" ]],
|
|
"autoWidth": false
|
|
}, columns_settings );
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|