[Koha-patches] [PATCH 26/55] Change debarring system (MT2263)

Henri-Damien LAURENT henridamien.laurent at biblibre.com
Wed Mar 10 22:26:08 CET 2010


Now when a user is debarred, you set a end date, and can put a comment.
This patch is the first, it need some improvement, but works globaly well.
If an overdue generate a debar, the debar date is set to 9999-12-31.

show debar date on member detail
This patch show debar date, if the member is debarred, and he have a valid date(not unlimited debar).

add debar date in circulation
This patch add the debar date if it's not unlimited, in circulation.pl

rework on member edition
This change the way to edit user debar date/comment, to follow nicolas' mockup.

(bug #MT2263) fix functions for debarring

this fix ismemberblock and patronflags for new debarring system

Signed-off-by: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
---
 C4/Circulation.pm                                  |    9 ++-
 C4/Members.pm                                      |   54 +++++-------------
 C4/Overdues.pm                                     |   20 ++++--
 circ/circulation.pl                                |    9 +++
 circ/returns.pl                                    |    5 +-
 .../atomicupdate/0011-debarred-modifications.pl    |    8 +++
 .../prog/en/modules/circ/circulation.tmpl          |    9 ++-
 .../prog/en/modules/members/memberentrygen.tmpl    |   54 ++++++++++++++++-
 .../prog/en/modules/members/moremember.tmpl        |    8 +--
 members/memberentry.pl                             |   21 +++++--
 members/moremember.pl                              |   11 +++-
 members/setdebar.pl                                |   61 --------------------
 misc/cronjobs/overdue_notices.pl                   |    2 +-
 opac/opac-reserve.pl                               |    2 +-
 opac/opac-user.pl                                  |    3 +-
 15 files changed, 145 insertions(+), 131 deletions(-)
 create mode 100644 installer/data/mysql/atomicupdate/0011-debarred-modifications.pl
 delete mode 100755 members/setdebar.pl

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 03988f1..be7e8f1 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -709,8 +709,13 @@ sub CanBookBeIssued {
     if ( $borrower->{flags}->{'LOST'} ) {
         $issuingimpossible{CARD_LOST} = 1;
     }
-    if ( $borrower->{flags}->{'DBARRED'} ) {
-        $issuingimpossible{DEBARRED} = 1;
+    if ( $borrower->{flags}->{'DEBARRED'} ) {
+		if (my $dateenddebarred=$borrower->{flags}->{'DEBARRED'}->{'dateend'}){
+        	$issuingimpossible{DEBARRED} = format_date($dateenddebarred);
+		}
+		else {
+        	$issuingimpossible{DEBARRED} = 1;
+		}
     }
     if ( $borrower->{'dateexpiry'} eq '0000-00-00') {
         $issuingimpossible{EXPIRED} = 1;
diff --git a/C4/Members.pm b/C4/Members.pm
index a691c52..8e669b1 100644
--- a/C4/Members.pm
+++ b/C4/Members.pm
@@ -22,7 +22,7 @@ use strict;
 use C4::Context;
 use C4::Dates qw(format_date_in_iso);
 use Digest::MD5 qw(md5_base64);
-use Date::Calc qw/Today Add_Delta_YM/;
+use Date::Calc qw/Today Add_Delta_YM Date_to_Days check_date/;
 use C4::Log; # logaction
 use C4::Overdues;
 use C4::Reserves;
@@ -471,13 +471,15 @@ sub patronflags {
         $flaginfo{'noissues'} = 1;
         $flags{'LOST'}        = \%flaginfo;
     }
-    if (   $patroninformation->{'debarred'}
-        && $patroninformation->{'debarred'} == 1 )
-    {
-        my %flaginfo;
-        $flaginfo{'message'}  = 'Borrower is Debarred.';
-        $flaginfo{'noissues'} = 1;
-        $flags{'DBARRED'}     = \%flaginfo;
+    if ( $patroninformation->{'debarred'} && check_date(split(/-/,$patroninformation->{'debarred'})) ){
+        if(Date_to_Days(Date::Calc::Today) < Date_to_Days(split(/-/,$patroninformation->{'debarred'}) )){
+            my %flaginfo;
+            $flaginfo{'message'}  = 'Borrower is Debarred.';
+            $flaginfo{'noissues'} = 1;
+            $flaginfo{'dateend'} = $patroninformation->{'debarred'};
+            $flaginfo{'comment'} = $patroninformation->{'debarredcomment'};
+            $flags{'DEBARRED'}     = \%flaginfo;
+        }
     }
     if (   $patroninformation->{'borrowernotes'}
         && $patroninformation->{'borrowernotes'} )
@@ -606,36 +608,9 @@ sub IsMemberBlocked {
 
     return (-1, $latedocs) if $latedocs > 0;
 
-	my $strsth=qq{
-            SELECT
-            ADDDATE(returndate, finedays * DATEDIFF(returndate,date_due) ) AS blockingdate,
-            DATEDIFF(ADDDATE(returndate, finedays * DATEDIFF(returndate,date_due)),NOW()) AS blockedcount
-            FROM old_issues
-	};
-    # or if he must wait to loan
-    if(C4::Context->preference("item-level_itypes")){
-        $strsth.=
-		qq{ LEFT JOIN items ON (items.itemnumber=old_issues.itemnumber)
-            LEFT JOIN issuingrules ON (issuingrules.itemtype=items.itype)}
-    }else{
-        $strsth .= 
-		qq{ LEFT JOIN items ON (items.itemnumber=old_issues.itemnumber)
-            LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber=items.biblioitemnumber)
-            LEFT JOIN issuingrules ON (issuingrules.itemtype=biblioitems.itemtype) };
-    }
-	$strsth.=
-        qq{ WHERE finedays IS NOT NULL
-            AND  date_due < returndate
-            AND borrowernumber = ?
-            ORDER BY blockingdate DESC, blockedcount DESC
-            LIMIT 1};
-	$sth=$dbh->prepare($strsth);
-    $sth->execute($borrowernumber);
-    my $row = $sth->fetchrow_hashref;
-    my $blockeddate  = $row->{'blockeddate'};
-    my $blockedcount = $row->{'blockedcount'};
+    my $blockeddate = CheckBorrowerDebarred($borrowernumber);
 
-    return (1, $blockedcount) if $blockedcount > 0;
+    return (1, $blockeddate) if $blockeddate;
 
     return 0
 }
@@ -2027,7 +2002,7 @@ sub GetBorrowersNamesAndLatestIssue {
 
 =over 4
 
-my $success = DebarMember( $borrowernumber );
+my $success = DebarMember( $borrowernumber, $todate );
 
 marks a Member as debarred, and therefore unable to checkout any more
 items.
@@ -2041,12 +2016,13 @@ true on success, false on failure
 
 sub DebarMember {
     my $borrowernumber = shift;
+    my $todate = shift;
 
     return unless defined $borrowernumber;
     return unless $borrowernumber =~ /^\d+$/;
 
     return ModMember( borrowernumber => $borrowernumber,
-                      debarred       => 1 );
+                      debarred       => $todate );
     
 }
 
diff --git a/C4/Overdues.pm b/C4/Overdues.pm
index 1d48526..ca8cbd0 100644
--- a/C4/Overdues.pm
+++ b/C4/Overdues.pm
@@ -1029,7 +1029,7 @@ sub GetOverduerules {
 
 Check if the borrowers is already debarred
 
-C<$debarredstatus> return 0 for not debarred and return 1 for debarred
+C<$debarredstatus> return 0 for not debarred and return end of debar date for debarred
 
 C<$borrowernumber> contains the borrower number
 
@@ -1043,32 +1043,38 @@ sub CheckBorrowerDebarred {
         SELECT debarred
         FROM borrowers
         WHERE borrowernumber=?
+        AND debarred > NOW()
     |;
     my $sth = $dbh->prepare($query);
     $sth->execute($borrowernumber);
-    my ($debarredstatus) = $sth->fetchrow;
-    return ( $debarredstatus eq '1' ? 1 : 0 );
+    if( my ($debarredstatus) = $sth->fetchrow ){
+        return $debarredstatus;
+    }else{
+        return 0;
+    }
+    
 }
 
 =head2 UpdateBorrowerDebarred
 
-($borrowerstatut) = &UpdateBorrowerDebarred($borrowernumber);
+($borrowerstatut) = &UpdateBorrowerDebarred($borrowernumber, $todate);
 
 update status of borrowers in borrowers table (field debarred)
 
 C<$borrowernumber> borrower number
+C<$todate> end of bare
 
 =cut
 
 sub UpdateBorrowerDebarred{
-    my($borrowernumber) = @_;
+    my($borrowernumber, $todate) = @_;
     my $dbh = C4::Context->dbh;
         my $query=qq|UPDATE borrowers
-             SET debarred='1'
+             SET debarred=?
                      WHERE borrowernumber=?
             |;
     my $sth=$dbh->prepare($query);
-        $sth->execute($borrowernumber);
+        $sth->execute($todate, $borrowernumber);
         $sth->finish;
         return 1;
 }
diff --git a/circ/circulation.pl b/circ/circulation.pl
index 927816f..3e2cc34 100755
--- a/circ/circulation.pl
+++ b/circ/circulation.pl
@@ -30,6 +30,7 @@ use C4::Dates qw/format_date/;
 use C4::Branch; # GetBranches
 use C4::Koha;   # GetPrinter
 use C4::Circulation;
+use C4::Overdues qw/CheckBorrowerDebarred/;
 use C4::Members;
 use C4::Biblio;
 use C4::Reserves;
@@ -267,6 +268,14 @@ if ($borrowernumber) {
         issuecount   => $issue,
         finetotal    => $fines
     );
+
+    my $debar = CheckBorrowerDebarred($borrowernumber);
+    if($debar){
+        $template->param(userdebarred => 1);
+        if( $debar ne "9999-12-31"){
+            $template->param(userdebarreddate => C4::Dates::format_date($debar));
+        }
+    }
 }
 
 #
diff --git a/circ/returns.pl b/circ/returns.pl
index adec8f6..72cf8b4 100755
--- a/circ/returns.pl
+++ b/circ/returns.pl
@@ -41,6 +41,7 @@ use C4::Reserves;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
+use C4::Overdues qw/CheckBorrowerDebarred/;
 use C4::Branch; # GetBranches GetBranchName
 use C4::Koha;   # FIXME : is it still useful ?
 use C4::RotatingCollections;
@@ -335,7 +336,7 @@ if ( $messages->{'ResFound'}) {
                 reserved     => 1,
             );
         }
-
+        my $debarred = CheckBorrowerDebarred($reserve->{borrowernumber});
         # same params for Waiting or Reserved
         $template->param(
             found          => 1,
@@ -352,7 +353,7 @@ if ( $messages->{'ResFound'}) {
             borcity        => $borr->{'city'},
             borzip         => $borr->{'zipcode'},
             borcnum        => $borr->{'cardnumber'},
-            debarred       => $borr->{'debarred'},
+            debarred       => $debarred,
             gonenoaddress  => $borr->{'gonenoaddress'},
             barcode        => $barcode,
             destbranch     => $reserve->{'branchcode'},
diff --git a/installer/data/mysql/atomicupdate/0011-debarred-modifications.pl b/installer/data/mysql/atomicupdate/0011-debarred-modifications.pl
new file mode 100644
index 0000000..0c16732
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/0011-debarred-modifications.pl
@@ -0,0 +1,8 @@
+#! /usr/bin/perl
+use strict;
+use warnings;
+use C4::Context;
+my $dbh=C4::Context->dbh;
+$dbh->do("ALTER TABLE borrowers MODIFY debarred DATE DEFAULT NULL;");
+$dbh->do("ALTER TABLE borrowers ADD COLUMN debarredcomment VARCHAR(255) DEFAULT NULL AFTER debarred;");
+print "Upgrade done (Change fields for debar)\n";
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl
index cfd8011..c8d1cbc 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl
@@ -508,8 +508,13 @@ No patron matched <span class="ex"><!-- TMPL_VAR name="message" --></span>
 			<!-- /TMPL_IF -->
 
             <!-- TMPL_IF NAME="dbarred" --><li class="blocker">
-               <span class="circ-hlt"> Restricted:</span> Patron's account is restricted <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&amp;cardnumber=<!-- TMPL_VAR NAME="cardnumber" -->&amp;destination=circ&amp;status=0">Lift restriction</a>
-</li><!-- /TMPL_IF -->
+               <span class="circ-hlt"> Restricted:</span> Patron's account is restricted<!-- TMPL_IF NAME="userdebarreddate" --> to <!-- TMPL_VAR NAME="userdebarreddate" --><!-- /TMPL_IF -->
+               <form class="inline compact" action="/cgi-bin/koha/members/setstatus.pl" method="post">
+	                <input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernumber" -->" />
+	                <input type="hidden" name="status" value="0" />
+	                <input type="submit" value="Lift Debarment" />
+               </form>
+			</li><!-- /TMPL_IF -->
 
         	<!-- TMPL_IF name="odues" --><li><!-- TMPL_IF name="nonreturns" --><span class="circ-hlt">Overdues:</span> Patron has <span class="circ-hlt">ITEMS OVERDUE</span>. See highlighted items <a href="#checkouts">below</a><!-- /TMPL_IF --></li>
             <!-- /TMPL_IF -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tmpl
index 503fe54..bd971bd 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tmpl
@@ -22,6 +22,20 @@
             document.form.zipcode.value=RegExp.$1;
             document.form.city.value=RegExp.$2;
         });
+        
+        $(":radio[name='debarred']").change(function(){
+	    	if(this.value == 1){
+	        	$('.debarred').removeAttr('disabled');
+	    	}else{
+	    		$('.debarred').attr('disabled','disabled');
+	    	}
+        });
+
+    	if($(":radio:checked[name='debarred']").val() == 1){
+        	$('.debarred').removeAttr('disabled');
+    	}else{
+			$('.debarred').attr('disabled','disabled');
+    	}
     });
 
     function clear_entry(node) {
@@ -899,7 +913,6 @@
 			<!-- TMPL_LOOP NAME="flagloop" -->
 				<li><label class="radio" for="yes<!-- TMPL_VAR name="name" -->">
 				<!-- TMPL_IF EXPR="key eq 'gonenoaddress'" -->Gone no Address:<!-- /TMPL_IF -->
-				<!-- TMPL_IF EXPR="key eq 'debarred'" -->Debarred:<!-- /TMPL_IF -->
 				<!-- TMPL_IF EXPR="key eq 'lost'" -->Lost Card:<!-- /TMPL_IF -->
                 </label>
 				
@@ -917,9 +930,44 @@
 				<input type="radio" id="no<!-- TMPL_VAR NAME="name" -->" name="<!-- TMPL_VAR NAME="name" -->" value="0" />
 				<!-- /TMPL_IF -->
 
-</li>
+				
+
+			</li>
 			<!-- /TMPL_LOOP -->
-			</ol>
+			<li>
+				<label for="yesdebarred" class="radio">Debarred: </label>
+				<!-- TMPL_IF NAME="debarred" -->
+				<label for="yesdebarred">Yes </label>
+				<input type="radio" id="yesdebarred" name="debarred" value="1" checked="checked"/>
+                <label for="nodebarred">No </label>
+                <input type="radio" id="nodebarred" name="debarred" value="0"/>
+				<!-- TMPL_ELSE -->
+				<label for="yesdebarred">Yes </label>
+				<input type="radio" id="yesdebarred" name="debarred" value="1" />
+                <label for="nodebarred">No </label>
+                <input type="radio" id="nodebarred" name="debarred" value="0" checked="checked"/>
+				<!-- /TMPL_IF -->
+				
+				<br />
+				<label for="datedebarred" class="radio">until:</label> 
+				<input type="text" name="datedebarred" id="debarred" class="debarred" value="<!-- TMPL_VAR NAME="datedebarred" -->" />
+				<img src="<!-- TMPL_VAR Name="themelang" -->/lib/calendar/cal.gif" id="debarred_button" alt="Show Calendar" />
+		         <script language="JavaScript" type="text/javascript">
+		            Calendar.setup(
+		            {
+		                inputField : "debarred",
+		                ifFormat : "<!-- TMPL_VAR NAME="DHTMLcalendar_dateformat" -->",
+		                button : "debarred_button"
+		            }
+		            );
+		        </script>
+		        <br />
+		        <label for="debarredcomment" class="radio">comment:</label>
+		        <input type="text" id="debarredcomment" name="debarredcomment" value="<!-- TMPL_VAR NAME="debarredcomment" -->" class="debarred" />
+		        
+				 
+	        </li>
+		</ol>
 			</fieldset>
 		<!-- /TMPL_UNLESS -->	
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl
index af3c41c..f92da09 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl
@@ -139,17 +139,15 @@ if (nodename =="barcodes[]"){
 <!-- TMPL_ELSE -->
     <!-- TMPL_IF NAME="reregistration" --><div class="dialog message">Patron's account has been renewed until <!-- TMPL_VAR NAME="dateexpiry" --></div><!-- /TMPL_IF -->
 
-    <!-- TMPL_IF NAME="flagged" -->
+    <!-- TMPL_IF NAME="userdebarred" -->
     <ul>
-        <!-- TMPL_IF NAME="debarred" -->
-            <li>Patron is restricted
-            <form class="inline compact" action="/cgi-bin/koha/members/setdebar.pl" method="post">
+            <li>Patron is restricted<!-- TMPL_IF NAME="userdebarreddate" --> to <!-- TMPL_VAR NAME="userdebarreddate" --><!-- /TMPL_IF -->
+            <form class="inline compact" action="/cgi-bin/koha/members/setstatus.pl" method="post">
                 <input type="hidden" name="borrowernumber" value="<!-- TMPL_VAR NAME="borrowernumber" -->" />
                 <input type="hidden" name="status" value="0" />
                 <input type="submit" value="Lift Debarment" />
             </form>
             </li>
-        <!-- /TMPL_IF -->
         <!-- TMPL_IF NAME="gonenoaddress" --><li>Patron's address is in doubt.</li><!-- /TMPL_IF -->
         <!-- TMPL_IF NAME="lost" --><li>Patron's card has been reported lost.</li><!-- /TMPL_IF -->
     </ul>
diff --git a/members/memberentry.pl b/members/memberentry.pl
index f42e981..5f29633 100755
--- a/members/memberentry.pl
+++ b/members/memberentry.pl
@@ -119,6 +119,7 @@ $category_type="A" unless $category_type; # FIXME we should display a error mess
 # initialize %newdata
 my %newdata;	# comes from $input->param()
 if ($op eq 'insert' || $op eq 'modify' || $op eq 'save') {
+
     my @names= ($borrower_data && $op ne 'save') ? keys %$borrower_data : $input->param();
     foreach my $key (@names) {
         if (defined $input->param($key)) {
@@ -126,10 +127,16 @@ if ($op eq 'insert' || $op eq 'modify' || $op eq 'save') {
             $newdata{$key} =~ s/\"/&quot;/g unless $key eq 'borrowernotes' or $key eq 'opacnote';
         }
     }
+        
+    ## Manipulate debarred
+    if($newdata{debarred}){
+        $newdata{debarred} = $newdata{datedebarred} ? $newdata{datedebarred} : "9999-12-31";
+    }
+    
     my $dateobject = C4::Dates->new();
     my $syspref = $dateobject->regexp();		# same syspref format for all 3 dates
     my $iso     = $dateobject->regexp('iso');	#
-    foreach (qw(dateenrolled dateexpiry dateofbirth)) {
+    foreach (qw(dateenrolled dateexpiry dateofbirth debarred)) {
         my $userdate = $newdata{$_} or next;
         if ($userdate =~ /$syspref/) {
             $newdata{$_} = format_date_in_iso($userdate);	# if they match syspref format, then convert to ISO
@@ -468,7 +475,7 @@ my $borrotitlepopup = CGI::popup_menu(-name=>'title',
         -default=>$default_borrowertitle
         );    
 
-my @relationships = split /,|\|/, C4::Context->preference('BorrowerRelationship');
+my @relationships = split (/,|\|/, C4::Context->preference('BorrowerRelationship'));
 my @relshipdata;
 while (@relationships) {
   my $relship = shift @relationships || '';
@@ -482,10 +489,9 @@ while (@relationships) {
 }
 
 my %flags = ( 'gonenoaddress' => ['gonenoaddress' ],
-        'lost'          => ['lost'],
-        'debarred'      => ['debarred']);
+        'lost'          => ['lost']);
+
 
- 
 my @flagdata;
 foreach (keys(%flags)) {
 	my $key = $_;
@@ -586,7 +592,10 @@ if (C4::Context->preference('uppercasesurnames')) {
 	$data{'surname'}    =uc($data{'surname'}    );
 	$data{'contactname'}=uc($data{'contactname'});
 }
-foreach (qw(dateenrolled dateexpiry dateofbirth)) {
+
+$data{debarred} = C4::Overdues::CheckBorrowerDebarred($borrowernumber);
+$data{datedebarred} = $data{debarred} if ($data{debarred} ne "9999-12-31");  
+foreach (qw(dateenrolled dateexpiry dateofbirth debarred)) {
 	$data{$_} = format_date($data{$_});	# back to syspref for display
 	$template->param( $_ => $data{$_});
 }
diff --git a/members/moremember.pl b/members/moremember.pl
index 691ad1d..41c487a 100755
--- a/members/moremember.pl
+++ b/members/moremember.pl
@@ -48,6 +48,7 @@ use C4::Biblio;
 use C4::Reserves;
 use C4::Branch; # GetBranchName
 use C4::Form::MessagingPreferences;
+use C4::Overdues qw/CheckBorrowerDebarred/;
 
 #use Smart::Comments;
 #use Data::Dumper;
@@ -128,10 +129,18 @@ foreach (qw(dateenrolled dateexpiry dateofbirth)) {
 }
 $data->{'IS_ADULT'} = ( $data->{'categorycode'} ne 'I' );
 
-for (qw(debarred gonenoaddress lost borrowernotes)) {
+for (qw(gonenoaddress lost borrowernotes)) {
 	 $data->{$_} and $template->param(flagged => 1) and last;
 }
 
+my $debar = CheckBorrowerDebarred($borrowernumber);
+if($debar){
+    $template->param(userdebarred => 1);
+    if( $debar ne "9999-12-31"){
+        $template->param(userdebarreddate => C4::Dates::format_date($debar));
+    }
+}
+
 $data->{'ethnicity'} = fixEthnicity( $data->{'ethnicity'} );
 $data->{ "sex_".$data->{'sex'}."_p" } = 1;
 
diff --git a/members/setdebar.pl b/members/setdebar.pl
deleted file mode 100755
index 55a35ee..0000000
--- a/members/setdebar.pl
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright 2000-2002 Katipo Communications
-#
-# This file is part of Koha.
-#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
-
-
-=head1 setdebar.pl
-
-script to set or lift debarred status
-written 2/8/04
-by oleonard at athenscounty.lib.oh.us
-
-=cut
-
-use strict;
-use warnings;
-
-use CGI;
-use C4::Context;
-use C4::Auth;
-
-my $input = new CGI;
-
-my $flagsrequired;
-$flagsrequired->{borrowers} = 1;
-my ( $loggedinuser, $cookie, $sessionID ) =
-  checkauth( $input, 0, $flagsrequired );
-
-my $destination    = $input->param("destination") || '';
-my $cardnumber     = $input->param("cardnumber");
-my $borrowernumber = $input->param('borrowernumber');
-my $status         = $input->param('status');
-
-my $dbh = C4::Context->dbh;
-my $sth =
-  $dbh->prepare("Update borrowers set debarred = ? where borrowernumber = ?");
-$sth->execute( $status, $borrowernumber );
-$sth->finish;
-
-if ( $destination eq "circ" ) {
-    print $input->redirect(
-        "/cgi-bin/koha/circ/circulation.pl?findborrower=".$cardnumber);
-}
-else {
-    print $input->redirect(
-        "/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber");
-}
diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index 341844b..5c59c06 100755
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -437,7 +437,7 @@ END_SQL
                 if ( $overdue_rules->{"debarred$i"} ) {
     
                     #action taken is debarring
-                    C4::Members::DebarMember($borrowernumber);
+                    C4::Members::DebarMember($borrowernumber, '9999-12-31');
                     $verbose and warn "debarring $borrowernumber $firstname $lastname\n";
                 }
                 my @params = ($listall ? ( $borrowernumber , 1 , $MAX ) : ( $borrowernumber, $mindays, $maxdays ));
diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl
index d5d39db..f7946b7 100755
--- a/opac/opac-reserve.pl
+++ b/opac/opac-reserve.pl
@@ -246,7 +246,7 @@ if ( $borr->{lost} && ($borr->{lost} eq 1) ) {
                      lost    => 1
                     );
 }
-if ( $borr->{debarred} && ($borr->{debarred} eq 1) ) {
+if ( CheckBorrowerDebarred($borrowernumber) ) {
     $noreserves = 1;
     $template->param(
                      message  => 1,
diff --git a/opac/opac-user.pl b/opac/opac-user.pl
index 772b7f3..bd866f7 100755
--- a/opac/opac-user.pl
+++ b/opac/opac-user.pl
@@ -31,6 +31,7 @@ use C4::Items;
 use C4::Dates qw/format_date/;
 use C4::Letters;
 use C4::Branch; # GetBranches
+use C4::Overdues qw/CheckBorrowerDebarred/;
 
 my $query = new CGI;
 
@@ -63,7 +64,7 @@ for (qw(dateenrolled dateexpiry dateofbirth)) {
 }
 $borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} );
 
-if ( $borr->{'debarred'} || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
+if ( CheckBorrowerDebarred($borrowernumber) || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
     $borr->{'flagged'} = 1;
 }
 
-- 
1.6.3.3




More information about the Koha-patches mailing list