# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Carp;
+use Carp qw( carp );
-use C4::Auth qw(:DEFAULT get_session);
+use C4::Auth qw( get_template_and_user );
use CGI qw( -utf8 );
use C4::Context;
-use C4::Output;
-use C4::Log;
-use C4::Debug;
-use C4::Branch;
-use C4::Members;
+use C4::Output qw( output_html_with_http_headers );
+use Koha::Patrons;
use Koha::Patron::Discharge;
-use Koha::DateUtils;
-my $input = new CGI;
+my $input = CGI->new;
unless ( C4::Context->preference('useDischarge') ) {
print $input->redirect("/cgi-bin/koha/errors/404.pl");
exit;
}
-my $op = $input->param("op");
+my $op = $input->param("op") // '';
# Getting the template and auth
my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
template_name => "opac-discharge.tt",
query => $input,
type => "opac",
- debug => 1,
});
+my $can_be_discharged = Koha::Patron::Discharge::can_be_discharged({ borrowernumber => $loggedinuser });
+if ($can_be_discharged == 0) {
+ $template->param( has_checkouts => 1 );
+}
+
+my $pending = Koha::Patron::Discharge::count({
+ borrowernumber => $loggedinuser,
+ pending => 1,
+});
+my $available = Koha::Patron::Discharge::is_discharged({borrowernumber => $loggedinuser});
+
if ( $op eq 'request' ) {
+ if ($pending || $available) {
+ # Request already done
+ print $input->redirect("/cgi-bin/koha/opac-discharge.pl");
+ exit;
+ }
my $success = Koha::Patron::Discharge::request({
borrowernumber => $loggedinuser,
});
-
if ($success) {
$template->param( success => 1 );
}
}
}
elsif ( $op eq 'get' ) {
+ unless ($available) {
+ # No valid discharge to get
+ print $input->redirect("/cgi-bin/koha/opac-discharge.pl");
+ exit;
+ }
eval {
# Getting member data
- my $data = GetMember( borrowernumber => $loggedinuser );
+ my $patron = Koha::Patrons->find( $loggedinuser );
my $pdf_path = Koha::Patron::Discharge::generate_as_pdf({
borrowernumber => $loggedinuser,
- branchcode => $data->{'branchcode'},
+ branchcode => $patron->branchcode,
});
binmode(STDOUT);
my @lines = <$fh>;
close $fh;
print @lines;
- exit;
};
if ( $@ ) {
carp $@;
$template->param( messages => [ {type => 'error', code => 'unable_to_generate_pdf'} ] );
+ } else {
+ # no error, pdf is sent, so stop sending data to browser
+ exit;
}
}
else {
- my $pending = Koha::Patron::Discharge::count({
- borrowernumber => $loggedinuser,
- pending => 1,
- });
- my $available = Koha::Patron::Discharge::count({
- borrowernumber => $loggedinuser,
- validated => 1,
- });
$template->param(
- available => $available && Koha::Patron::Discharge::is_discharged({borrowernumber => $loggedinuser}),
+ available => $available,
pending => $pending,
);
}