Bug 13926: ake circulation.pl not using C4::Members::Search

This patch uses the same method as bug 13894.

Important note: This will modify the UI.
The patron list will now be displayed in a table (instead of a select).

Test plan:
1/ Search for a patron using the checkout tab
2/ The patron list should appear correctly

Test with different type of search (returns 0, 1, 1+ results).

No behavior changes should be observed.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
works as expected

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2015-03-30 12:15:42 +02:00 committed by Tomas Cohen Arazi
parent ec22ce4319
commit 0a6dc1b0c1
2 changed files with 69 additions and 51 deletions

View file

@ -34,6 +34,7 @@ use C4::Dates qw/format_date/;
use C4::Branch; # GetBranches
use C4::Koha; # GetPrinter
use C4::Circulation;
use C4::Utils::DataTables::Members;
use C4::Members;
use C4::Biblio;
use C4::Search;
@ -202,25 +203,30 @@ if ( $print eq 'yes' && $borrowernumber ne '' ) {
# STEP 2 : FIND BORROWER
# if there is a list of find borrowers....
#
my $borrowerslist;
my $message;
if ($findborrower) {
my $borrowers = Search($findborrower, 'cardnumber') || [];
my $categories = GetBorrowercategoryList;
$categories->[0]->{first} = 1;
$template->param( categories => $categories );
if ( @$borrowers == 0 ) {
$query->param( 'findborrower', '' );
$message = "'$findborrower'";
}
elsif ( @$borrowers == 1 ) {
$borrowernumber = $borrowers->[0]->{'borrowernumber'};
$query->param( 'borrowernumber', $borrowernumber );
$query->param( 'barcode', '' );
}
else {
$borrowerslist = $borrowers;
my $borrower = C4::Members::GetMember( cardnumber => $findborrower );
if ( $borrower ) {
$borrowernumber = $borrower->{borrowernumber};
} else {
my $dt_params = { iDisplayLength => -1 };
my $results = C4::Utils::DataTables::Members::search(
{
searchmember => $findborrower,
dt_params => $dt_params,
}
);
my $borrowers = $results->{patrons};
if ( scalar @$borrowers == 1 ) {
$borrowernumber = $borrowers->[0]->{borrowernumber};
$query->param( 'borrowernumber', $borrowernumber );
$query->param( 'barcode', '' );
} elsif ( @$borrowers ) {
$template->param( borrowers => $borrowers );
} else {
$query->param( 'findborrower', '' );
$message = "'$findborrower'";
}
}
}
@ -417,25 +423,6 @@ if ($borrowernumber) {
if ( $borrower->{'category_type'} eq 'A' );
}
my @values;
my %labels;
my $selectborrower;
if ($borrowerslist) {
foreach (
sort {(lc $a->{'surname'} cmp lc $b->{'surname'} || lc $a->{'firstname'} cmp lc $b->{'firstname'})
} @$borrowerslist
)
{
push @values, $_->{'borrowernumber'};
$labels{ $_->{'borrowernumber'} } =
"$_->{'surname'}, $_->{'firstname'} ... ($_->{'cardnumber'} - $_->{'categorycode'} - $_->{'branchcode'}) ... $_->{'address'} ";
}
$selectborrower = {
values => \@values,
labels => \%labels,
};
}
#title
my $flags = $borrower->{'flags'};
foreach my $flag ( sort keys %$flags ) {
@ -586,7 +573,6 @@ $template->param(
stickyduedate => $stickyduedate,
duedatespec => $duedatespec,
message => $message,
selectborrower => $selectborrower,
totaldue => sprintf('%.2f', $total),
inprocess => $inprocess,
is_child => ($borrowernumber && $borrower->{'category_type'} eq 'C'),

View file

@ -44,7 +44,7 @@ var relatives_borrowernumbers = new Array();
var MSG_ADD_MESSAGE = _("Add a new message");
var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
[% IF ( borrowernumber ) %]if($.cookie("holdfor") != [% borrowernumber %]){ $.cookie("holdfor",null, { path: "/", expires: 0 }); }[% ELSE %]$.cookie("holdfor",null, { path: "/", expires: 0 });[% END %]
[% UNLESS ( borrowernumber ) %][% UNLESS ( selectborrower ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %]
[% UNLESS ( borrowernumber ) %][% UNLESS ( borrowers ) %]window.onload=function(){ $('#findborrower').focus(); };[% END %][% END %]
// On-site checkout
function toggle_onsite_checkout(){
@ -83,6 +83,23 @@ $(document).ready(function() {
$("#onsite_checkout").click(function(){
toggle_onsite_checkout();
});
var table = $("#table_borrowers").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "aTargets": [ 0 ], "bSortable": false, "bSearchable": false },
],
"aaSorting": [ 2, "asc" ],
"sDom": "t",
"iDisplayLength": -1
}));
$(table).find('tbody tr').filter(':has(:radio:checked)').end().click(function(event) {
$('#table_borrowers tbody tr').removeClass('selected');
$(this).addClass('selected');
if (event.target.type !== 'radio') {
$(':radio', this).attr('checked', 'true')
}
});
});
//]]>
@ -100,7 +117,7 @@ $(document).ready(function() {
<strong>Checkouts</strong>
[% END %]
</div>
[% IF ( selectborrower ) %]
[% IF ( $borrowers ) %]
<div id="doc" class="yui-t7">
<div id="bd">
@ -500,19 +517,34 @@ No patron matched <span class="ex">[% message %]</span>
<input type="hidden" name="duedatespec" value="[% duedatespec %]" />
<input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
<ol> <li>
<label for="borrowernumber">Select a patron: </label>
<select name="borrowernumber" id="borrowernumber" size="7" class="focus" ondblclick="document.forms['mainform'].submit()">
[% FOREACH borrower IN selectborrower.values %]
<option value="[% borrower %]">[% selectborrower.labels.$borrower %]</option>
[% END %]
</select>
</li>
</ol>
<p><input type="submit" value="Select" /></p>
<table id="table_borrowers">
<thead>
<tr>
<th></th>
<th>Name</th>
<th>Cardnumber</th>
<th>Category</th>
<th>Library</th>
<th>Address</th>
</tr>
</thead>
<tbody>
[% FOREACH borrower IN borrowers %]
<tr>
<td><input type="radio" name="borrowernumber" value="[% borrower.borrowernumber %]" /></td>
<td>[% borrower.surname %], [% borrower.firstname %]</td>
<td>[% borrower.cardnumber %]</td>
<td>[% borrower.categorycode %]</td>
<td>[% borrower.branchcode %]</td>
<td>[% borrower.address %]</td>
</tr>
[% END %]
</tbody>
</table>
<fieldset class="action"><input type="submit" value="Select" /></fieldset>
</fieldset>
</form>
[% ELSE %] <!-- selectborrower -->
[% ELSE %]
<!-- BARCODE ENTRY -->
@ -878,7 +910,7 @@ No patron matched <span class="ex">[% message %]</span>
</div>
</div>
[% UNLESS ( selectborrower ) %][% IF ( borrowernumber ) %]<div class="yui-b">
[% UNLESS ( borrowers ) %][% IF ( borrowernumber ) %]<div class="yui-b">
[% INCLUDE 'circ-menu.inc' %]
</div>[% END %][% END %]
</div>