#!/usr/bin/perl #written 11/3/2002 by Finlay #script to execute returns of books use strict; use CGI; use C4::Circulation::Circ2; use C4::Search; use C4::Output; my %env; my $headerbackgroundcolor='#99cc33'; my $circbackgroundcolor='#ffffcc'; my $circbackgroundcolor='white'; my $linecolor1='#ffffcc'; my $linecolor2='white'; my $backgroundimage="/images/background-mem.gif"; my $query=new CGI; my $branches = getbranches(); my $branch = $query->param("branch"); my $printer = $query->param("printer"); ($branch) || ($branch=$query->cookie('branch')) ; ($printer) || ($printer=$query->cookie('printer')) ; # # Some code to handle the error if there is no branch or printer setting..... # $env{'branchcode'}=$branch; $env{'printer'}=$printer; $env{'queue'}=$printer; # Set up the item stack .... my $ritext = ''; my %returneditems; my %riduedate; my %riborrowernumber; foreach ($query->param) { (next) unless (/ri-(\d*)/); my $counter=$1; (next) if ($counter>20); my $barcode=$query->param("ri-$counter"); my $duedate=$query->param("dd-$counter"); my $borrowernumber=$query->param("bn-$counter"); $counter++; # decode cuecat $barcode = cuecatbarcodedecode($barcode); $returneditems{$counter}=$barcode; $riduedate{$counter}=$duedate; $riborrowernumber{$counter}=$borrowernumber; $ritext.="\n"; $ritext.="\n"; $ritext.="\n"; } my $iteminformation; my $borrower; my $returned = 0; my $messages; # actually return book (SQL CALL) and prepare item table..... if (my $barcode = $query->param('barcode')) { # decode cuecat $barcode = cuecatbarcodedecode($barcode); ($returned, $messages, $iteminformation, $borrower) = returnbook2(\%env, $barcode); if ($returned) { $returneditems{0} = $barcode; $riborrowernumber{0} = $borrower->{'borrowernumber'}; $riduedate{0} = $iteminformation->{'date_due'}; $ritext.= "\n"; $ritext.= "{'date_due'}>\n"; $ritext.= "{'borrowernumber'}>\n"; } } ################################################################################## # HTML code.... # title.... my $title = <<"EOF";

Next Borrower || Returns || Transfers

Circulation: Returns EOF my $itemtable; if ($iteminformation) { $itemtable = <<"EOF";
Returned Item Information
Title: $iteminformation->{'title'}

EOF } # Barcode entry box, with hidden inputs attached.... my $barcodeentrytext= << "EOF";

Enter Book Barcode
Item Barcode:
$ritext
EOF # collect the messages and put into message table.... my $messagetable; if ($messages) { my $messagetext=''; foreach (@$messages) { $messagetext .= "$_
"; } $messagetext = substr($messagetext, 0, -4); if ($messagetext) { $messagetable = << "EOF";
Messages
$messagetext

EOF } } # patrontable .... my $borrowertable; if ($borrower) { my $patrontable = << "EOF";
Patron Information
{'borrowernumber'} onClick="openWindow(this,'Member', 480, 640)">$borrower->{'cardnumber'} $borrower->{'surname'}, $borrower->{'title'} $borrower->{'firstname'}
EOF my $flags = $borrower->{'flags'}; my $flaginfotext=''; my $flag; my $color = ''; foreach $flag (sort keys %$flags) { ($color eq $linecolor1) ? ($color=$linecolor2) : ($color=$linecolor1); $flags->{$flag}->{'message'}=~s/\n/
/g; if ($flags->{$flag}->{'noissues'}) { if ($flag eq 'CHARGES') { $flaginfotext.= <<"EOF"; $flag $flags->{$flag}->{'message'} {'borrowernumber'} onClick=\"openWindow(this, 'Payment', 480,640)\">Payment EOF } else { $flaginfotext.= <<"EOF"; $flag $flags->{$flag}->{'message'} EOF } } else { if ($flag eq 'CHARGES') { $flaginfotext .= << "EOF"; $flag $flags->{$flag}->{'message'} {'borrowernumber'} onClick=\"openWindow(this, 'Payment', 480,640)\">Payment EOF } elsif ($flag eq 'WAITING') { my $itemswaiting=''; my $items = $flags->{$flag}->{'itemlist'}; foreach my $item (@$items) { my ($iteminformation) = getiteminformation(\%env, $item->{'itemnumber'}, 0); $itemswaiting .= <<"EOF"; {'biblionumber'}&type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$iteminformation->{'barcode'} $iteminformation->{'title'} ($branches->{$iteminformation->{'holdingbranch'}}->{'branchname'})
EOF } $flaginfotext.="$flag$itemswaiting\n"; } elsif ($flag eq 'ODUES') { my $items = $flags->{$flag}->{'itemlist'}; $flaginfotext .= <<"EOF"; $flag Patron has Overdue books EOF } else { $flaginfotext .= "$flag$flags->{$flag}->{'message'}\n"; } } } if ($flaginfotext) { $flaginfotext = << "EOF"; $flaginfotext
Flags
EOF } $borrowertable = << "EOF";
$patrontable $flaginfotext
EOF } # the returned items..... my $returneditemstable = << "EOF";

EOF my $color=''; #set up so only the lat 8 returned items display (make for faster loading pages) my $count=0; foreach (sort {$a <=> $b} keys %returneditems) { if ($count < 8) { ($color eq $linecolor1) ? ($color=$linecolor2) : ($color=$linecolor1); my $barcode = $returneditems{$_}; my $duedate = $riduedate{$_}; my @datearr = localtime(time()); ### # convert to nz date format my @tempdate = split(/-/,$duedate); $duedate = "$tempdate[2]/$tempdate[1]/$tempdate[0]"; #### my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]); my $overduetext = "$duedate"; ($overduetext="$duedate") if ($duedate lt $todaysdate); ($duedate) || ($overduetext = ""); my $borrowernumber = $riborrowernumber{$_}; my ($borrower) = getpatroninformation(\%env,$borrowernumber,0); my ($iteminformation) = getiteminformation(\%env, 0, $barcode);; $returneditemstable .= << "EOF"; EOF } else { last; } $count++; } $returneditemstable .= "
Returned Items
Due DateBar CodeTitleAuthorTypeBorrower
$overduetext {'biblionumber'}&type=intra onClick=\"openWindow(this, 'Item', 480, 640)\">$barcode $iteminformation->{'title'} $iteminformation->{'author'} $iteminformation->{'itemtype'} {'borrowernumber'} onClick=\"openWindow(this,'Member', 480, 640)\">$borrower->{'cardnumber'} $borrower->{'firstname'} $borrower->{'surname'}
\n"; # actually print the page! print $query->header(); print startpage(); print startmenu('circulation'); print $title; # my $flags = $borrower->{'flags'}; # foreach my $key (keys %$flags) { # print "$key : $flags->{$key}
"; # } print $barcodeentrytext; print $messagetable; if ($returned) { print $itemtable; print $borrowertable; } (print $returneditemstable) if (%returneditems); print endmenu('circulation'); print endpage(); sub cuecatbarcodedecode { my ($barcode) = @_; chomp($barcode); my @fields = split(/\./,$barcode); my @results = map(decode($_), @fields[1..$#fields]); if ($#results == 2){ return $results[2]; } else { return $barcode; } }