Changing signature for NewIssue
[koha.git] / C4 / Circulation / Fines.pm
index bf52295..1907c3d 100644 (file)
@@ -24,7 +24,7 @@ require Exporter;
 use C4::Context;
 use Date::Calc qw/Today/;
 use vars qw($VERSION @ISA @EXPORT);
-use C4::Accounts2;
+use C4::Accounts;
 use Date::Manip qw/UnixDate/;
 use C4::Log; # logaction
 
@@ -38,7 +38,7 @@ C4::Circulation::Fines - Koha module dealing with fines
 
 =head1 SYNOPSIS
 
-  use C4::Circulation::Fines;
+  use C4::Overdues;
 
 =head1 DESCRIPTION
 
@@ -52,30 +52,49 @@ overdue items. It is primarily used by the 'misc/fines2.pl' script.
 =cut
 
 @ISA    = qw(Exporter);
-@EXPORT = qw(    &BorType
+# subs to rename (and maybe merge some...)
+push @EXPORT, qw(
         &CalcFine
         &Getoverdues
-        &GetIssuingRules
         &CheckAccountLineLevelInfo
         &CheckAccountLineItemInfo
         &CheckExistantNotifyid
-        &CheckBorrowerDebarred
-        &GetIssuesIteminfo
         &GetNextIdNotify
-        &GetOverdueDelays
-        &GetOverduerules
-        &GetFine
-        &GetItems
         &GetNotifyId
-        &GetNextIdNotify
         &NumberNotifyId
         &AmountNotify
         &UpdateAccountLines
         &UpdateFine
-        &UpdateBorrowerDebarred
+        &GetOverdueDelays
+        &GetOverduerules
+        &GetFine
         &CreateItemAccountLine
+        &ReplacementCost2
+);
+# subs to remove
+push @EXPORT, qw(
+        &BorType
+);
+
+#
+# All subs to move : check that an equivalent don't exist already before moving
+#
+
+# subs to move to Circulation.pm
+push @EXPORT, qw(
+        &GetIssuingRules
+        &GetIssuesIteminfo
+);
+# subs to move to Members.pm
+push @EXPORT, qw(
+        &CheckBorrowerDebarred
+        &UpdateBorrowerDebarred
+);
+# subs to move to Biblio.pm
+push @EXPORT, qw(
+        &GetItems
         &ReplacementCost
-        &ReplacementCost2);
+);
 
 =item Getoverdues
 
@@ -319,7 +338,7 @@ my $dbh = C4::Context->dbh;
 my $query = qq|SELECT *  
     FROM issues
     WHERE itemnumber=?
-|;
+    AND returndate IS NULL|;
 my $sth = $dbh->prepare($query);
 $sth->execute($itemnumber);
 my ($issuesinfo)=$sth->fetchrow_hashref;
@@ -420,11 +439,11 @@ sub UpdateFine {
 #         $sth3->finish;
 #         $accountno[0]++;
 # begin transaction
-  my $nextaccntno = getnextacctno(undef,$borrowernumber,$dbh);    
+  my $nextaccntno = getnextacctno($borrowernumber);
     my $sth2 = $dbh->prepare(
-            "Insert into accountlines
+            "INSERT INTO accountlines
     (borrowernumber,itemnumber,date,amount,
-    description,accounttype,amountoutstanding,accountno) values
+    description,accounttype,amountoutstanding,accountno) VALUES
     (?,?,now(),?,?,'FU',?,?)"
         );
         $sth2->execute( $borrowernumber, $itemnum, $amount,
@@ -636,10 +655,11 @@ C<$notify_id> contains the file number for the borrower number nad item number
 sub NumberNotifyId{
     my ($borrowernumber)=@_;
     my $dbh = C4::Context->dbh;
-    my $env;
     my $query=qq|    SELECT distinct(notify_id)
             FROM accountlines
-            WHERE borrowernumber=?|;
+            WHERE borrowernumber=?
+           AND notify_id != 0
+           AND notify_id != 1  |;
     my @notify;
     my $sth=$dbh->prepare($query);
         $sth->execute($borrowernumber);
@@ -745,11 +765,11 @@ C<$level> contains the file level
  sub CreateItemAccountLine {
   my ($borrowernumber,$itemnumber,$date,$amount,$description,$accounttype,$amountoutstanding,$timestamp,$notify_id,$level)=@_;
   my $dbh = C4::Context->dbh;
-  my $nextaccntno = getnextacctno(undef,$borrowernumber,$dbh);
-   my $query= qq|INSERT into accountlines  
+  my $nextaccntno = getnextacctno($borrowernumber);
+   my $query= "INSERT into accountlines  
          (borrowernumber,accountno,itemnumber,date,amount,description,accounttype,amountoutstanding,timestamp,notify_id,notify_level)
           VALUES
-             (?,?,?,?,?,?,?,?,?,?,?)|;
+             (?,?,?,?,?,?,?,?,?,?,?)";
   
   
   my $sth=$dbh->prepare($query);
@@ -881,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
@@ -993,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