(bug #3667) fix borrowers cleanup
authorNahuel ANGELINETTI <nahuel.angelinetti@biblibre.com>
Fri, 25 Sep 2009 14:32:41 +0000 (16:32 +0200)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Fri, 25 Sep 2009 15:30:54 +0000 (17:30 +0200)
This add a check of borrower expiry date, and don't delete the borrower if he's still active.

C4/Members.pm
tools/cleanborrowers.pl

index 26f1273..4ac9917 100644 (file)
@@ -1858,9 +1858,8 @@ this function get all borrowers who haven't borrowed since the date given on inp
 =cut
 
 sub GetBorrowersWhoHaveNotBorrowedSince {
-### TODO : It could be dangerous to delete Borrowers who have just been entered and who have not yet borrowed any book. May be good to add a dateexpiry or dateenrolled filter.      
-       
-                my $filterdate = shift||POSIX::strftime("%Y-%m-%d",localtime());
+    my $filterdate = shift||POSIX::strftime("%Y-%m-%d",localtime());
+    my $filterexpiry = shift;
     my $filterbranch = shift || 
                         ((C4::Context->preference('IndependantBranches') 
                              && C4::Context->userenv 
@@ -1880,7 +1879,10 @@ sub GetBorrowersWhoHaveNotBorrowedSince {
     if ($filterbranch && $filterbranch ne ""){ 
         $query.=" AND borrowers.branchcode= ?";
         push @query_params,$filterbranch;
-    }    
+    }
+    if($filterexpiry){
+        $query .= " AND dateexpiry < NOW() ";
+    }
     $query.=" GROUP BY borrowers.borrowernumber";
     if ($filterdate){ 
         $query.=" HAVING latestissue <? OR latestissue IS NULL";
index 908ba62..1a6c9bc 100755 (executable)
@@ -71,7 +71,7 @@ if ( $params->{'step2'} ) {
     my $totalDel;
     my $membersToDelete;
     if ($checkboxes{borrower}) {
-        $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1);
+        $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1, 1);
         $totalDel = scalar @$membersToDelete;
             
     }
@@ -109,7 +109,7 @@ if ( $params->{'step3'} ) {
     
     # delete members
     if ($do_delete) {
-        my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1);
+        my $membersToDelete = GetBorrowersWhoHaveNotBorrowedSince($filterdate1, 1);
         $totalDel = scalar(@$membersToDelete);
         $radio    = $params->{'radio'};
         if ( $radio eq 'trash' ) {