dfa606bcf5
This new feature shows a patron how much they have saved by using the library rather than purchasing items. Savings are calculated based on item replacement prices. The system preference allows you to choose where to display the savings - the user page, the summary box on the OPAC homepage, or the checkout history page. To test: 1. Update database and restart services 2. Confirm the new OPACShowSavings system preference is found in the OPAC tab of Administration -> global system preferences. There should be no options selected. 3. Find a patron with a checkout history, or check out a few items to a patron. 4. Test with different values of OPACShowSavings and confirm that savings are shown in the expected places. Sponsored-by: Horowhenua Libraries Trust Signed-off-by: Marie-Luce <marie-luce.laflamme@inlibro.com> Signed-off-by: Axelle <axelle.clarisse@univ-amu.fr> Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
123 lines
4.2 KiB
Perl
Executable file
123 lines
4.2 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# This file is part of Koha.
|
|
#
|
|
# Parts Copyright (C) 2013 Mark Tompsett
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
|
|
use Modern::Perl;
|
|
use CGI qw ( -utf8 );
|
|
use C4::Auth qw( get_template_and_user );
|
|
use C4::Output qw( output_html_with_http_headers );
|
|
use Koha::Quotes;
|
|
use C4::Members;
|
|
use C4::Overdues qw( checkoverdues );
|
|
use Koha::Checkouts;
|
|
use Koha::Holds;
|
|
use Koha::AdditionalContents;
|
|
use Koha::Patron::Messages;
|
|
|
|
my $input = CGI->new;
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "opac-main.tt",
|
|
type => "opac",
|
|
query => $input,
|
|
authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
|
|
}
|
|
);
|
|
|
|
my $casAuthentication = C4::Context->preference('casAuthentication');
|
|
$template->param(
|
|
casAuthentication => $casAuthentication,
|
|
);
|
|
|
|
my $homebranch = $ENV{OPAC_BRANCH_DEFAULT};
|
|
if (C4::Context->userenv) {
|
|
$homebranch = C4::Context->userenv->{'branch'};
|
|
}
|
|
if (defined $input->param('branch') and length $input->param('branch')) {
|
|
$homebranch = $input->param('branch');
|
|
}
|
|
elsif (C4::Context->userenv and defined $input->param('branch') and length $input->param('branch') == 0 ){
|
|
$homebranch = "";
|
|
}
|
|
|
|
my $news_id = $input->param('news_id');
|
|
my $koha_news;
|
|
|
|
if (defined $news_id){
|
|
$koha_news = Koha::AdditionalContents->search({ idnew => $news_id, location => ['opac_only', 'staff_and_opac'] }); # get news that is not staff-only news
|
|
if ( $koha_news->count > 0){
|
|
$template->param( news_item => $koha_news->next );
|
|
} else {
|
|
$template->param( single_news_error => 1 );
|
|
}
|
|
} else {
|
|
$koha_news = Koha::AdditionalContents->search_for_display(
|
|
{
|
|
category => 'news',
|
|
location => ['opac_only', 'staff_and_opac'],
|
|
lang => $template->lang,
|
|
library_id => $homebranch,
|
|
}
|
|
);
|
|
}
|
|
|
|
# For dashboard
|
|
my $patron = Koha::Patrons->find( $borrowernumber );
|
|
|
|
if ( $patron ) {
|
|
my $checkouts = Koha::Checkouts->search({ borrowernumber => $borrowernumber })->count;
|
|
my ( $overdues_count, $overdues ) = checkoverdues($borrowernumber);
|
|
my $holds_pending = Koha::Holds->search({ borrowernumber => $borrowernumber, found => undef })->count;
|
|
my $holds_waiting = Koha::Holds->search({ borrowernumber => $borrowernumber })->waiting->count;
|
|
my $patron_messages = Koha::Patron::Messages->search(
|
|
{
|
|
borrowernumber => $borrowernumber,
|
|
message_type => 'B',
|
|
});
|
|
my $patron_note = $patron->opacnote;
|
|
my $total = $patron->account->balance;
|
|
my $saving_display = C4::Context->preference('OPACShowSavings');
|
|
my $savings = 0;
|
|
if ( $saving_display =~ /summary/ ) {
|
|
$savings = $patron->get_savings;
|
|
}
|
|
if ( $checkouts > 0 || $overdues_count > 0 || $holds_pending > 0 || $holds_waiting > 0 || $total > 0 || $patron_note || $patron_messages->count || $savings > 0 ) {
|
|
$template->param(
|
|
dashboard_info => 1,
|
|
checkouts => $checkouts,
|
|
overdues => $overdues_count,
|
|
holds_pending => $holds_pending,
|
|
holds_waiting => $holds_waiting,
|
|
total_owing => $total,
|
|
patron_messages => $patron_messages,
|
|
opacnote => $patron_note,
|
|
savings => $savings,
|
|
);
|
|
}
|
|
}
|
|
|
|
$template->param(
|
|
koha_news => $koha_news,
|
|
branchcode => $homebranch,
|
|
daily_quote => Koha::Quotes->get_daily_quote(),
|
|
);
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|