# Copyright 2000-2002 Katipo Communications
# copyright 2010 BibLibre
# Copyright 2011 PTFS-Europe Ltd.
+# Copyright 2012 software.coop and MJ Ray
#
# This file is part of Koha.
#
use strict;
use warnings;
use CGI;
-
use C4::Output;
use C4::Print;
use C4::Auth qw/:DEFAULT get_session/;
use C4::Branch; # GetBranches
use C4::Koha; # GetPrinter
use C4::Circulation;
-use C4::Overdues qw/CheckBorrowerDebarred/;
use C4::Members;
use C4::Biblio;
+use C4::Search;
+use MARC::Record;
use C4::Reserves;
use C4::Context;
use CGI::Session;
use C4::Members::Attributes qw(GetBorrowerAttributes);
+use Koha::Borrower::Debarments qw(GetDebarments IsDebarred);
use Koha::DateUtils;
use Date::Calc qw(
for (@failedreturns) { $return_failed{$_} = 1; }
my $findborrower = $query->param('findborrower') || q{};
-utf8::decode($findborrower);
$findborrower =~ s|,| |g;
my $borrowernumber = $query->param('borrowernumber');
my $duedatespec = $query->param('duedatespec') || $session->param('stickyduedate');
my $issueconfirmed = $query->param('issueconfirmed');
my $cancelreserve = $query->param('cancelreserve');
-my $organisation = $query->param('organisations');
my $print = $query->param('print') || q{};
my $debt_confirmed = $query->param('debt_confirmed') || 0; # Don't show the debt error dialog twice
my $charges = $query->param('charges') || q{};
finetotal => $fines
);
- my $debar = CheckBorrowerDebarred($borrowernumber);
- if ($debar) {
- $template->param( 'userdebarred' => 1 );
- $template->param( 'debarredcomment' => $borrower->{debarredcomment} );
- if ( $debar ne "9999-12-31" ) {
- $template->param( 'userdebarreddate' => C4::Dates::format_date($debar) );
+ if ( IsDebarred($borrowernumber) ) {
+ $template->param(
+ 'userdebarred' => $borrower->{debarred},
+ 'debarredcomment' => $borrower->{debarredcomment},
+ );
+
+ if ( $borrower->{debarred} ne "9999-12-31" ) {
+ $template->param( 'userdebarreddate' =>
+ C4::Dates::format_date( $borrower->{debarred} ) );
}
}
$template->param(
authvalcode_notforloan => C4::Koha::GetAuthValCode('items.notforloan', $getmessageiteminfo->{'frameworkcode'}),
);
+ # Fix for bug 7494: optional checkout-time fallback search for a book
+
+ if ( $error->{'UNKNOWN_BARCODE'}
+ && C4::Context->preference("itemBarcodeFallbackSearch") )
+ {
+ $template->param( FALLBACK => 1 );
+
+ my $query = "kw=" . $barcode;
+ my ( $searcherror, $results, $total_hits ) = SimpleSearch($query);
+
+ # if multiple hits, offer options to librarian
+ if ( $total_hits > 0 ) {
+ my @options = ();
+ foreach my $hit ( @{$results} ) {
+ my $chosen =
+ TransformMarcToKoha( C4::Context->dbh,
+ C4::Search::new_record_from_zebra('biblioserver',$hit) );
+
+ # offer all barcodes individually
+ if ( $chosen->{barcode} ) {
+ foreach my $barcode ( sort split(/\s*\|\s*/, $chosen->{barcode}) ) {
+ my %chosen_single = %{$chosen};
+ $chosen_single{barcode} = $barcode;
+ push( @options, \%chosen_single );
+ }
+ }
+ }
+ $template->param( options => \@options );
+ }
+ }
delete $question->{'DEBT'} if ($debt_confirmed);
foreach my $impossible ( keys %$error ) {
$getreserv{nottransfered} = 0;
$getreserv{reservedate} = format_date( $num_res->{'reservedate'} );
- $getreserv{reservenumber} = $num_res->{'reservenumber'};
+ $getreserv{reserve_id} = $num_res->{'reserve_id'};
$getreserv{title} = $getiteminfo->{'title'};
+ $getreserv{subtitle} = GetRecordValue('subtitle', GetMarcBiblio($getiteminfo->{biblionumber}), GetFrameworkCode($getiteminfo->{biblionumber}));
$getreserv{itemtype} = $itemtypeinfo->{'description'};
$getreserv{author} = $getiteminfo->{'author'};
$getreserv{barcodereserv} = $getiteminfo->{'barcode'};
$getreserv{color} = 'inwait';
$getreserv{title} = $getbibinfo->{'title'};
+ $getreserv{subtitle} = GetRecordValue('subtitle', GetMarcBiblio($num_res->{biblionumber}), GetFrameworkCode($num_res->{biblionumber}));
$getreserv{nottransfered} = 0;
$getreserv{itemtype} = $itemtypeinfo->{'description'};
$getreserv{author} = $getbibinfo->{'author'};
$getreserv{biblionumber} = $num_res->{'biblionumber'};
}
$getreserv{waitingposition} = $num_res->{'priority'};
+ $getreserv{expirationdate} = $num_res->{'expirationdate'};
push( @reservloop, \%getreserv );
# if we have a reserve waiting, initiate waitingreserveloop
($it->{'charge'}, $it->{'itemtype_charge'}) = GetIssuingCharges(
$it->{'itemnumber'}, $it->{'borrowernumber'}
);
- $it->{'charge'} = sprintf("%.2f", $it->{'charge'});
+ $it->{'charge'} = sprintf("%.2f", $it->{'charge'}) if defined $it->{'charge'};
my ($can_renew, $can_renew_error) = CanBookBeRenewed(
$it->{'borrowernumber'},$it->{'itemnumber'}
);
$it->{'displaydate'} = output_pref($it->{'issuedate'});
#$it->{'od'} = ( $it->{'date_due'} lt $todaysdate ) ? 1 : 0 ;
$it->{'od'} = $it->{'overdue'};
- $it->{'author'} ||= ' ';
+ $it->{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($it->{biblionumber}), GetFrameworkCode($it->{biblionumber}));
$it->{'renew_failed'} = $renew_failed{$it->{'itemnumber'}};
$it->{'return_failed'} = $return_failed{$it->{'barcode'}};
} else {
(!$relatives) ? push @previousissues, $it : push @relprevissues, $it;
}
+ ($it->{'renewcount'},$it->{'renewsallowed'},$it->{'renewsleft'}) = C4::Circulation::GetRenewCount($it->{'borrowernumber'},$it->{'itemnumber'}); #Add renewal count to item data display
+
+ $it->{'soonestrenewdate'} = output_pref(
+ C4::Circulation::GetSoonestRenewDate(
+ $it->{borrowernumber}, $it->{itemnumber}
+ )
+ );
}
}
my ( $total, $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber );
-if ( $borrower->{'category_type'} eq 'C') {
+if ( $borrowernumber && $borrower->{'category_type'} eq 'C') {
my ( $catcodes, $labels ) = GetborCatFromCatType( 'A', 'WHERE category_type = ?' );
my $cnt = scalar(@$catcodes);
$template->param( 'CATCODE_MULTI' => 1) if $cnt > 1;
$template->param( 'catcode' => $catcodes->[0]) if $cnt == 1;
}
-my $CGIorganisations;
-my $member_of_institution;
-if ( C4::Context->preference("memberofinstitution") ) {
- my $organisations = get_institutions();
- my @orgs;
- my %org_labels;
- foreach my $organisation ( keys %$organisations ) {
- push @orgs, $organisation;
- $org_labels{$organisation} = $organisations->{$organisation}->{'surname'};
- }
- $member_of_institution = 1;
- $CGIorganisations = CGI::popup_menu(
- -id => 'organisations',
- -name => 'organisations',
- -labels => \%org_labels,
- -values => \@orgs,
- );
-}
-
my $lib_messages_loop = GetMessages( $borrowernumber, 'L', $branch );
if($lib_messages_loop){ $template->param(flagged => 1 ); }
# Computes full borrower address
my @fulladdress;
push @fulladdress, $borrower->{'streetnumber'} if ( $borrower->{'streetnumber'} );
-push @fulladdress, &GetRoadTypeDetails( $borrower->{'streettype'} ) if ( $borrower->{'streettype'} );
+push @fulladdress, C4::Koha::GetAuthorisedValueByCode( 'ROADTYPE', $borrower->{'streettype'} ) if ( $borrower->{'streettype'} );
push @fulladdress, $borrower->{'address'} if ( $borrower->{'address'} );
my $fast_cataloging = 0;
relprevissues => \@relprevissues,
displayrelissues => $displayrelissues,
inprocess => $inprocess,
- memberofinstution => $member_of_institution,
- CGIorganisations => $CGIorganisations,
- is_child => ($borrower->{'category_type'} eq 'C'),
+ is_child => ($borrowernumber && $borrower->{'category_type'} eq 'C'),
circview => 1,
soundon => C4::Context->preference("SoundOn"),
fast_cataloging => $fast_cataloging,
$session->param( 'stickyduedate', $duedatespec );
}
-my ($picture, $dberror) = GetPatronImage($borrower->{'cardnumber'});
+my ($picture, $dberror) = GetPatronImage($borrower->{'borrowernumber'});
$template->param( picture => 1 ) if $picture;
# get authorised values with type of BOR_NOTES
debt_confirmed => $debt_confirmed,
SpecifyDueDate => $duedatespec_allow,
CircAutocompl => C4::Context->preference("CircAutocompl"),
- AllowRenewalLimitOverride => C4::Context->preference("AllowRenewalLimitOverride"),
+ AllowRenewalLimitOverride => C4::Context->preference("AllowRenewalLimitOverride"),
export_remove_fields => C4::Context->preference("ExportRemoveFields"),
export_with_csv_profile => C4::Context->preference("ExportWithCsvProfile"),
canned_bor_notes_loop => $canned_notes,
+ debarments => GetDebarments({ borrowernumber => $borrowernumber }),
);
output_html_with_http_headers $query, $cookie, $template->output;