CleanBorrowers fixing.
[koha_gimpoz] / C4 / Circulation.pm
index 45d978f..0add08e 100644 (file)
@@ -29,6 +29,7 @@ use C4::Items;
 use C4::Members;
 use C4::Dates;
 use C4::Calendar;
+use C4::Accounts;
 use Date::Calc qw(
   Today
   Today_and_Now
@@ -1025,7 +1026,7 @@ sub AddIssue {
         );
     }
     
-    &logaction(C4::Context->userenv->{'number'},"CIRCULATION","ISSUE",$borrower->{'borrowernumber'},$biblio->{'biblionumber'}) 
+    logaction("CIRCULATION", "ISSUE", $borrower->{'borrowernumber'}, $biblio->{'biblionumber'}) 
         if C4::Context->preference("IssueLog");
     return ($datedue);
   }
@@ -1164,6 +1165,11 @@ sub AddReturn {
         # find the borrower
         if ( ( not $iteminformation->{borrowernumber} ) && $doreturn ) {
             $messages->{'NotIssued'} = $barcode;
+            # even though item is not on loan, it may still
+            # be transferred; therefore, get current branch information
+            my $curr_iteminfo = GetItem($iteminformation->{'itemnumber'});
+            $iteminformation->{'homebranch'} = $curr_iteminfo->{'homebranch'};
+            $iteminformation->{'holdingbranch'} = $curr_iteminfo->{'holdingbranch'};
             $doreturn = 0;
         }
     
@@ -1269,7 +1275,7 @@ sub AddReturn {
             $borrower->{'borrowernumber'}
         );
         
-        &logaction(C4::Context->userenv->{'number'},"CIRCULATION","RETURN",$iteminformation->{borrowernumber},$iteminformation->{'biblionumber'}) 
+        logaction("CIRCULATION", "RETURN", $iteminformation->{borrowernumber}, $iteminformation->{'biblionumber'}) 
             if C4::Context->preference("ReturnLog");
         
         #adding message if holdingbranch is non equal a userenv branch to return the document to homebranch
@@ -1638,13 +1644,13 @@ sub CanBookBeRenewed {
         # because it's a bit messy: given the item number, we need to find
         # the biblioitem, which gives us the itemtype, which tells us
         # whether it may be renewed.
-        my $sth2 = $dbh->prepare(
-            "SELECT renewalsallowed FROM items
-                LEFT JOIN biblioitems on items.biblioitemnumber = biblioitems.biblioitemnumber
-                LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype
-                WHERE items.itemnumber = ?
-                "
-        );
+        my $query = "SELECT renewalsallowed FROM items ";
+        $query .= (C4::Context->preference('item-level_itypes'))
+                    ? "LEFT JOIN itemtypes ON items.itype = itemtypes.itemtype "
+                    : "LEFT JOIN biblioitems on items.biblioitemnumber = biblioitems.biblioitemnumber
+                       LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype ";
+        $query .= "WHERE items.itemnumber = ?";
+        my $sth2 = $dbh->prepare($query);
         $sth2->execute($itemnumber);
         if ( my $data2 = $sth2->fetchrow_hashref ) {
             $renews = $data2->{'renewalsallowed'};
@@ -1773,19 +1779,23 @@ sub GetRenewCount {
                                 where (borrowernumber = ?)
                                 and (itemnumber = ?)");
     $sth->execute($bornum,$itemno);
-        my $data = $sth->fetchrow_hashref;
-        $renewcount = $data->{'renewals'} if $data->{'renewals'};
-    my $sth2 = $dbh->prepare("select renewalsallowed from items,biblioitems,itemtypes
-        where (items.itemnumber = ?)
-                and (items.biblioitemnumber = biblioitems.biblioitemnumber)
-        and (biblioitems.itemtype = itemtypes.itemtype)");
+    my $data = $sth->fetchrow_hashref;
+    $renewcount = $data->{'renewals'} if $data->{'renewals'};
+    $sth->finish;
+    my $query = "SELECT renewalsallowed FROM items ";
+    $query .= (C4::Context->preference('item-level_itypes'))
+                ? "LEFT JOIN itemtypes ON items.itype = itemtypes.itemtype "
+                : "LEFT JOIN biblioitems on items.biblioitemnumber = biblioitems.biblioitemnumber
+                   LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype ";
+    $query .= "WHERE items.itemnumber = ?";
+    my $sth2 = $dbh->prepare($query);
     $sth2->execute($itemno);
-        my $data2 = $sth2->fetchrow_hashref();
-        $renewsallowed = $data2->{'renewalsallowed'};
-        $renewsleft = $renewsallowed - $renewcount;
-#         warn "Renewcount:$renewcount RenewsAll:$renewsallowed RenewLeft:$renewsleft";
-        return ($renewcount,$renewsallowed,$renewsleft);
+    my $data2 = $sth2->fetchrow_hashref();
+    $renewsallowed = $data2->{'renewalsallowed'};
+    $renewsleft = $renewsallowed - $renewcount;
+    return ($renewcount,$renewsallowed,$renewsleft);
 }
+
 =head2 GetIssuingCharges
 
 ($charge, $item_type) = &GetIssuingCharges($itemnumber, $borrowernumber);