Bug 15548: Move new patron related code to Patron*
[koha.git] / opac / opac-discharge.pl
index 8338d05..c9dea91 100755 (executable)
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use Modern::Perl;
+use Carp;
 
 use C4::Auth qw(:DEFAULT get_session);
-use CGI;
+use CGI qw( -utf8 );
 use C4::Context;
 use C4::Output;
 use C4::Log;
 use C4::Debug;
 use C4::Branch;
 use C4::Members;
-use Koha::Borrower::Discharge;
+use Koha::Patron::Discharge;
 use Koha::DateUtils;
 
 my $input = new CGI;
@@ -43,7 +44,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
 });
 
 if ( $op eq 'request' ) {
-    my $success = Koha::Borrower::Discharge::request({
+    my $success = Koha::Patron::Discharge::request({
         borrowernumber => $loggedinuser,
     });
 
@@ -55,36 +56,47 @@ if ( $op eq 'request' ) {
     }
 }
 elsif ( $op eq 'get' ) {
-    my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf({
-        borrowernumber => $loggedinuser
-    });
+    eval {
 
-    print $input->header(
-        -type       => 'application/pdf',
-        -charset    => 'utf-8',
-        -attachment => "discharge_$loggedinuser.pdf",
-    );
-    open my $fh, '<', $pdf_path;
-    my @lines = <$fh>;
-    close $fh;
-    print @lines;
-    exit;
+        # Getting member data
+        my $data = GetMember( borrowernumber => $loggedinuser );
+        my $pdf_path = Koha::Patron::Discharge::generate_as_pdf({
+            borrowernumber => $loggedinuser,
+            branchcode => $data->{'branchcode'},
+        });
+
+        binmode(STDOUT);
+        print $input->header(
+            -type       => 'application/pdf',
+            -charset    => 'utf-8',
+            -attachment => "discharge_$loggedinuser.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'} ] );
+    }
 }
 else {
-    my $pending = Koha::Borrower::Discharge::count({
+    my $pending = Koha::Patron::Discharge::count({
         borrowernumber => $loggedinuser,
         pending        => 1,
     });
-    my $available = Koha::Borrower::Discharge::count({
+    my $available = Koha::Patron::Discharge::count({
         borrowernumber => $loggedinuser,
         validated      => 1,
     });
     $template->param(
-        available => $available,
+        available => $available && Koha::Patron::Discharge::is_discharged({borrowernumber => $loggedinuser}),
         pending   => $pending,
     );
 }
 
 $template->param( dischargeview => 1 );
 
-output_html_with_http_headers $input, $cookie, $template->output;
+output_html_with_http_headers $input, $cookie, $template->output, undef, { force_no_caching => 1 };