X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=members%2Fmoremember.pl;h=b766f2f9f7143e1fb7ae47f34db4a7ed691ed609;hb=306dc79217783ebd7896be64deee12491febc4d3;hp=cc2f153f59e61d31c00c99732c8297eb6f1ae93b;hpb=2a3f7c141798121a75fc9ee670af0fdde431d9c2;p=koha_fer diff --git a/members/moremember.pl b/members/moremember.pl index cc2f153f59..b766f2f9f7 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl # Copyright 2000-2002 Katipo Communications +# Copyright 2010 BibLibre # # This file is part of Koha. # @@ -50,6 +51,7 @@ use C4::Reserves; use C4::Branch; # GetBranchName use C4::Form::MessagingPreferences; use C4::NewsChannels; #get slip news +use List::MoreUtils qw/uniq/; #use Smart::Comments; #use Data::Dumper; @@ -157,7 +159,7 @@ my $catcode; if ( $category_type eq 'C') { if ($data->{guarantorid} ) { my $data2 = GetMember( 'borrowernumber' => $data->{'guarantorid'} ); - foreach (qw(address city B_address B_city phone mobile zipcode country B_country)) { + foreach (qw(address address2 city state B_address B_address2 B_city B_state phone mobile zipcode B_zipcode country B_country)) { $data->{$_} = $data2->{$_}; } } @@ -238,73 +240,94 @@ if ( C4::Context->preference('OPACPrivacy') ) { # current issues # -my $issue = GetPendingIssues($borrowernumber); +my @borrowernumbers = GetMemberRelatives($borrowernumber); +my $issue = GetPendingIssues($borrowernumber); +my $relissue = GetPendingIssues(@borrowernumbers); my $issuecount = scalar(@$issue); +my $relissuecount = scalar(@$relissue); my $roaddetails = &GetRoadTypeDetails( $data->{'streettype'} ); my $today = POSIX::strftime("%Y-%m-%d", localtime); # iso format my @issuedata; +my @borrowers_with_issues; my $overdues_exist = 0; my $totalprice = 0; -for ( my $i = 0 ; $i < $issuecount ; $i++ ) { - 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; + +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; + 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 ); } - # 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( @issuedata, \%row ); + return $localissue; } + ### ############################################################################### # BUILD HTML # show all reserves of this borrower, and the position of the reservation .... @@ -404,7 +427,7 @@ $template->param( picture => 1 ) if $picture; my $branch=C4::Context->userenv->{'branch'}; -$template->param($data); +$template->param(%$data); if (C4::Context->preference('ExtendedPatronAttributes')) { $template->param(ExtendedPatronAttributes => 1); @@ -436,8 +459,10 @@ $template->param( totalprice => sprintf("%.2f", $totalprice), totaldue => sprintf("%.2f", $total), totaldue_raw => $total, - issueloop => \@issuedata, - issuecount => $issuecount, + issueloop => @issuedata, + relissueloop => @relissuedata, + issuecount => $issuecount, + relissuecount => $relissuecount, overdues_exist => $overdues_exist, error => $error, $error => 1,