use C4::Auth;
use C4::Koha;
use C4::Circulation;
+use C4::External::BakerTaylor qw( image_url link_url );
use C4::Reserves;
use C4::Members;
-use C4::Members::AttributeTypes;
-use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
use C4::Output;
use C4::Biblio;
use C4::Items;
use C4::Letters;
use Koha::Account::Lines;
+use Koha::Biblios;
use Koha::Libraries;
use Koha::DateUtils;
use Koha::Holds;
use Koha::Database;
use Koha::ItemTypes;
use Koha::Patron::Attribute::Types;
+use Koha::Patrons;
use Koha::Patron::Messages;
use Koha::Patron::Discharge;
use Koha::Patrons;
+use Koha::Token;
use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE';
my $query = new CGI;
-BEGIN {
- if (C4::Context->preference('BakerTaylorEnabled')) {
- require C4::External::BakerTaylor;
- import C4::External::BakerTaylor qw(&image_url &link_url);
- }
-}
-
# CAS single logout handling
# Will print header and exit
C4::Context->preference('casAuthentication') and C4::Auth_with_cas::logout_if_required($query);
# get borrower information ....
my $patron = Koha::Patrons->find( $borrowernumber );
+
+if( $query->param('update_arc') && C4::Context->preference("AllowPatronToControlAutorenewal") ){
+ die "Wrong CSRF token"
+ unless Koha::Token->new->check_csrf({
+ session_id => scalar $query->cookie('CGISESSID'),
+ token => scalar $query->param('csrf_token'),
+ });
+
+ my $autorenew_checkouts = $query->param('borrower_autorenew_checkouts');
+ $patron->autorenew_checkouts( $autorenew_checkouts )->store() if defined $autorenew_checkouts;
+}
+
my $borr = $patron->unblessed;
# unblessed is a hash vs. object/undef. Hence the use of curly braces here.
my $borcat = $borr ? $borr->{categorycode} : q{};
my $amountoutstanding = $patron->account->balance;
my $no_renewal_amt = C4::Context->preference( 'OPACFineNoRenewals' );
$no_renewal_amt = undef unless looks_like_number( $no_renewal_amt );
+my $amountoutstandingfornewal =
+ C4::Context->preference("OPACFineNoRenewalsIncludeCredit")
+ ? $amountoutstanding
+ : $patron->account->outstanding_debits->total_outstanding;
if ( C4::Context->preference('OpacRenewalAllowed')
&& defined($no_renewal_amt)
- && $amountoutstanding > $no_renewal_amt )
+ && $amountoutstandingfornewal > $no_renewal_amt )
{
$borr->{'flagged'} = 1;
$canrenew = 0;
$template->param(
renewal_blocked_fines => $no_renewal_amt,
- renewal_blocked_fines_amountoutstanding => $amountoutstanding,
+ renewal_blocked_fines_amountoutstanding => $amountoutstandingfornewal,
);
}
+my $maxoutstanding = C4::Context->preference('maxoutstanding');
+if ( $amountoutstanding && ( $amountoutstanding > $maxoutstanding ) ){
+ $borr->{blockedonfines} = 1;
+}
+
# Warningdate is the date that the warning starts appearing
if ( $borr->{'dateexpiry'} && C4::Context->preference('NotifyBorrowerDeparture') ) {
my $days_to_expiry = Date_to_Days( $warning_year, $warning_month, $warning_day ) - Date_to_Days( $today_year, $today_month, $today_day );
surname => $borr->{surname},
RENEW_ERROR => $renew_error,
borrower => $borr,
+ csrf_token => Koha::Token->new->generate_csrf({
+ session_id => scalar $query->cookie('CGISESSID'),
+ }),
);
#get issued items ....
{
borrowernumber => $patron->borrowernumber,
amountoutstanding => { '>' => 0 },
- accounttype => [ 'F', 'FU', 'L' ],
+ debit_type_code => [ 'OVERDUE', 'LOST' ],
itemnumber => $issue->{itemnumber}
},
);
{
borrowernumber => $patron->borrowernumber,
amountoutstanding => { '>' => 0 },
- accounttype => 'Rent',
+ debit_type_code => { 'LIKE' => 'RENT_%' },
itemnumber => $issue->{itemnumber}
}
);
$issue->{rentalfines} = $rental_fines->total_outstanding;
- my $marcrecord = GetMarcBiblio({
- biblionumber => $issue->{'biblionumber'},
- embed_items => 1,
- opac => 1,
- borcat => $borcat });
- $issue->{'subtitle'} = GetRecordValue('subtitle', $marcrecord, GetFrameworkCode($issue->{'biblionumber'}));
# check if item is renewable
my ($status,$renewerror) = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} );
($issue->{'renewcount'},$issue->{'renewsallowed'},$issue->{'renewsleft'}) = GetRenewCount($borrowernumber, $issue->{'itemnumber'});
$issue->{'imageurl'} = getitemtypeimagelocation( 'opac', $itemtypes->{$itemtype}->{'imageurl'} );
$issue->{'description'} = $itemtypes->{$itemtype}->{'description'};
}
+
+ $issue->{biblio_object} = Koha::Biblios->find($issue->{biblionumber});
push @issuedat, $issue;
$count++;
my $isbn = GetNormalizedISBN($issue->{'isbn'});
$issue->{normalized_isbn} = $isbn;
+ my $marcrecord = GetMarcBiblio({
+ biblionumber => $issue->{'biblionumber'},
+ embed_items => 1,
+ opac => 1,
+ borcat => $borcat });
$issue->{normalized_upc} = GetNormalizedUPC( $marcrecord, C4::Context->preference('marcflavour') );
# My Summary HTML
$template->param( OVERDUES => \@overdues );
$template->param( overdues_count => $overdues_count );
-my $show_barcode = Koha::Patron::Attribute::Types->search(
+my $show_barcode = Koha::Patron::Attribute::Types->search( # FIXME we should not need this search
{ code => ATTRIBUTE_SHOW_BARCODE } )->count;
if ($show_barcode) {
- my $patron_show_barcode = GetBorrowerAttributeValue($borrowernumber, ATTRIBUTE_SHOW_BARCODE);
- undef $show_barcode if defined($patron_show_barcode) && !$patron_show_barcode;
+ my $patron_show_barcode = $patron->get_extended_attribute(ATTRIBUTE_SHOW_BARCODE);
+ undef $show_barcode if $patron_show_barcode and not $patron_show_barcode->attribute;
}
$template->param( show_barcode => 1 ) if $show_barcode;
if (C4::Context->preference("OPACAmazonCoverImages") or
C4::Context->preference("GoogleJackets") or
C4::Context->preference("BakerTaylorEnabled") or
- C4::Context->preference("SyndeticsCoverImages")) {
+ C4::Context->preference("SyndeticsCoverImages") or
+ ( C4::Context->preference('OPACCustomCoverImages') and C4::Context->preference('CustomCoverImagesURL') )
+) {
$template->param(JacketImages=>1);
}
if ( C4::Context->preference('AllowPatronToSetCheckoutsVisibilityForGuarantor')
|| C4::Context->preference('AllowStaffToSetCheckoutsVisibilityForGuarantor') )
{
- my @relatives =
- Koha::Database->new()->schema()->resultset("Borrower")->search(
- {
- privacy_guarantor_checkouts => 1,
- 'me.guarantorid' => $borrowernumber
- },
- { prefetch => [ { 'issues' => { 'item' => 'biblio' } } ] }
- );
+ my @relatives;
+ # Filter out guarantees that don't want guarantor to see checkouts
+ foreach my $gr ( $patron->guarantee_relationships() ) {
+ my $g = $gr->guarantee;
+ push( @relatives, $g ) if $g->privacy_guarantor_checkouts;
+ }
$template->param( relatives => \@relatives );
}
+if ( C4::Context->preference('AllowPatronToSetFinesVisibilityForGuarantor')
+ || C4::Context->preference('AllowStaffToSetFinesVisibilityForGuarantor') )
+{
+ my @relatives_with_fines;
+ # Filter out guarantees that don't want guarantor to see checkouts
+ foreach my $gr ( $patron->guarantee_relationships() ) {
+ my $g = $gr->guarantee;
+ push( @relatives_with_fines, $g ) if $g->privacy_guarantor_fines;
+ }
+ $template->param( relatives_with_fines => \@relatives_with_fines );
+}
+
+
$template->param(
patron_messages => $patron_messages,
opacnote => $borr->{opacnote},