[Patches] [PATCH] Bug 7376 Transfer limits should be checked at check-in

koha-patchbot at kohaaloha.com koha-patchbot at kohaaloha.com
Fri Dec 30 04:00:03 NZDT 2011


From: Paul Poulain <paul.poulain at biblibre.com>
Date: Thu, 29 Dec 2011 15:49:53 +0100
Subject: [PATCH] Bug 7376 Transfer limits should be checked at check-in

Test case:
* UseBranchTransferLimits must be set
* define your branch transfer limit. Refuse transfers from libraryA to libraryB
* checkout a book owned by libraryB, from libraryB, with a librarian located at
libraryB
* move the librarian to libraryA ("Set Library" link top/right)
* check-in the book => it's possible whatever your setup

After the patch, the behaviour respect the branch transfer limit parameter: you
can check-in if you accept transfers, you can't if you refuse them.

(Note: IndependantBranches must be OFF, otherwise it's not possible to do the
checkin whatever the branch transfer limits)
---
 C4/Circulation.pm |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 9a6f4f2..b0463e6 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -1480,13 +1480,13 @@ sub AddReturn {
     $branch = C4::Context->userenv->{'branch'} unless $branch;  # we trust userenv to be a safe fallback/default
     my $messages;
     my $borrower;
-    my $biblio;
     my $doreturn       = 1;
     my $validTransfert = 0;
     my $stat_type = 'return';    
 
     # get information on item
     my $itemnumber = GetItemnumberFromBarcode( $barcode );
+    my $biblio = GetBiblioFromItemNumber($itemnumber);
     unless ($itemnumber) {
         return (0, { BadBarcode => $barcode }); # no barcode means no item or borrower.  bail out.
     }
@@ -1525,7 +1525,18 @@ sub AddReturn {
     }
 
     # if indy branches and returning to different branch, refuse the return
-    if ($hbr ne $branch && C4::Context->preference("IndependantBranches")){
+    # if we try a checkin that would result in a forbidden branchtransfer, refuse the return as well
+
+    # first, find branchtransferlimit value for this item
+    my $branchtransferlimitvalue='';
+    if ( C4::Context->preference("item-level_itypes") && C4::Context->preference("BranchTransferLimitsType") eq 'itemtype' ) {
+        $branchtransferlimitvalue=$item->{itype};
+    } elsif (C4::Context->preference("item-level_itypes") && C4::Context->preference("BranchTransferLimitsType") eq 'ccode' ) {
+       $branchtransferlimitvalue=$item->{ccode};
+    } else {
+        $branchtransferlimitvalue=$biblio->{itemtype};
+    }
+    if (($hbr ne $branch && C4::Context->preference("IndependantBranches")) or (!IsBranchTransferAllowed($hbr, $branch, $branchtransferlimitvalue ))) {
         $messages->{'Wrongbranch'} = {
             Wrongbranch => $branch,
             Rightbranch => $hbr,
@@ -2927,7 +2938,6 @@ Code is either an itemtype or collection doe depending on the pref BranchTransfe
 
 sub IsBranchTransferAllowed {
 	my ( $toBranch, $fromBranch, $code ) = @_;
-
 	if ( $toBranch eq $fromBranch ) { return 1; } ## Short circuit for speed.
         
 	my $limitType = C4::Context->preference("BranchTransferLimitsType");   
-- 
1.7.5.4


More information about the Patches mailing list