X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fpay.pl;h=7e008d4f1a79390f13618a0db8f27ec4e28f8d09;hb=45cee0cec8684824d6e4e3cd83cd30b44c511c02;hp=8f5233cbf55baab4a834221f92e7818f6c5424e9;hpb=367c4fb8815bfe4a01869a25bcd8222989c15dcd;p=koha.git diff --git a/members/pay.pl b/members/pay.pl index 8f5233cbf5..7e008d4f1a 100755 --- a/members/pay.pl +++ b/members/pay.pl @@ -6,18 +6,18 @@ # # 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 2 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 . =head1 pay.pl @@ -29,26 +29,31 @@ use strict; use warnings; +use URI::Escape; use C4::Context; use C4::Auth; use C4::Output; -use CGI; +use CGI qw ( -utf8 ); use C4::Members; use C4::Accounts; use C4::Stats; use C4::Koha; use C4::Overdues; -use C4::Branch; use C4::Members::Attributes qw(GetBorrowerAttributes); +use Koha::Patron::Images; + +use Koha::Patron::Categories; +use URI::Escape; our $input = CGI->new; +my $updatecharges_permissions = $input->param('woall') ? 'writeoff' : 'remaining_permissions'; our ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { template_name => 'members/pay.tmpl', + { template_name => 'members/pay.tt', query => $input, type => 'intranet', authnotrequired => 0, - flagsrequired => { borrowers => 1, updatecharges => 1 }, + flagsrequired => { borrowers => 1, updatecharges => $updatecharges_permissions }, debug => 1, } ); @@ -65,8 +70,7 @@ our $borrower = GetMember( borrowernumber => $borrowernumber ); our $user = $input->remote_user; $user ||= q{}; -my $branches = GetBranches(); -our $branch = GetBranch( $input, $branches ); +our $branch = C4::Context->userenv->{'branch'}; my $writeoff_item = $input->param('confirm_writeoff'); my $paycollect = $input->param('paycollect'); @@ -83,11 +87,19 @@ my $writeoff_all = $input->param('woall'); # writeoff all fines if ($writeoff_all) { writeoff_all(@names); } elsif ($writeoff_item) { - my $accountno = $input->param('accountno'); - my $itemno = $input->param('itemnumber'); - my $account_type = $input->param('accounttype'); + my $accountlines_id = $input->param('accountlines_id'); my $amount = $input->param('amountoutstanding'); - WriteOffFee( $borrowernumber, $accountno, $itemno, $account_type, $amount, $branch ); + my $payment_note = $input->param("payment_note"); + + Koha::Account->new( { patron_id => $borrowernumber } )->pay( + { + amount => $amount, + lines => [Koha::Account::Lines->find($accountlines_id)], + type => 'writeoff', + note => $payment_note, + library_id => $branch, + } + ); } for (@names) { @@ -100,13 +112,16 @@ for (@names) { } } -$template->param( activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne '') ); +$template->param( + finesview => 1, + activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), + RoutingSerials => C4::Context->preference('RoutingSerials'), +); add_accounts_to_template(); output_html_with_http_headers $input, $cookie, $template->output; - sub add_accounts_to_template { my ( $total, undef, undef ) = GetMemberAccountRecords($borrowernumber); @@ -127,9 +142,15 @@ sub add_accounts_to_template { } } borrower_add_additional_fields($borrower); + + $template->param(%$borrower); + + my $patron_image = Koha::Patron::Images->find($borrower->{borrowernumber}); + $template->param( picture => 1 ) if $patron_image; $template->param( accounts => $accounts, borrower => $borrower, + categoryname => $borrower->{'description'}, total => $total, ); return; @@ -139,7 +160,7 @@ sub add_accounts_to_template { sub get_for_redirect { my ( $name, $name_in, $money ) = @_; my $s = q{&} . $name . q{=}; - my $value = $input->param($name_in); + my $value = uri_escape_utf8( $input->param($name_in) ); if ( !defined $value ) { $value = ( $money == 1 ) ? 0 : q{}; } @@ -161,12 +182,13 @@ sub redirect_to_paycollect { $redirect .= get_for_redirect( 'amount', "amount$line_no", 1 ); $redirect .= get_for_redirect( 'amountoutstanding', "amountoutstanding$line_no", 1 ); - $redirect .= get_for_redirect( 'accountno', "accountno$line_no", 0 ); - $redirect .= get_for_redirect( 'description', "description$line_no", 0 ); - $redirect .= get_for_redirect( 'title', "title$line_no", 0 ); + $redirect .= get_for_redirect( 'description', "description$line_no", 0 ); + $redirect .= get_for_redirect( 'title', "title$line_no", 0 ); $redirect .= get_for_redirect( 'itemnumber', "itemnumber$line_no", 0 ); $redirect .= get_for_redirect( 'notify_id', "notify_id$line_no", 0 ); $redirect .= get_for_redirect( 'notify_level', "notify_level$line_no", 0 ); + $redirect .= get_for_redirect( 'accountlines_id', "accountlines_id$line_no", 0 ); + $redirect .= q{&} . 'payment_note' . q{=} . uri_escape_utf8( $input->param("payment_note_$line_no") ); $redirect .= '&remote_user='; $redirect .= $user; return print $input->redirect($redirect); @@ -174,23 +196,29 @@ sub redirect_to_paycollect { sub writeoff_all { my @params = @_; - my @wo_lines = grep { /^accountno\d+$/ } @params; + my @wo_lines = grep { /^accountlines_id\d+$/ } @params; + + my $borrowernumber = $input->param('borrowernumber'); + for (@wo_lines) { if (/(\d+)/) { - my $value = $1; - my $accounttype = $input->param("accounttype$value"); - - # my $borrowernum = $input->param("borrowernumber$value"); - my $itemno = $input->param("itemnumber$value"); - my $amount = $input->param("amountoutstanding$value"); - my $accountno = $input->param("accountno$value"); - WriteOffFee( $borrowernumber, $accountno, $itemno, $accounttype, $amount, $branch ); + my $value = $1; + my $amount = $input->param("amountoutstanding$value"); + my $accountlines_id = $input->param("accountlines_id$value"); + my $payment_note = $input->param("payment_note_$value"); + Koha::Account->new( { patron_id => $borrowernumber } )->pay( + { + amount => $amount, + lines => [ Koha::Account::Lines->find($accountlines_id) ], + type => 'writeoff', + note => $payment_note, + library_id => $branch, + } + ); } } - $borrowernumber = $input->param('borrowernumber'); - print $input->redirect( - "/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); + print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); return; } @@ -201,22 +229,12 @@ sub borrower_add_additional_fields { # in a number of templates. It should not be the business of this script but in lieu of # a revised api here it is ... if ( $b_ref->{category_type} eq 'C' ) { - my ( $catcodes, $labels ) = - GetborCatFromCatType( 'A', 'WHERE category_type = ?' ); - if ( @{$catcodes} ) { - if ( @{$catcodes} > 1 ) { - $b_ref->{CATCODE_MULTI} = 1; - } elsif ( @{$catcodes} == 1 ) { - $b_ref->{catcode} = $catcodes->[0]; - } - } + my $patron_categories = Koha::Patron::Categories->search_limited({ category_type => 'A' }, {order_by => ['categorycode']}); + $template->param( 'CATCODE_MULTI' => 1) if $patron_categories->count > 1; + $template->param( 'catcode' => $patron_categories->next ) if $patron_categories->count == 1; } elsif ( $b_ref->{category_type} eq 'A' ) { $b_ref->{adultborrower} = 1; } - my ( $picture, $dberror ) = GetPatronImage( $b_ref->{cardnumber} ); - if ($picture) { - $b_ref->{has_picture} = 1; - } if (C4::Context->preference('ExtendedPatronAttributes')) { $b_ref->{extendedattributes} = GetBorrowerAttributes($borrowernumber); @@ -225,7 +243,6 @@ sub borrower_add_additional_fields { ); } - $b_ref->{branchname} = GetBranchName( $b_ref->{branchcode} ); return; } @@ -236,16 +253,18 @@ sub payselected { foreach (@params) { if (/^incl_par_(\d+)$/) { my $index = $1; - push @lines_to_pay, $input->param("accountno$index"); + push @lines_to_pay, $input->param("accountlines_id$index"); $amt += $input->param("amountoutstanding$index"); } } $amt = '&amt=' . $amt; my $sel = '&selected=' . join ',', @lines_to_pay; + my $notes = '¬es=' . join("%0A", map { $input->param("payment_note_$_") } @lines_to_pay ); my $redirect = "/cgi-bin/koha/members/paycollect.pl?borrowernumber=$borrowernumber" . $amt - . $sel; + . $sel + . $notes; print $input->redirect($redirect); return;