bug fix : adding condition for create the right notify_id
authorbtoumi <btoumi>
Mon, 7 May 2007 14:57:01 +0000 (14:57 +0000)
committerbtoumi <btoumi>
Mon, 7 May 2007 14:57:01 +0000 (14:57 +0000)
C4/Circulation/Fines.pm
misc/fines.pl

index a825236..5c1bbf8 100644 (file)
@@ -901,18 +901,22 @@ C<$notify_level> contains the accountline level
 =cut
 
 sub CheckAccountLineLevelInfo {
-    my($borrowernumber,$itemnumber,$level) = @_;
-    my $dbh = C4::Context->dbh;
-        my $query=    qq|SELECT count(*)
-            FROM accountlines
-            WHERE borrowernumber =?
-            AND itemnumber = ?
-            AND notify_level=?|;
-    my $sth=$dbh->prepare($query);
-        $sth->execute($borrowernumber,$itemnumber,$level);
-        my ($exist)=$sth->fetchrow;
-        $sth->finish;
-        return($exist);
+    my($borrowernumber,$itemnumber,$level,$datedue) = @_;
+       my @formatdate;
+       @formatdate=split('-',$datedue);
+       $datedue=$formatdate[2]."/".$formatdate[1]."/".$formatdate[0];
+       my $dbh = C4::Context->dbh;
+       my $query=      qq|SELECT count(*) 
+                       FROM accountlines 
+                       WHERE borrowernumber =?
+                       AND itemnumber = ?
+                       AND notify_level=?
+                       AND description like ?|;
+       my $sth=$dbh->prepare($query);
+       $sth->execute($borrowernumber,$itemnumber,$level,"%$datedue%");
+       my ($exist)=$sth->fetchrow;
+       $sth->finish;
+       return($exist);
 }
 
 =item GetOverduerules
@@ -1013,23 +1017,28 @@ C<$date_due> contains the date of item return
 =cut
 
 sub CheckExistantNotifyid {
-     my($borrowernumber,$date_due) = @_;
-     my $dbh = C4::Context->dbh;
-         my $query =  qq|SELECT notify_id FROM issues,accountlines
-             WHERE accountlines.borrowernumber =?
-             AND issues.itemnumber= accountlines.itemnumber
-              AND date_due = ?|;
-    my $sth=$dbh->prepare($query);
-         $sth->execute($borrowernumber,$date_due);
-         my ($exist)=$sth->fetchrow;
-         $sth->finish;
-         if ($exist eq '')
-    {
-    return(0);
-    }else
-        {
-    return($exist);
-    }
+    my($borrowernumber,$date_due) = @_;
+       my $dbh = C4::Context->dbh;
+       my @formatdate;
+       @formatdate=split('-',$date_due);
+       $date_due=$formatdate[2]."/".$formatdate[1]."/".$formatdate[0];
+       my $query =  qq|SELECT notify_id FROM accountlines 
+                       WHERE description like ?
+                       AND borrowernumber =?
+                       AND( accounttype='FU'  OR accounttype='F' )
+                           AND notify_id != 0
+                       AND notify_id != 1|;
+       my $sth=$dbh->prepare($query);
+               $sth->execute("%$date_due%",$borrowernumber);
+       my ($exist)=$sth->fetchrow;
+       $sth->finish;
+       if ($exist eq '')
+       {
+       return(0);
+       }else
+           {
+       return($exist);
+       }
 }
 
 =item CheckAccountLineItemInfo
index 2b8a360..fa642f0 100755 (executable)
@@ -91,7 +91,7 @@ if($delays1  and $delays2  and $delays3)  {
         UpdateFine($data->[$i]->{'itemnumber'},$data->[$i]->{'borrowernumber'},$amount,$type,$due);
         my $getnotifyid=CheckExistantNotifyid($borrower->{'borrowernumber'},$datedue);
     
-        my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},1);
+        my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},1,$datedue);
             if ($update eq '0'){
                         if ($getnotifyid eq '0'){
                             $starter=GetNextIdNotify($reference,$borrower->{'borrowernumber'});
@@ -118,7 +118,7 @@ if($delays1  and $delays2  and $delays3)  {
         if ($daycount >= $delays2 && $daycount < $delays3){
         my $debarred2=GetOverduerules($borrower->{'categorycode'},2);
         (UpdateBorrowerDebarred($borrower->{'borrowernumber'}))if(($debarred2 eq '1' ) and ($debarredstatus eq '0'));
-        my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},2);
+       my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},2,$datedue);
         if ($update eq '0'){
         UpdateAccountLines(undef,2,$borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'});
         }
@@ -129,7 +129,7 @@ if($delays1  and $delays2  and $delays3)  {
         if ($daycount >= $delays3  ){
             my $debarred3=GetOverduerules($borrower->{'categorycode'},3);
             (UpdateBorrowerDebarred($borrower->{'borrowernumber'}))if(($debarred3 eq '1' ) and ($debarredstatus eq '0'));
-            my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},3);
+            my $update=CheckAccountLineLevelInfo($borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'},3,$datedue);
             if ($update eq '0'){
                     UpdateAccountLines(undef,3,$borrower->{'borrowernumber'},$data->[$i]->{'itemnumber'});
             }