use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Context;
-use C4::Auth;
-use C4::Output;
-use C4::Members::AttributeTypes;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers );
use C4::Form::MessagingPreferences;
-use List::MoreUtils qw/uniq/;
-use C4::Members::Attributes qw(GetBorrowerAttributes);
-use Koha::Patron::Debarments qw(GetDebarments);
+use List::MoreUtils qw( uniq );
+use Scalar::Util qw( looks_like_number );
+use Koha::Patron::Attribute::Types;
+use Koha::Patron::Restriction::Types;
use Koha::Patron::Messages;
-use Koha::DateUtils;
use Koha::CsvProfiles;
+use Koha::Holds;
use Koha::Patrons;
+use Koha::Patron::Files;
use Koha::Token;
use Koha::Checkouts;
-use vars qw($debug);
-
-BEGIN {
- $debug = $ENV{DEBUG} || 0;
-}
-
my $input = CGI->new;
-$debug or $debug = $input->param('debug') || 0;
-
my $print = $input->param('print');
template_name => $template_name,
query => $input,
type => "intranet",
- authnotrequired => 0,
flagsrequired => { borrowers => 'edit_borrowers' },
- debug => 1,
}
);
my $borrowernumber = $input->param('borrowernumber');
$template->param( error => $error ) if ( $error );
my $patron = Koha::Patrons->find( $borrowernumber );
-my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
+my $logged_in_user = Koha::Patrons->find( $loggedinuser );
output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
my $category_type = $patron->category->category_type;
$patron->$_ and $template->param(flagged => 1) and last;
}
+$template->param(
+ restriction_types => scalar Koha::Patron::Restriction::Types->search()
+);
+
if ( $patron->is_debarred ) {
$template->param(
- debarments => scalar GetDebarments({ borrowernumber => $borrowernumber }),
+ 'userdebarred' => $patron->debarred,
+ 'debarredcomment' => $patron->debarredcomment,
);
+
if ( $patron->debarred ne "9999-12-31" ) {
$template->param( 'userdebarreddate' => $patron->debarred );
}
}
+
$template->param( flagged => 1 ) if $patron->account_locked;
my @relatives;
my $guarantor_relationships = $patron->guarantor_relationships;
-my @guarantees = $patron->guarantee_relationships->guarantees;
-my @guarantors = $guarantor_relationships->guarantors;
+my @guarantees = $patron->guarantee_relationships->guarantees->as_list;
+my @guarantors = $guarantor_relationships->guarantors->as_list;
if (@guarantors) {
push( @relatives, $_->id ) for @guarantors;
- push( @relatives, $_->id ) for $patron->siblings();
+ push( @relatives, $_->id ) for $patron->siblings->as_list;
}
else {
push( @relatives, $_->id ) for @guarantees;
$template->param( age_low => $patron->category->dateofbirthrequired );
$template->param( age_high => $patron->category->upperagelimit );
}
-$template->param( age => $patron->get_age );
# Generate CSRF token for upload and delete image buttons
$template->param(
);
if (C4::Context->preference('ExtendedPatronAttributes')) {
- my $attributes = C4::Members::Attributes::GetBorrowerAttributes($borrowernumber);
- my @classes = uniq( map {$_->{class}} @$attributes );
+ my @attributes = $patron->extended_attributes->as_list; # FIXME Must be improved!
+ my @classes = uniq( map {$_->type->class} @attributes );
@classes = sort @classes;
my @attributes_loop;
for my $class (@classes) {
my @items;
- for my $attr (@$attributes) {
- push @items, $attr if $attr->{class} eq $class
+ for my $attr (@attributes) {
+ push @items, $attr if $attr->type->class eq $class
}
my $av = Koha::AuthorisedValues->search({ category => 'PA_CLASS', authorised_value => $class });
my $lib = $av->count ? $av->next->lib : $class;
attributes_loop => \@attributes_loop
);
- my @types = C4::Members::AttributeTypes::GetAttributeTypes();
- if (scalar(@types) == 0) {
+ my $library_id = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
+ my $nb_of_attribute_types = Koha::Patron::Attribute::Types->search_with_library_limits({}, {}, $library_id)->count;
+ if ( $nb_of_attribute_types == 0 ) {
$template->param(no_patron_attribute_types => 1);
}
}
}
if ( C4::Context->preference("ExportCircHistory") ) {
- $template->param(csv_profiles => [ Koha::CsvProfiles->search({ type => 'marc' }) ]);
+ $template->param(csv_profiles => Koha::CsvProfiles->search({ type => 'marc' }));
}
my $patron_messages = Koha::Patron::Messages->search(
);
}
+my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
+my $waiting_holds = $holds->waiting;
+$template->param(
+ holds_count => $holds->count(),
+ WaitingHolds => $waiting_holds,
+);
+
+if ( C4::Context->preference('UseRecalls') ) {
+ my $waiting_recalls = $patron->recalls->search({ status => 'waiting' });
+ $template->param( waiting_recalls => $waiting_recalls );
+}
+
+my $no_issues_charge_guarantees = C4::Context->preference("NoIssuesChargeGuarantees");
+$no_issues_charge_guarantees = undef unless looks_like_number( $no_issues_charge_guarantees );
+if ( defined $no_issues_charge_guarantees ) {
+ my $guarantees_non_issues_charges = 0;
+ my $guarantees = $patron->guarantee_relationships->guarantees;
+ while ( my $g = $guarantees->next ) {
+ $guarantees_non_issues_charges += $g->account->non_issues_charges;
+ }
+ if ( $guarantees_non_issues_charges > $no_issues_charge_guarantees ) {
+ $template->param(
+ charges_guarantees => 1,
+ chargesamount_guarantees => $guarantees_non_issues_charges,
+ );
+ }
+}
+
+if ( $patron->has_overdues ) {
+ $template->param( odues => 1 );
+}
+my $issues = $patron->checkouts;
+
+my $balance = 0;
+$balance = $patron->account->balance;
+
+my $account = $patron->account;
+if( ( my $owing = $account->non_issues_charges ) > 0 ) {
+ my $noissuescharge = C4::Context->preference("noissuescharge") || 5; # FIXME If noissuescharge == 0 then 5, why??
+ $template->param(
+ charges => 1,
+ chargesamount => $owing,
+ )
+} elsif ( $balance < 0 ) {
+ $template->param(
+ credits => 1,
+ creditsamount => -$balance,
+ );
+}
+
+# if the expiry date is before today ie they have expired
+if ( $patron->is_expired ) {
+ #borrowercard expired, no issues
+ $template->param(
+ expired => "1",
+ );
+}
+# check for NotifyBorrowerDeparture
+elsif ( $patron->is_going_to_expire ) {
+ # borrower card soon to expire warn librarian
+ $template->param( "warndeparture" => $patron->dateexpiry ,
+ );
+ if (C4::Context->preference('ReturnBeforeExpiry')){
+ $template->param("returnbeforeexpiry" => 1);
+ }
+}
+
+
+my $has_modifications = Koha::Patron::Modifications->search( { borrowernumber => $borrowernumber } )->count;
+
$template->param(
patron => $patron,
issuecount => $patron->checkouts->count,
housebound_role => scalar $patron->housebound_role,
relatives_issues_count => $relatives_issues_count,
relatives_borrowernumbers => \@relatives,
+ logged_in_user => $logged_in_user,
+ files => Koha::Patron::Files->new( borrowernumber => $borrowernumber ) ->GetFilesInfo(),
+ has_modifications => $has_modifications,
);
+if ( C4::Context->preference('UseRecalls') ) {
+ $template->param(
+ recalls => $patron->recalls({},{ order_by => { -asc => 'recalldate' } })->filter_by_current,
+ specific_patron => 1,
+ );
+}
+
output_html_with_http_headers $input, $cookie, $template->output;