Bug 24008: Display a warning message when deleting a patron with outstanding credits
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 2 Dec 2019 13:24:04 +0000 (14:24 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 20 Jan 2020 14:03:52 +0000 (14:03 +0000)
So far nothing is displayed if a librarian removes patron with
outstanding credits.
Note that outstanding debits blocks the deletion.

Test plan:
- Create a patron with outstanding credit
- Create a patron with outstanding debits
- Delete the 2 patrons
=> With credit - You get a warning but do not block the deletion
=> With debits - You get a warning message that blocks the deletion

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/modules/members/deletemem.tt
members/deletemem.pl

index 74cef2a..9dec86c 100644 (file)
             <main>
 
     [% INCLUDE 'members-toolbar.inc' %]
-    [% IF ( ItemsOnIssues || charges || guarantees ) %]
+    [% IF ItemsOnIssues || debits || is_guarantor %]
         <div class="dialog alert">
         <h3>Cannot delete patron</h3>
             <ul>
             [% IF ( ItemsOnIssues ) %]
                 <li>Patron has [% ItemsOnIssues | html %] item(s) checked out.</li>
             [% END %]
-            [% IF ( charges ) %]
-                <li>Patron has [% charges | $Price %] in fines.</li>
+            [% IF debits %]
+                <li>Patron has [% debits | $Price %] in fines.</li>
             [% END %]
-            [% IF ( guarantees ) %]
+            [% IF is_guarantor %]
                 <li>Patron's record has guaranteed accounts attached.</li>
             [% END %]
             </ul>
             <h3>Patron has [% ItemsOnHold | html %] hold(s). Deleting patron cancels all their holds.</h3></br>
             [% END %]
             <h3>Are you sure you want to delete the patron [% patron.firstname | html %] [% patron.surname | html %]? This cannot be undone.</h3>
+
+            [% IF credits %]
+                <h4>Patron has a [% credits | $Price %] credit.</h4>
+            [% END %]
             <form action="/cgi-bin/koha/members/deletemem.pl">
                 <input type="hidden" name="csrf_token" value="[% csrf_token | html %]" />
                 <input type="hidden" name="member" value="[% patron.borrowernumber | html %]"/>
index 1ae2c66..f0f754a 100755 (executable)
@@ -56,7 +56,8 @@ my $logged_in_user = Koha::Patrons->find( $loggedinuser );
 my $patron         = Koha::Patrons->find( $member );
 output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
 
-my $charges = $patron->account->non_issues_charges;
+my $debits = $patron->account->outstanding_debits->total_outstanding;
+my $credits = $patron->account->outstanding_credits->total_outstanding;
 my $countissues = $patron->checkouts->count;
 my $userenv = C4::Context->userenv;
 
@@ -86,32 +87,22 @@ my $op = $input->param('op') || 'delete_confirm';
 my $dbh = C4::Context->dbh;
 my $is_guarantor = $patron->guarantee_relationships->count;
 my $countholds = $dbh->selectrow_array("SELECT COUNT(*) FROM reserves WHERE borrowernumber=?", undef, $member);
-if ( $op eq 'delete_confirm' or $countissues > 0 or $charges or $is_guarantor ) {
 
+$template->param(
+    patron        => $patron,
+    ItemsOnIssues => $countissues,
+    debits        => $debits,
+    credits       => $credits,
+    is_guarantor  => $is_guarantor,
+    ItemsOnHold   => $countholds,
+);
+
+if ( $op eq 'delete_confirm' or $countissues > 0 or $debits or $is_guarantor ) {
     $template->param(
-        patron => $patron,
+        op         => 'delete_confirm',
+        csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }),
     );
-    if ($countissues >0) {
-        $template->param(ItemsOnIssues => $countissues);
-    }
-    if ( $charges > 0 ) {
-        $template->param(charges => $charges);
-    }
-    if ( $is_guarantor ) {
-        $template->param( guarantees => 1 );
-    }
-    if($countholds > 0){
-        $template->param(ItemsOnHold => $countholds);
-    }
-    # This is silly written but reflect the same conditions as above
-    if ( not $countissues > 0 and not $charges > 0 and not $is_guarantor ) {
-        $template->param(
-            op         => 'delete_confirm',
-            csrf_token => Koha::Token->new->generate_csrf({ session_id => scalar $input->cookie('CGISESSID') }),
-        );
-    }
 } elsif ( $op eq 'delete_confirmed' ) {
-
     output_and_exit( $input, $cookie, $template, 'wrong_csrf_token' )
         unless Koha::Token->new->check_csrf( {
             session_id => $input->cookie('CGISESSID'),