X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=members%2Fsummary-print.pl;h=6c6ed923ec3d27e690dedf310ecd50a098270fc4;hb=a925b07f7b5c182f2c8050886d58e08ce065eff3;hp=d2d3210b29f5f55802039d8f8aaf0882df207689;hpb=d46f180b2e4e6da7732fdc561e710fb0b9e18ea6;p=koha-ffzg.git diff --git a/members/summary-print.pl b/members/summary-print.pl index d2d3210b29..6c6ed923ec 100755 --- a/members/summary-print.pl +++ b/members/summary-print.pl @@ -2,31 +2,32 @@ # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 3 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use Modern::Perl; use CGI; -use C4::Auth; -use C4::Output; +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers ); use C4::Members; -use C4::Koha qw( getitemtypeinfo ); use C4::Circulation qw( GetIssuingCharges ); use C4::Reserves; -use C4::Items; +use Koha::DateUtils qw( dt_from_string ); use Koha::Holds; +use Koha::ItemTypes; +use Koha::Patrons; my $input = CGI->new; my $borrowernumber = $input->param('borrowernumber'); @@ -36,50 +37,33 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( template_name => "members/moremember-print.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => { circulate => "circulate_remaining_permissions" }, - debug => 1, } ); -my $data = GetMember( 'borrowernumber' => $borrowernumber ); +my $logged_in_user = Koha::Patrons->find( $loggedinuser ); +my $patron = Koha::Patrons->find( $borrowernumber ); +output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); -my ( $total, $accts, $numaccts ) = GetMemberAccountRecords($borrowernumber); -foreach my $accountline (@$accts) { - $accountline->{amount} = sprintf( '%.2f', $accountline->{amount} ) - if ( $accountline->{amount} ) ; - $accountline->{amountoutstanding} = sprintf( '%.2f', $accountline->{amountoutstanding} ) - if ( $accountline->{amountoutstanding} ); - - if ( $accountline->{accounttype} ne 'F' - && $accountline->{accounttype} ne 'FU' ) - { - $accountline->{printtitle} = 1; - } -} - -my $roadtype = - C4::Koha::GetAuthorisedValueByCode( 'ROADTYPE', $data->{streettype} ) // ''; -$roadtype = '' if ( ! $roadtype ); +my $total = $patron->account->balance; +my $accts = Koha::Account::Lines->search( + { borrowernumber => $patron->borrowernumber, amountoutstanding => { '!=' => 0 } }, + { order_by => { -desc => 'accountlines_id' } } +); our $totalprice = 0; -my $total_format = ''; -$total_format = sprintf( "%.2f", $total ) if ($total); my $holds_rs = Koha::Holds->search( { borrowernumber => $borrowernumber }, ); $template->param( - %$data, - - borrowernumber => $borrowernumber, - address => $data->{'streetnumber'} . " $roadtype " . $data->{'address'}, + patron => $patron, accounts => $accts, - totaldue => $total_format, + totaldue => $total, - issues => build_issue_data( GetPendingIssues($borrowernumber) ), + issues => build_issue_data( $borrowernumber ), totalprice => $totalprice, reserves => build_reserve_data( $holds_rs ), @@ -88,36 +72,33 @@ $template->param( output_html_with_http_headers $input, $cookie, $template->output; sub build_issue_data { - my $issues = shift; + my ( $borrowernumber ) = @_; + my $patron = Koha::Patrons->find( $borrowernumber ); + return unless $patron; - my $return = []; + my $pending_checkouts = $patron->pending_checkouts->search( {}, + { order_by => [ { -desc => 'date_due' }, { -asc => 'issue_id' } ] } ); - my $today = DateTime->now( time_zone => C4::Context->tz ); - $today->truncate( to => 'day' ); + my @checkouts; - foreach my $issue ( @{$issues} ) { + while ( my $c = $pending_checkouts->next ) { + my $checkout = $c->unblessed_all_relateds; - my %row = %{$issue}; - $totalprice += $issue->{replacementprice} - if ( $issue->{replacementprice} ); + $totalprice += $checkout->{replacementprice} + if $checkout->{replacementprice}; #find the charge for an item my ( $charge, $itemtype ) = - GetIssuingCharges( $issue->{itemnumber}, $borrowernumber ); + GetIssuingCharges( $checkout->{itemnumber}, $borrowernumber ); - my $itemtypeinfo = getitemtypeinfo($itemtype); - $row{'itemtype_description'} = $itemtypeinfo->{description}; + $checkout->{charge} = $charge; - $row{'charge'} = sprintf( "%.2f", $charge ); + $checkout->{overdue} = $c->is_overdue; - $row{date_due} = $row{date_due_sql}; - - push( @{$return}, \%row ); + push @checkouts, $checkout; } - @{$return} = sort { $a->{date_due} eq $b->{date_due} } @{$return}; - - return $return; + return \@checkouts; } @@ -126,18 +107,18 @@ sub build_reserve_data { my $return = []; - my $today = DateTime->now( time_zone => C4::Context->tz ); + my $today = dt_from_string(); $today->truncate( to => 'day' ); while ( my $reserve = $reserves->next() ) { -my $row = { - title => $reserve->biblio()->title(), - author => $reserve->biblio()->author(), - reservedate => $reserve->reservedate(), - expirationdate => $reserve->expirationdate(), - waiting_at => $reserve->branch()->branchname(), - }; + my $row = { + title => $reserve->biblio()->title(), + author => $reserve->biblio()->author(), + reservedate => $reserve->reservedate(), + expirationdate => $reserve->expirationdate(), + waiting_at => $reserve->branch()->branchname(), + }; push( @{$return}, $row ); }