- #find the charge for an item
- my ( $charge, $itemtype ) =
- GetIssuingCharges( $issue->[$i]{'itemnumber'}, $borrowernumber );
-
- my $itemtypeinfo = getitemtypeinfo($itemtype);
- $row{'itemtype_description'} = $itemtypeinfo->{description};
- $row{'itemtype_image'} = $itemtypeinfo->{imageurl};
-
- $row{'charge'} = sprintf( "%.2f", $charge );
-
- my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'});
- $row{'norenew'} = !$renewokay;
- $row{'norenew_reason'} = $renewerror;
- $row{'renew_failed'} = $renew_failed[$issue->[$i]{'itemnumber'}];
- $row{'return_failed'} = $return_failed[$issue->[$i]{'barcode'}];
- push( @issuedata, \%row );
+my @issuedata = build_issue_data($issue, $issuecount);
+my @relissuedata = build_issue_data($relissue, $relissuecount);
+
+sub build_issue_data {
+ my $issue = shift;
+ my $issuecount = shift;
+
+ my $localissue;
+
+ for ( my $i = 0 ; $i < $issuecount ; $i++ ) {
+ # Getting borrower details
+ my $memberdetails = GetMemberDetails($issue->[$i]{'borrowernumber'});
+ $issue->[$i]{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'};
+ $issue->[$i]{'cardnumber'} = $memberdetails->{'cardnumber'};
+ my $datedue = $issue->[$i]{'date_due'};
+ my $issuedate = $issue->[$i]{'issuedate'};
+ $issue->[$i]{'date_due'} = C4::Dates->new($issue->[$i]{'date_due'}, 'iso')->output('syspref');
+ $issue->[$i]{'issuedate'} = C4::Dates->new($issue->[$i]{'issuedate'},'iso')->output('syspref');
+ my $biblionumber = $issue->[$i]{'biblionumber'};
+ my %row = %{ $issue->[$i] };
+ $totalprice += $issue->[$i]{'replacementprice'};
+ $row{'replacementprice'} = $issue->[$i]{'replacementprice'};
+ # item lost, damaged loops
+ if ($row{'itemlost'}) {
+ my $fw = GetFrameworkCode($issue->[$i]{'biblionumber'});
+ my $category = GetAuthValCode('items.itemlost',$fw);
+ my $lostdbh = C4::Context->dbh;
+ my $sth = $lostdbh->prepare("select lib from authorised_values where category=? and authorised_value =? ");
+ $sth->execute($category, $row{'itemlost'});
+ my $loststat = $sth->fetchrow;
+ if ($loststat) {
+ $row{'itemlost'} = $loststat;
+ }
+ }
+ if ($row{'damaged'}) {
+ my $fw = GetFrameworkCode($issue->[$i]{'biblionumber'});
+ my $category = GetAuthValCode('items.damaged',$fw);
+ my $damageddbh = C4::Context->dbh;
+ my $sth = $damageddbh->prepare("select lib from authorised_values where category=? and authorised_value =? ");
+ $sth->execute($category, $row{'damaged'});
+ my $damagedstat = $sth->fetchrow;
+ if ($damagedstat) {
+ $row{'itemdamaged'} = $damagedstat;
+ }
+ }
+ # end lost, damaged
+ if ( $datedue lt $today ) {
+ $overdues_exist = 1;
+ $row{'red'} = 1;
+ }
+ if ( $issuedate eq $today ) {
+ $row{'today'} = 1;
+ }
+
+ #find the charge for an item
+ my ( $charge, $itemtype ) =
+ GetIssuingCharges( $issue->[$i]{'itemnumber'}, $borrowernumber );
+
+ my $itemtypeinfo = getitemtypeinfo($itemtype);
+ $row{'itemtype_description'} = $itemtypeinfo->{description};
+ $row{'itemtype_image'} = $itemtypeinfo->{imageurl};
+
+ $row{'charge'} = sprintf( "%.2f", $charge );
+
+ my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit );
+ $row{'norenew'} = !$renewokay;
+ $row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' );
+ $row{"norenew_reason_$renewerror"} = 1 if $renewerror;
+ $row{'renew_failed'} = $renew_failed{ $issue->[$i]{'itemnumber'} };
+ $row{'return_failed'} = $return_failed{$issue->[$i]{'barcode'}};
+ push( @$localissue, \%row );
+ }
+ return $localissue;