Bug 11529: Remove duplicate column name from select query
[koha-ffzg.git] / circ / branchtransfers.pl
index 32e77f2..d5b8e9e 100755 (executable)
@@ -20,8 +20,7 @@
 # You should have received a copy of the GNU General Public License
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
-use warnings;
+use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Circulation;
 use C4::Output;
@@ -33,6 +32,7 @@ use C4::Koha;
 use C4::Members;
 use Koha::BiblioFrameworks;
 use Koha::AuthorisedValues;
+use Koha::Holds;
 use Koha::Items;
 use Koha::Patrons;
 
@@ -64,6 +64,12 @@ my ($template, $user, $cookie, $flags ) = get_template_and_user(
     }
 );
 
+# Check transfers is allowed from system preference
+if ( C4::Context->preference("IndependentBranchesTransfers") && !C4::Context->IsSuperLibrarian() ) {
+    print $query->redirect("/cgi-bin/koha/errors/403.pl");
+    exit;
+}
+
 my $messages;
 my $found;
 my $reserved;
@@ -81,12 +87,15 @@ my $ignoreRs = 0;
 # Deal with the requests....
 if ( $request eq "KillWaiting" ) {
     my $item = $query->param('itemnumber');
-    CancelReserve({
+    my $holds = Koha::Holds->search({
         itemnumber     => $item,
         borrowernumber => $borrowernumber
     });
-    $cancelled   = 1;
-    $reqmessage  = 1;
+    if ( $holds->count ) {
+        $holds->next->cancel;
+        $cancelled   = 1;
+        $reqmessage  = 1;
+    } # FIXME else?
 }
 elsif ( $request eq "SetWaiting" ) {
     my $item = $query->param('itemnumber');
@@ -96,29 +105,32 @@ elsif ( $request eq "SetWaiting" ) {
     $reqmessage  = 1;
 }
 elsif ( $request eq 'KillReserved' ) {
-    my $biblio = $query->param('biblionumber');
-    CancelReserve({
-        biblionumber   => $biblio,
+    my $biblionumber = $query->param('biblionumber');
+    my $holds = Koha::Holds->search({
+        biblionumber   => $biblionumber,
         borrowernumber => $borrowernumber
     });
-    $cancelled   = 1;
-    $reqmessage  = 1;
+    if ( $holds->count ) {
+        $holds->next->cancel;
+        $cancelled   = 1;
+        $reqmessage  = 1;
+    } # FIXME else?
 }
 
-# collect the stack of books already transfered so they can printed...
+# collect the stack of books already transferred so they can printed...
 my @trsfitemloop;
-my $transfered;
+my $transferred;
 my $barcode = $query->param('barcode');
 # remove leading/trailing whitespace
 defined $barcode and $barcode =~ s/^\s*|\s*$//g;  # FIXME: barcodeInputFilter
 # warn "barcode : $barcode";
 if ($barcode) {
 
-    ( $transfered, $messages ) =
+    ( $transferred, $messages ) =
       transferbook( $tobranchcd, $barcode, $ignoreRs );
     my $item = Koha::Items->find({ barcode => $barcode });
     $found = $messages->{'ResFound'};
-    if ($transfered) {
+    if ($transferred) {
         my %item;
         my $biblio = $item->biblio;
         my $frbranchcd =  C4::Context->userenv->{'branch'};
@@ -199,19 +211,12 @@ foreach my $code ( keys %$messages ) {
             $err{tbr}      = $tbr;
             $err{code}     = $typecode;
         }
-        elsif ( $code eq 'IsPermanent' ) {
-            $err{errispermanent} = 1;
-            $err{msg} = $messages->{'IsPermanent'};
-        }
         elsif ( $code eq 'WasReturned' ) {
             $err{errwasreturned} = 1;
             $err{borrowernumber} = $messages->{'WasReturned'};
             my $patron = Koha::Patrons->find( $messages->{'WasReturned'} );
             if ( $patron ) { # Just in case...
-                $err{title}      = $patron->title;
-                $err{firstname}  = $patron->firstname;
-                $err{surname}    = $patron->surname;
-                $err{cardnumber} = $patron->cardnumber;
+                $err{patron} = $patron;
             }
         }
         $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' );
@@ -221,6 +226,7 @@ foreach my $code ( keys %$messages ) {
 
 # use Data::Dumper;
 # warn "FINAL ============= ".Dumper(@trsfitemloop);
+
 $template->param(
     found                   => $found,
     reserved                => $reserved,
@@ -235,7 +241,7 @@ $template->param(
     setwaiting              => $setwaiting,
     trsfitemloop            => \@trsfitemloop,
     errmsgloop              => \@errmsgloop,
-    CircAutocompl           => C4::Context->preference("CircAutocompl")
+    CircAutocompl           => C4::Context->preference("CircAutocompl"),
 );
 
 # Checking if there is a Fast Cataloging Framework