Using Preference C4::Context->preference('item_level_itype') in order to 
determine itemtype information before passing it to statistics.
---
 C4/Circulation.pm |   73 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 43 insertions(+), 30 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index ca52e27..24f28b0 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -649,7 +649,9 @@ sub CanBookBeIssued {
     my $item = GetItem(GetItemnumberFromBarcode( $barcode ));
     my $issue = GetItemIssue($item->{itemnumber});
        my $biblioitem = GetBiblioItemData($item->{biblioitemnumber});
-       $item->{'itemtype'}=$item->{'itype'}; 
+    my $type = (C4::Context->preference('item-level_itypes')) 
+        ? $item->{'itype'}         # item-level
+      : $biblioitem->{'itemtype'};     # biblio-level
     my $dbh             = C4::Context->dbh;
 
     #
@@ -662,7 +664,7 @@ sub CanBookBeIssued {
     #
     if ( $borrower->{'category_type'} eq 'X' && (  $item->{barcode}  )) { 
        # stats only borrower -- add entry to statistics table, and return 
issuingimpossible{STATS} = 1  .
-        
&UpdateStats(C4::Context->userenv->{'branch'},'localuse','','',$item->{'itemnumber'},$item->{'itemtype'},$borrower->{'borrowernumber'});
+        
&UpdateStats(C4::Context->userenv->{'branch'},'localuse','','',$item->{'itemnumber'},$type,$borrower->{'borrowernumber'});
         return( { STATS => 1 }, {});
     }
     if ( $borrower->{flags}->{GNA} ) {
@@ -847,30 +849,33 @@ AddIssue does the following things :
 sub AddIssue {
     my ( $borrower, $barcode, $date, $cancelreserve ) = @_;
     my $dbh = C4::Context->dbh;
-       my $barcodecheck=CheckValidBarcode($barcode);
-       if ($borrower and $barcode and $barcodecheck ne '0'){
-               # find which item we issue
-               my $item = GetItem('', $barcode) or return undef;       # if we 
don't get an Item, abort.
-               my $datedue; 
-               my $branch;
-               # Get which branchcode we need
-               if (C4::Context->preference('CircControl') eq 'PickupLibrary'){
-                       $branch = C4::Context->userenv->{'branch'}; 
-               }
-               elsif (C4::Context->preference('CircControl') eq 
'PatronLibrary'){
-                       $branch = $borrower->{'branchcode'}; 
-               }
-               else {
-                       # items home library
-                       $branch = $item->{'homebranch'};
-               }
-               
-               # get actual issuing if there is one
-               my $actualissue = GetItemIssue( $item->{itemnumber});
-               
-               # get biblioinformation for this item
-               my $biblio = GetBiblioFromItemNumber($item->{itemnumber});
-               
+         my $barcodecheck=CheckValidBarcode($barcode);
+         if ($borrower and $barcode and $barcodecheck ne '0'){
+                   # find which item we issue
+                   my $item = GetItem('', $barcode) or return undef;   # if we 
don't get an Item, abort.
+                   my $datedue; 
+                   my $branch;
+                   # Get which branchcode we need
+                   if (C4::Context->preference('CircControl') eq 
'PickupLibrary'){
+                         $branch = C4::Context->userenv->{'branch'}; 
+                   }
+                   elsif (C4::Context->preference('CircControl') eq 
'PatronLibrary'){
+                         $branch = $borrower->{'branchcode'}; 
+                   }
+                   else {
+                         # items home library
+                         $branch = $item->{'homebranch'};
+                   }
+                   
+                   # get actual issuing if there is one
+                   my $actualissue = GetItemIssue( $item->{itemnumber});
+                   
+                   # get biblioinformation for this item
+                   my $biblio = GetBiblioFromItemNumber($item->{itemnumber});
+        my $type = (C4::Context->preference('item-level_itypes')) 
+            ? $item->{'itype'}         # item-level
+        : $item->{'itemtype'};     # biblio-level
+
                #
                # check if we just renew the issue.
                #
@@ -1012,7 +1017,7 @@ sub AddIssue {
             C4::Context->userenv->{'branch'},
             'issue',                        $charge,
             '',                             $item->{'itemnumber'},
-            $item->{'itype'}, $borrower->{'borrowernumber'}
+            $type, $borrower->{'borrowernumber'}
         );
     }
     
@@ -1293,6 +1298,7 @@ sub AddReturn {
     # get information on item
     my $iteminformation = GetItemIssue( GetItemnumberFromBarcode($barcode));
     my $biblio = GetBiblioItemData($iteminformation->{'biblioitemnumber'});
+        
 #     use Data::Dumper;warn Data::Dumper::Dumper($iteminformation);  
     unless ($iteminformation->{'itemnumber'} ) {
         $messages->{'BadBarcode'} = $barcode;
@@ -1336,7 +1342,7 @@ sub AddReturn {
     
     # case of a return of document (deal with issues and holdingbranch)
     
-        if ($doreturn) {
+    if ($doreturn) {
                        my $circControlBranch;
                        if($dropbox) {
                                # don't allow dropbox mode to create an invalid 
entry in issues (issuedate > returndate) FIXME: actually checks eq, not gt
@@ -1416,12 +1422,15 @@ sub AddReturn {
             $reserveDone = 1;
         }
     
+        my $type = (C4::Context->preference('item-level_itypes')) 
+                ? $iteminformation->{'itype'}         # item-level
+                : $biblio->{'itemtype'};     # biblio-level
         # update stats?
         # Record the fact that this book was returned.
         UpdateStats(
             $branch, 'return', '0', '',
             $iteminformation->{'itemnumber'},
-            $biblio->{'itemtype'},
+            $type,
             $borrower->{'borrowernumber'}
         );
         
@@ -1976,8 +1985,12 @@ sub AddRenewal {
             'Rent', $charge, $itemnumber );
         $sth->finish;
     }
+    my $itemtype = (C4::Context->preference('item-level_itypes')) 
+        ? $item->{'itype'}         # item-level
+      : $biblio->{'itemtype'};     # biblio-level
+  
     # Log the renewal
-    UpdateStats( $branch, 'renew', $charge, '', $itemnumber, $item->{itype}, 
$borrowernumber);
+    UpdateStats( $branch, 'renew', $charge, '', $itemnumber, $itemtype, 
$borrowernumber);
 }
 
 sub GetRenewCount {
-- 
1.5.4.3

_______________________________________________
Koha-patches mailing list
Koha-patches@lists.koha.org
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to