X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Fbranchtransfers.pl;h=7e0cb75678cf488e3ac20c6f93b5056e709e64f0;hb=363ea5ce08c6e7c729a3d407b498bf89ea8a9d25;hp=4e22c1cf9209de2d8c19f0b9b25665fb9466653b;hpb=c596d553740ebb6299b133fc6b71ca47ed0ff2e7;p=koha_gimpoz diff --git a/circ/branchtransfers.pl b/circ/branchtransfers.pl index 4e22c1cf92..7e0cb75678 100755 --- a/circ/branchtransfers.pl +++ b/circ/branchtransfers.pl @@ -1,10 +1,9 @@ #!/usr/bin/perl -# WARNING: This file uses 4-character tabs! -#written 11/3/2002 by Finlay #script to execute branch transfers of books # Copyright 2000-2002 Katipo Communications +# copyright 2010 BibLibre # # This file is part of Koha. # @@ -17,37 +16,52 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +use warnings; use CGI; use C4::Circulation; use C4::Output; -use C4::Reserves2; -use C4::Auth; -use C4::Interface::CGI::Output; +use C4::Reserves; +use C4::Biblio; +use C4::Items; +use C4::Auth qw/:DEFAULT get_session/; use C4::Branch; # GetBranches use C4::Koha; - -############################################### -# constants - -my %env; -my $branches = GetBranches; -my $printers = GetPrinters( \%env ); +use C4::Members; ############################################### # Getting state my $query = new CGI; -my $branch = GetBranch( $query, $branches ); -my $printer = GetPrinter( $query, $printers ); +if (!C4::Context->userenv){ + my $sessionID = $query->cookie("CGISESSID"); + my $session; + $session = get_session($sessionID) if $sessionID; + if (!$session or $session->param('branch') eq 'NO_LIBRARY_SET'){ + # no branch set we can't transfer + print $query->redirect("/cgi-bin/koha/circ/selectbranchprinter.pl"); + exit; + } +} + +####################################################################################### +# Make the page ..... +my ($template, $user, $cookie) = get_template_and_user( + { + template_name => "circ/branchtransfers.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { circulate => "circulate_remaining_permissions" }, + } +); -my $genbrname = $branches->{$branch}->{'branchname'}; -my $genprname = $printers->{$printer}->{'printername'}; +my $branches = GetBranches; my $messages; my $found; @@ -56,92 +70,68 @@ my $waiting; my $reqmessage; my $cancelled; my $setwaiting; -my $reqbrchname; -my $allmessages; - -my $request = $query->param('request'); -my $borrowernumber = $query->param('borrowernumber'); -my $tobranchcd = $query->param('tobranchcd'); -my $frbranchcd = ''; +my $request = $query->param('request') || ''; +my $borrowernumber = $query->param('borrowernumber') || 0; +my $tobranchcd = $query->param('tobranchcd') || ''; +my $ignoreRs = 0; ############ # Deal with the requests.... if ( $request eq "KillWaiting" ) { my $item = $query->param('itemnumber'); - CancelReserve( 0, $item, $borrowernumber ); $cancelled = 1; $reqmessage = 1; - $allmessages = 1; } - -my $ignoreRs = 0; -if ( $request eq "SetWaiting" ) { +elsif ( $request eq "SetWaiting" ) { my $item = $query->param('itemnumber'); - $tobranchcd = ReserveWaiting( $item, $borrowernumber ); - $reqbrchname = $branches->{$tobranchcd}->{'branchname'}; + ModReserveAffect( $item, $borrowernumber ); $ignoreRs = 1; $setwaiting = 1; $reqmessage = 1; - $allmessages = 1; } -if ( $request eq 'KillReserved' ) { +elsif ( $request eq 'KillReserved' ) { my $biblio = $query->param('biblionumber'); CancelReserve( $biblio, 0, $borrowernumber ); $cancelled = 1; $reqmessage = 1; - $allmessages = 1; -} - -# set up the branchselect options.... -my @branchoptionloop; -foreach my $br ( keys %$branches ) { - - #(next) unless $branches->{$br}->{'CU'}; #FIXME disabled to fix bug 202 - my %branch; - $branch{selected} = ( $br eq $tobranchcd ); - $branch{code} = $br; - $branch{name} = $branches->{$br}->{'branchname'}; - push( @branchoptionloop, \%branch ); } # collect the stack of books already transfered so they can printed... my @trsfitemloop; my %transfereditems; -my %frbranchcds; -my %tobranchcds; my $transfered; my $barcode = $query->param('barcode'); +# strip whitespace +defined $barcode and $barcode =~ s/\s*//g; # FIXME: barcodeInputFilter +# warn "barcode : $barcode"; if ($barcode) { my $iteminformation; ( $transfered, $messages, $iteminformation ) = transferbook( $tobranchcd, $barcode, $ignoreRs ); +# use Data::Dumper; +# warn "Transfered : $transfered / ".Dumper($messages); $found = $messages->{'ResFound'}; if ($transfered) { my %item; - my $frbranchcd = $iteminformation->{'frbranchcd'}; - if ( not($found) ) { - $item{'biblionumber'} = $iteminformation->{'biblionumber'}; - $item{'title'} = $iteminformation->{'title'}; - $item{'author'} = $iteminformation->{'author'}; - $item{'itemtype'} = $iteminformation->{'itemtype'}; - $item{'ccode'} = $iteminformation->{'ccode'}; - $item{'frbrname'} = $branches->{$frbranchcd}->{'branchname'}; - $item{'tobrname'} = $branches->{$tobranchcd}->{'branchname'}; - } + my $frbranchcd = C4::Context->userenv->{'branch'}; +# if ( not($found) ) { + $item{'biblionumber'} = $iteminformation->{'biblionumber'}; + $item{'title'} = $iteminformation->{'title'}; + $item{'author'} = $iteminformation->{'author'}; + $item{'itemtype'} = $iteminformation->{'itemtype'}; + $item{'ccode'} = $iteminformation->{'ccode'}; + $item{'frbrname'} = $branches->{$frbranchcd}->{'branchname'}; + $item{'tobrname'} = $branches->{$tobranchcd}->{'branchname'}; +# } $item{counter} = 0; $item{barcode} = $barcode; $item{frombrcd} = $frbranchcd; $item{tobrcd} = $tobranchcd; -########## - #Are these lines still useful ??? - $transfereditems{0} = $barcode; - $frbranchcds{0} = $frbranchcd; - $tobranchcds{0} = $tobranchcd; -########## push( @trsfitemloop, \%item ); +# warn Dumper(@trsfitemloop); } } @@ -157,7 +147,7 @@ foreach ( $query->param ) { $item{barcode} = $bc; $item{frombrcd} = $frbcd; $item{tobrcd} = $tobcd; - my ($iteminformation) = GetBiblioFromItemNumer( 0, $bc ); + my ($iteminformation) = GetBiblioFromItemNumber( GetItemnumberFromBarcode($bc) ); $item{'biblionumber'} = $iteminformation->{'biblionumber'}; $item{'title'} = $iteminformation->{'title'}; $item{'author'} = $iteminformation->{'author'}; @@ -165,159 +155,87 @@ foreach ( $query->param ) { $item{'ccode'} = $iteminformation->{'ccode'}; $item{'frbrname'} = $branches->{$frbcd}->{'branchname'}; $item{'tobrname'} = $branches->{$tobcd}->{'branchname'}; -########## - #Are these lines still useful ??? - $transfereditems{$counter} = $bc; - $frbranchcds{$counter} = $frbcd; - $tobranchcds{$counter} = $tobcd; -######### push( @trsfitemloop, \%item ); } -my $title; -my $surname; -my $firstname; -my $borphone; -my $borstraddress; -my $borcity; -my $borzip; -my $boremail; -my $borcnum; my $itemnumber; -my $biblionum; -my $branchname; -my $wastransferred; +my $biblionumber; ##################### if ($found) { my $res = $messages->{'ResFound'}; - $branchname = $branches->{ $res->{'branchcode'} }->{'branchname'}; - my ($borr) = GetMemberDetails( $res->{'borrowernumber'}, 0 ); - $title = $borr->{'title'}; - $surname = $borr->{'surname'}; - $firstname = $borr->{'firstname'}; - $borrowernumber = $borr->{'borrowernumber'}; - $borphone = $borr->{'phone'}; - $borstraddress = $borr->{'streetaddress'}; - $borcity = $borr->{'city'}; - $borzip = $borr->{'zipcode'}; - $boremail = $borr->{'emailadress'}; - - #Hopefully, borr->{borrowernumber}=res->{borrowernumber} - $borcnum = $borr->{'cardnumber'}; $itemnumber = $res->{'itemnumber'}; if ( $res->{'ResFound'} eq "Waiting" ) { $waiting = 1; } - if ( $res->{'ResFound'} eq "Reserved" ) { + elsif ( $res->{'ResFound'} eq "Reserved" ) { $reserved = 1; - $biblionum = $res->{'biblionumber'}; + $biblionumber = $res->{'biblionumber'}; } } ##################### +# Used for branch transfer limits error messages. +my $codeTypeDescription = 'Collection Code'; +my $codeType = C4::Context->preference("BranchTransferLimitsType"); +if ( $codeType eq 'itemtype' ) { + $codeTypeDescription = 'Item Type'; +} + my @errmsgloop; foreach my $code ( keys %$messages ) { my %err; - if ( $code eq 'BadBarcode' ) { $err{msg} = $messages->{'BadBarcode'}; $err{errbadcode} = 1; - $allmessages = 1; } - - if ( $code eq 'IsPermanent' ) { + elsif ( $code eq "NotAllowed" ) { + warn "NotAllowed: $messages->{'NotAllowed'} to " . $branches->{ $messages->{'NotAllowed'} }->{'branchname'}; + # Do we really want a error log message here? --atz + $err{errnotallowed} = 1; + my ( $tbr, $typecode ) = split( /::/, $messages->{'NotAllowed'} ); + $err{tbr} = $branches->{ $tbr }->{'branchname'}; + $err{code} = $typecode; + $err{codeType} = $codeTypeDescription; + } + elsif ( $code eq 'IsPermanent' ) { $err{errispermanent} = 1; $err{msg} = $branches->{ $messages->{'IsPermanent'} }->{'branchname'}; - - # Here, msg contains the branchname - # Not so satisfied with this... But should work - $allmessages = 1; } - $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' ); - - if ( $code eq 'WasReturned' ) { + elsif ( $code eq 'WasReturned' ) { $err{errwasreturned} = 1; - $allmessages = 1; - my ($borrowerinfo) = - GetMemberDetails( $messages->{'WasReturned'}, 0 ); - $title = $borrowerinfo->{'title'}; - $surname = $borrowerinfo->{'surname'}; - $firstname = $borrowerinfo->{'firstname'}; - $borrowernumber = $borrowerinfo->{'borrowernumber'}; - $borcnum = $borrowerinfo->{'cardnumber'}; + $err{borrowernumber} = $messages->{'WasReturned'}; + my $borrower = GetMember('borrowernumber'=>$messages->{'WasReturned'}); + $err{title} = $borrower->{'title'}; + $err{firstname} = $borrower->{'firstname'}; + $err{surname} = $borrower->{'surname'}; + $err{cardnumber} = $borrower->{'cardnumber'}; } - - # if ($code eq 'WasTransfered'){ - # Put code here if you want to notify the user that item was transfered... - # $wastransferred = 1; - # } + $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' ); push( @errmsgloop, \%err ); } -####################################################################################### -# Make the page ..... -my ( $template, $cookie ); -( $template, $borrowernumber, $cookie ) = get_template_and_user( - { - template_name => "circ/branchtransfers.tmpl", - query => $query, - type => "intranet", - authnotrequired => 0, - flagsrequired => { circulate => 1 }, - } -); -if ($allmessages) { - $template->param( allmessages => 1 ); -} - +# use Data::Dumper; +# warn "FINAL ============= ".Dumper(@trsfitemloop); $template->param( - genbrname => $genbrname, - genprname => $genprname, - branch => $branch, - printer => $printer, found => $found, reserved => $reserved, waiting => $waiting, - title => $title, - surname => $surname, - firstname => $firstname, - borphone => $borphone, - borstraddress => $borstraddress, - borcity => $borcity, - borzip => $borzip, - boremail => $boremail, borrowernumber => $borrowernumber, - borcnum => $borcnum, - branchname => $branchname, itemnumber => $itemnumber, barcode => $barcode, - biblionumber => $biblionum, + biblionumber => $biblionumber, tobranchcd => $tobranchcd, reqmessage => $reqmessage, cancelled => $cancelled, setwaiting => $setwaiting, - wastransferred => $wastransferred, trsfitemloop => \@trsfitemloop, - branchoptionloop => \@branchoptionloop, + branchoptionloop => GetBranchesLoop($tobranchcd), errmsgloop => \@errmsgloop, - intranetcolorstylesheet => - C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), + CircAutocompl => C4::Context->preference("CircAutocompl") ); output_html_with_http_headers $query, $cookie, $template->output; -sub name { - my ($borinfo) = @_; - return $borinfo->{'surname'} . " " - . $borinfo->{'title'} . " " - . $borinfo->{'firstname'}; -} - -# Local Variables: -# tab-width: 4 -# End: