ffzg/recall_notices.pl: added --interval and --dedup
[koha.git] / members / discharge.pl
index e2f703d..db74cfc 100755 (executable)
@@ -28,6 +28,7 @@ Allows librarian to edit and/or manage borrowers' discharges
 =cut
 
 use Modern::Perl;
+use Carp;
 
 use CGI qw( -utf8 );
 use C4::Auth;
@@ -35,48 +36,49 @@ use C4::Output;
 use C4::Members;
 use C4::Reserves;
 use C4::Letters;
-use Koha::Borrower::Discharge;
+use Koha::Patron::Discharge;
+use Koha::Patrons;
 
 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' => '*' },
+    flagsrequired   => { 'borrowers' => 'edit_borrowers' },
 });
 
-my $borrowernumber;
-my $data;
-if ( $input->param('borrowernumber') ) {
-    $borrowernumber = $input->param('borrowernumber');
+my $borrowernumber = $input->param('borrowernumber');
 
-    # Getting member data
-    $data = GetMember( borrowernumber => $borrowernumber );
+unless ( C4::Context->preference('useDischarge') ) {
+   print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber&nopermission=1");
+   exit;
+}
 
-    my $can_be_discharged = Koha::Borrower::Discharge::can_be_discharged({
-        borrowernumber => $borrowernumber
-    });
+my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
+my $patron = Koha::Patrons->find( $borrowernumber );
+output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
 
-    # Getting reserves
-    my @reserves    = GetReservesFromBorrowernumber($borrowernumber);
-    my $has_reserves = scalar(@reserves);
+my $can_be_discharged = Koha::Patron::Discharge::can_be_discharged({
+    borrowernumber => $borrowernumber
+});
 
-    # Generating discharge if needed
-    if ( $input->param('discharge') and $can_be_discharged ) {
-        my $is_discharged = Koha::Borrower::Discharge::count({
-            borrowernumber => $borrowernumber,
-            validated      => 1,
+# Generating discharge if needed
+if ( $input->param('discharge') and $can_be_discharged ) {
+    my $is_discharged = Koha::Patron::Discharge::is_discharged({
+        borrowernumber => $borrowernumber,
+    });
+    unless ($is_discharged) {
+        Koha::Patron::Discharge::discharge({
+            borrowernumber => $borrowernumber
         });
-        unless ($is_discharged) {
-            Koha::Borrower::Discharge::discharge({
-                borrowernumber => $borrowernumber
-            });
-        }
-        my $pdf_path = Koha::Borrower::Discharge::generate_as_pdf(
-            { borrowernumber => $borrowernumber, } );
+    }
+    eval {
+        my $pdf_path = Koha::Patron::Discharge::generate_as_pdf(
+            { borrowernumber => $borrowernumber, branchcode => $patron->branchcode } );
 
         binmode(STDOUT);
         print $input->header(
@@ -89,33 +91,24 @@ if ( $input->param('borrowernumber') ) {
         close $fh;
         print @lines;
         exit;
+    };
+    if ( $@ ) {
+        carp $@;
+        $template->param( messages => [ {type => 'error', code => 'unable_to_generate_pdf'} ] );
     }
-
-    $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,
-    );
 }
 
+# Already generated discharges
+my @validated_discharges = Koha::Patron::Discharge::get_validated({
+    borrowernumber => $borrowernumber,
+});
+
+$template->param(
+    patron => $patron,
+    can_be_discharged => $can_be_discharged,
+    validated_discharges => \@validated_discharges,
+);
+
 $template->param( dischargeview => 1, );
 
 output_html_with_http_headers $input, $cookie, $template->output;