HUGE COMMIT : code cleaning circulation.
[koha.git] / misc / fines2.pl
index 2295203..9a0fe0f 100755 (executable)
@@ -1,14 +1,13 @@
 #!/usr/bin/perl
 
 #  This script loops through each overdue item, determines the fine,
-#  and updates the total amount of fines due by each user.  It relies on 
+#  and updates the total amount of fines due by each user.  It relies on
 #  the existence of /tmp/fines, which is created by ???
 # Doesnt really rely on it, it relys on being able to write to /tmp/
 # It creates the fines file
 #
 #  This script is meant to be run nightly out of cron.
 
-
 # Copyright 2000-2002 Katipo Communications
 #
 # This file is part of Koha.
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
 
+# $Id$
+
 use C4::Context;
-use C4::Search;
-use C4::Circulation::Circ2;
-use C4::Circulation::Fines;
+use C4::Circulation;
+use C4::Overdues;
 use Date::Manip;
+use C4::Biblio;
 
 open (FILE,'>/tmp/fines') || die;
 # FIXME
@@ -42,6 +43,8 @@ my ($numOverdueItems,$data)=Getoverdues();
 print $numOverdueItems if $DEBUG;
 my $overdueItemsCounted=0 if $DEBUG;
 
+# FIXME - There's got to be a better way to figure out what day
+# today is.
 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time);
 $mon++;
 $year=$year+1900;
@@ -50,7 +53,7 @@ my $date=Date_DaysSince1BC($mon,$mday,$year);
 
 print $date if $DEBUG;
 
-my $bornum;
+my $borrowernumber;
 
 # FIXME
 # $total isn't used anywhere else in the file,
@@ -67,7 +70,7 @@ my $maxFine=5;
 
 # FIXME
 # delete both of these?
-#my $bornum2=$data->[0]->{'borrowernumber'};
+#my $borrowernumber2=$data->[0]->{'borrowernumber'};
 #my $i2=1;
 
 # FIXME
@@ -77,16 +80,16 @@ my $maxFine=5;
 #
 for (my $i=0;$i<$numOverdueItems;$i++){
   my @dates=split('-',$data->[$i]->{'date_due'});
-  my $date2=Date_DaysSince1BC($dates[1],$dates[2],$dates[0]);    
+  my $date2=Date_DaysSince1BC($dates[1],$dates[2],$dates[0]);
   my $due="$dates[2]/$dates[1]/$dates[0]";
   my $borrower=BorType($data->[$i]->{'borrowernumber'});
   if ($date2 <= $date){
     $overdueItemsCounted++ if $DEBUG;
     my $difference=$date-$date2;
     my ($amount,$type,$printout)=
-       CalcFine($data->[$i]->{'itemnumber'},
-                $borrower->{'categorycode'},
-                $difference);      
+    CalcFine($data->[$i]->{'itemnumber'},
+         $borrower->{'categorycode'},
+         $difference);
     if ($amount > $maxFine){
       $amount=$maxFine;
     }
@@ -98,59 +101,52 @@ for (my $i=0;$i<$numOverdueItems;$i++){
 # If this isn't needed it should be deleted
 #
 #      if ($amount ==5){
-#            marklost();
+#          marklost();
 #      }
 
        if ($borrower->{'categorycode'} eq 'C'){  # FIXME
-                                                # this should be a
+                                             # this should be a
                                                  # separate function
                                                  #
-        my $dbh = C4::Context->dbh;
-        my $query="Select * from borrowers where borrowernumber='$borrower->{'guarantor'}'";
-        my $sth=$dbh->prepare($query);
-        $sth->execute;
-        my $tdata=$sth->fetchrow_hashref;
-        $sth->finish;
-        $borrower->{'phone'}=$tdata->{'phone'};
+     my $dbh = C4::Context->dbh;
+     my $sth=$dbh->prepare("Select * from borrowers where borrowernumber=?");
+     $sth->execute($borrower->{'guarantor'});
+     my $tdata=$sth->fetchrow_hashref;
+     $sth->finish;
+     $borrower->{'phone'}=$tdata->{'phone'};
        }
        print "$printout\t$borrower->{'cardnumber'}\t$borrower->{'categorycode'}\t$borrower->{'firstname'}\t$borrower->{'surname'}\t$data->[$i]->{'date_due'}\t$type\t$difference\t$borrower->{'emailaddress'}\t$borrower->{'phone'}\t$borrower->{'streetaddress'}\t$borrower->{'city'}\t$amount\n";
     } else { # FIXME
-            # if this is really useless, the whole else clause should be 
-            # deleted. 
+         # if this is really useless, the whole else clause should be
+         # deleted.
              #
 #      print "$borrower->{'cardnumber'}\t$borrower->{'categorycode'}\t0 fine\n";
     }
     if ($difference >= 28){ # FIXME
-                           # this should be a separate function
+                        # this should be a separate function
                             #
       my $borrower=BorType($data->[$i]->{'borrowernumber'});
       if ($borrower->{'cardnumber'} ne ''){
-        my $cost=ReplacementCost($data->[$i]->{'itemnumber'}); 
-       my $dbh = C4::Context->dbh;
-       my $env;
-       my $accountno=C4::Circulation::Circ2::getnextacctno($env,$data->[$i]->{'borrowernumber'},$dbh);
-       my $item=itemnodata($env,$dbh,$data->[$i]->{'itemnumber'});
-       if ($item->{'itemlost'} ne '1' && $item->{'itemlost'} ne '2' ){
+        my $cost=ReplacementCost($data->[$i]->{'itemnumber'});
+    my $dbh = C4::Context->dbh;
+    my $env;
+    my $accountno=C4::Circulation::Circ2::getnextacctno($data->[$i]->{'borrowernumber'});
+    my $item=GetBiblioFromItemNumber($data->[$i]->{'itemnumber'});
+    if ($item->{'itemlost'} ne '1' && $item->{'itemlost'} ne '2' ){
               # FIXME
               # this should be a separate function
               #
-         $item->{'title'}=~ s/\'/\\'/g;
-         my $query="Insert into accountlines
-         (borrowernumber,itemnumber,accountno,date,amount,
-         description,accounttype,amountoutstanding) values
-         ($data->[$i]->{'borrowernumber'},$data->[$i]->{'itemnumber'},
-         '$accountno',now(),'$cost','Lost item $item->{'title'} $item->{'barcode'} $due','L','$cost')";
-         my $sth=$dbh->prepare($query);
-         $sth->execute;
-         $sth->finish;
-         $query="update items set itemlost=2 where itemnumber='$data->[$i]->{'itemnumber'}'";
-         $sth=$dbh->prepare($query);
-         $sth->execute;
-         $sth->finish;
-       } else { # FIXME
-                # this should be deleted
-                 #
-       }
+      my $sth=$dbh->prepare("INSERT INTO accountlines
+      (borrowernumber,itemnumber,accountno,date,amount,
+      description,accounttype,amountoutstanding) VALUES
+      (?,?,?,now(),?,?,'L',?)");
+      $sth->execute($data->[$i]->{'borrowernumber'},$data->[$i]->{'itemnumber'},
+      $accountno,$cost,"Lost item $item->{'title'} $item->{'barcode'} $due",$cost);
+      $sth->finish;
+      $sth=$dbh->prepare("update items set itemlost=2 where itemnumber=?");
+      $sth->execute($data->[$i]->{'itemnumber'});
+      $sth->finish;
+    }
       }
     }