c34c8ee853
Currently, once a user is discharged, lifting the discharge debarment does not allow the user to ask for a discharge again. This patch adds the ability for a user to be discharged several times and to keep an history of the discharges. Test plan: - As a user, ask for a discharge. - As a librarian, allow the discharge. - Check that the requested and validated dates appear on the discharge panel of the borrower in the admin interface. - Lift the discharge debarment of the user. - Check that you can repeat these steps and that the new discharges are added in the discharge panel of the borrower in the admin interface. Please note that you will need to run misc/devel/update_dbix_class_files.pl after the SQL update. Adding a primary key to the discharges table was mandatory for DBIX::Class to be able to query with order_by. Signed-off-by: Indranil Das Gupta (L2C2 Technologies) <indradg@gmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@koha-community.org> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@unc.edu.ar>
134 lines
4.2 KiB
Perl
Executable file
134 lines
4.2 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# This file is part of Koha.
|
|
#
|
|
# Copyright 2013 BibLibre
|
|
#
|
|
# 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>.
|
|
|
|
=head1 NAME
|
|
|
|
discharges.pl
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Allows librarian to edit and/or manage borrowers' discharges
|
|
|
|
=cut
|
|
|
|
use Modern::Perl;
|
|
use Carp;
|
|
|
|
use CGI qw( -utf8 );
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::Members;
|
|
use C4::Reserves;
|
|
use C4::Letters;
|
|
use Koha::Borrower::Discharge;
|
|
|
|
use Koha::DateUtils;
|
|
|
|
my $input = new CGI;
|
|
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user({
|
|
template_name => 'members/discharge.tt',
|
|
query => $input,
|
|
type => 'intranet',
|
|
authnotrequired => 0,
|
|
flagsrequired => { 'borrowers' => '*' },
|
|
});
|
|
|
|
my $borrowernumber;
|
|
my $data;
|
|
if ( $input->param('borrowernumber') ) {
|
|
$borrowernumber = $input->param('borrowernumber');
|
|
|
|
# Getting member data
|
|
$data = GetMember( borrowernumber => $borrowernumber );
|
|
|
|
my $can_be_discharged = Koha::Borrower::Discharge::can_be_discharged({
|
|
borrowernumber => $borrowernumber
|
|
});
|
|
|
|
# Getting reserves
|
|
my @reserves = GetReservesFromBorrowernumber($borrowernumber);
|
|
my $has_reserves = scalar(@reserves);
|
|
|
|
# Generating discharge if needed
|
|
if ( $input->param('discharge') and $can_be_discharged ) {
|
|
my $is_discharged = Koha::Borrower::Discharge::count({
|
|
borrowernumber => $borrowernumber,
|
|
validated => 1,
|
|
});
|
|
unless ($is_discharged) {
|
|
Koha::Borrower::Discharge::discharge({
|
|
borrowernumber => $borrowernumber
|
|
});
|
|
}
|
|
eval {
|
|
my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf(
|
|
{ borrowernumber => $borrowernumber, branchcode => $data->{'branchcode'} } );
|
|
|
|
binmode(STDOUT);
|
|
print $input->header(
|
|
-type => 'application/pdf',
|
|
-charset => 'utf-8',
|
|
-attachment => "discharge_$borrowernumber.pdf",
|
|
);
|
|
open my $fh, '<', $pdf_path;
|
|
my @lines = <$fh>;
|
|
close $fh;
|
|
print @lines;
|
|
exit;
|
|
};
|
|
if ( $@ ) {
|
|
carp $@;
|
|
$template->param( messages => [ {type => 'error', code => 'unable_to_generate_pdf'} ] );
|
|
}
|
|
}
|
|
|
|
# Already generated discharges
|
|
my $validated_discharges = Koha::Borrower::Discharge::get_validated({
|
|
branchcode => $data->{'branchcode'},
|
|
});
|
|
|
|
$template->param(
|
|
borrowernumber => $borrowernumber,
|
|
biblionumber => $data->{'biblionumber'},
|
|
title => $data->{'title'},
|
|
initials => $data->{'initials'},
|
|
surname => $data->{'surname'},
|
|
borrowernumber => $borrowernumber,
|
|
firstname => $data->{'firstname'},
|
|
cardnumber => $data->{'cardnumber'},
|
|
categorycode => $data->{'categorycode'},
|
|
category_type => $data->{'category_type'},
|
|
categoryname => $data->{'description'},
|
|
address => $data->{'address'},
|
|
address2 => $data->{'address2'},
|
|
city => $data->{'city'},
|
|
zipcode => $data->{'zipcode'},
|
|
country => $data->{'country'},
|
|
phone => $data->{'phone'},
|
|
email => $data->{'email'},
|
|
branchcode => $data->{'branchcode'},
|
|
has_reserves => $has_reserves,
|
|
can_be_discharged => $can_be_discharged,
|
|
validated_discharges => $validated_discharges,
|
|
);
|
|
}
|
|
|
|
$template->param( dischargeview => 1, );
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|