X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=members%2Fboraccount.pl;h=83fa43bf653b17cb11b756eb08fd7386eebf56e6;hb=a3087d76bd31f59ac437e63d7031b2202cb64e5c;hp=eebc8d3a44ab4060ba03f0771d1c73577faa3467;hpb=81ee945a580189e79a268f60d9e7638e92e85f26;p=koha-ffzg.git diff --git a/members/boraccount.pl b/members/boraccount.pl index eebc8d3a44..83fa43bf65 100755 --- a/members/boraccount.pl +++ b/members/boraccount.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -#writen 11/1/2000 by chris@katipo.oc.nz +#written 11/1/2000 by chris@katipo.oc.nz #script to display borrowers account details @@ -9,126 +9,211 @@ # # 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 . -use strict; -use warnings; +use Modern::Perl; +use URI::Escape qw( uri_unescape ); -use C4::Auth; -use C4::Output; -use C4::Dates qw/format_date/; -use CGI; +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 CGI qw ( -utf8 ); use C4::Members; -use C4::Branch; use C4::Accounts; -use C4::Members::Attributes qw(GetBorrowerAttributes); +use Koha::Cash::Registers; +use Koha::Patrons; +use Koha::Patron::Categories; +use Koha::Items; +use Koha::Token; + +my $input=CGI->new; + + +my ($template, $loggedinuser, $cookie) = get_template_and_user( + { + template_name => "members/boraccount.tt", + query => $input, + type => "intranet", + flagsrequired => { borrowers => 'edit_borrowers', + updatecharges => 'remaining_permissions'}, + } +); -my $input=new CGI; +my $schema = Koha::Database->new->schema; +my $borrowernumber = $input->param('borrowernumber'); +my $payment_id = $input->param('payment_id'); +my $change_given = $input->param('change_given'); +my $action = $input->param('action') || ''; +my @renew_results = $input->multi_param('renew_result'); + +my $logged_in_user = Koha::Patrons->find( $loggedinuser ); +my $library_id = C4::Context->userenv->{'branch'}; +my $patron = Koha::Patrons->find( $borrowernumber ); +unless ( $patron ) { + print $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber"); + exit; +} +output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "members/boraccount.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {borrowers => 1, updatecharges => 1}, - debug => 1, - }); +my $registerid = $input->param('registerid'); -my $borrowernumber=$input->param('borrowernumber'); -my $action = $input->param('action') || ''; +if ( $action eq 'void' ) { + my $payment_id = scalar $input->param('accountlines_id'); + my $payment = Koha::Account::Lines->find( $payment_id ); + $payment->void( + { + branch => $library_id, + staff_id => $logged_in_user->id, + interface => 'intranet', + } + ); +} -#get borrower details -my $data=GetMember('borrowernumber' => $borrowernumber); +if ( $action eq 'payout' ) { + my $payment_id = scalar $input->param('accountlines_id'); + my $amount = scalar $input->param('amount'); + my $payout_type = scalar $input->param('payout_type'); + if ( $payment_id eq "" ) { + $schema->txn_do( + sub { + $patron->account->payout_amount( + { + payout_type => $payout_type, + branch => $library_id, + staff_id => $logged_in_user->id, + cash_register => $registerid, + interface => 'intranet', + amount => $amount + } + ); + } + ); + } else { + my $payment = Koha::Account::Lines->find($payment_id); + $schema->txn_do( + sub { + my $payout = $payment->payout( + { + payout_type => $payout_type, + branch => $library_id, + staff_id => $logged_in_user->id, + cash_register => $registerid, + interface => 'intranet', + amount => $amount + } + ); + } + ); + } +} -if ( $action eq 'reverse' ) { - ReversePayment( $input->param('accountlines_id') ); +if ( $action eq 'refund' ) { + my $charge_id = scalar $input->param('accountlines_id'); + my $charge = Koha::Account::Lines->find($charge_id); + my $amount = scalar $input->param('amount'); + my $refund_type = scalar $input->param('refund_type'); + $schema->txn_do( + sub { + + my $refund = $charge->reduce( + { + reduction_type => 'REFUND', + branch => $library_id, + staff_id => $logged_in_user->id, + interface => 'intranet', + amount => $amount + } + ); + unless ( $refund_type eq 'AC' ) { + my $payout = $refund->payout( + { + payout_type => $refund_type, + branch => $library_id, + staff_id => $logged_in_user->id, + cash_register => $registerid, + interface => 'intranet', + amount => $amount + } + ); + } + } + ); } -if ( $data->{'category_type'} eq 'C') { - my ( $catcodes, $labels ) = GetborCatFromCatType( 'A', 'WHERE category_type = ?' ); - my $cnt = scalar(@$catcodes); - $template->param( 'CATCODE_MULTI' => 1) if $cnt > 1; - $template->param( 'catcode' => $catcodes->[0]) if $cnt == 1; +if ( $action eq 'discount' ) { + my $charge_id = scalar $input->param('accountlines_id'); + my $charge = Koha::Account::Lines->find($charge_id); + my $amount = scalar $input->param('amount'); + $schema->txn_do( + sub { + + my $discount = $charge->reduce( + { + reduction_type => 'DISCOUNT', + branch => $library_id, + staff_id => $logged_in_user->id, + interface => 'intranet', + amount => $amount + } + ); + } + ); } #get account details -my ($total,$accts,undef)=GetMemberAccountRecords($borrowernumber); +my $total = $patron->account->balance; + +my $accountlines = Koha::Account::Lines->search( + { borrowernumber => $patron->borrowernumber }, + { order_by => { -desc => 'accountlines_id' } } +); + my $totalcredit; if($total <= 0){ $totalcredit = 1; } -my $reverse_col = 0; # Flag whether we need to show the reverse column -foreach my $accountline ( @{$accts}) { - $accountline->{amount} += 0.00; - if ($accountline->{amount} <= 0 ) { - $accountline->{amountcredit} = 1; - } - $accountline->{amountoutstanding} += 0.00; - if ( $accountline->{amountoutstanding} <= 0 ) { - $accountline->{amountoutstandingcredit} = 1; - } - - $accountline->{date} = format_date($accountline->{date}); - $accountline->{amount} = sprintf '%.2f', $accountline->{amount}; - $accountline->{amountoutstanding} = sprintf '%.2f', $accountline->{amountoutstanding}; - if ($accountline->{accounttype} eq 'Pay') { - $accountline->{payment} = 1; - $reverse_col = 1; +# Populate an arrayref with everything we need to display any +# renew errors that occurred based on what we were passed +my $renew_results_display = []; +foreach my $renew_result(@renew_results) { + my ($itemnumber, $success, $info) = split(/,/, $renew_result); + my $item = Koha::Items->find($itemnumber); + if ($success) { + $info = uri_unescape($info); } + push @{$renew_results_display}, { + item => $item, + success => $success, + info => $info + }; } -$template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' ); - -my ($picture, $dberror) = GetPatronImage($data->{'cardnumber'}); -$template->param( picture => 1 ) if $picture; - -if (C4::Context->preference('ExtendedPatronAttributes')) { - my $attributes = GetBorrowerAttributes($borrowernumber); - $template->param( - ExtendedPatronAttributes => 1, - extendedattributes => $attributes - ); -} +my $csrf_token = Koha::Token->new->generate_csrf({ + session_id => scalar $input->cookie('CGISESSID'), +}); $template->param( + patron => $patron, finesview => 1, - firstname => $data->{'firstname'}, - surname => $data->{'surname'}, - othernames => $data->{'othernames'}, - borrowernumber => $borrowernumber, - cardnumber => $data->{'cardnumber'}, - categorycode => $data->{'categorycode'}, - category_type => $data->{'category_type'}, - categoryname => $data->{'description'}, - address => $data->{'address'}, - address2 => $data->{'address2'}, - city => $data->{'city'}, - state => $data->{'state'}, - zipcode => $data->{'zipcode'}, - country => $data->{'country'}, - phone => $data->{'phone'}, - email => $data->{'email'}, - branchcode => $data->{'branchcode'}, - branchname => GetBranchName($data->{'branchcode'}), total => sprintf("%.2f",$total), totalcredit => $totalcredit, - is_child => ($data->{'category_type'} eq 'C'), - reverse_col => $reverse_col, - accounts => $accts, - activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), + accounts => $accountlines, + payment_id => $payment_id, + change_given => $change_given, + renew_results => $renew_results_display, + csrf_token => $csrf_token, ); output_html_with_http_headers $input, $cookie, $template->output;