Koha/members/maninvoice.pl
Julian Maurice 24154f2ec9
Bug 14898: Add button at manual invoice to redirect to pay tab
Test plan:
1. Create manual invoice for any patron and click on "Save", you should
   be redirected to Account tab
2. Create manual invoice for any patron and click on "Save and pay", you
   should be redirected to Account tab

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-02-20 09:04:27 +00:00

147 lines
4.4 KiB
Perl
Executable file

#!/usr/bin/perl
#written 11/1/2000 by chris@katipo.oc.nz
#script to display borrowers account details
# Copyright 2000-2002 Katipo Communications
# Copyright 2010 BibLibre
# Copyright 2019 PTFS Europe
#
# 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 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, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use C4::Auth;
use C4::Output;
use CGI qw ( -utf8 );
use C4::Members;
use C4::Accounts;
use C4::Items;
use Koha::Token;
use Koha::Items;
use Koha::Patrons;
use Koha::Patron::Categories;
use Koha::Account::DebitTypes;
my $input = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "members/maninvoice.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {
borrowers => 'edit_borrowers',
updatecharges => 'remaining_permissions'
}
}
);
my $borrowernumber = $input->param('borrowernumber');
my $patron = Koha::Patrons->find($borrowernumber);
unless ($patron) {
print $input->redirect(
"/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber");
exit;
}
my $library_id = C4::Context->userenv->{'branch'};
my $add = $input->param('add');
if ($add) {
output_and_exit( $input, $cookie, $template, 'wrong_csrf_token' )
unless Koha::Token->new->check_csrf(
{
session_id => scalar $input->cookie('CGISESSID'),
token => scalar $input->param('csrf_token'),
}
);
# Note: If the logged in user is not allowed to see this patron an invoice can be forced
# Here we are trusting librarians not to hack the system
my $barcode = $input->param('barcode');
my $itemnum;
if ($barcode) {
my $item = Koha::Items->find( { barcode => $barcode } );
$itemnum = $item->itemnumber if $item;
}
my $desc = $input->param('desc');
my $amount = $input->param('amount');
my $type = $input->param('type');
my $note = $input->param('note');
my $error =
C4::Accounts::manualinvoice( $borrowernumber, $itemnum, $desc, $type,
$amount, $note );
if ($error) {
if ( $error =~ /FOREIGN KEY/ && $error =~ /itemnumber/ ) {
$template->param( 'ITEMNUMBER' => 1 );
}
$template->param(
csrf_token => Koha::Token->new->generate_csrf(
{ session_id => scalar $input->cookie('CGISESSID') }
)
);
$template->param( 'ERROR' => $error );
output_html_with_http_headers $input, $cookie, $template->output;
}
else {
if ( C4::Context->preference('AccountAutoReconcile') ) {
$patron->account->reconcile_balance;
}
if ($add eq 'save and pay') {
print $input->redirect(
"/cgi-bin/koha/members/pay.pl?borrowernumber=$borrowernumber"
);
} else {
print $input->redirect(
"/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"
);
}
exit;
}
}
else {
my $logged_in_user = Koha::Patrons->find($loggedinuser)
or die "Not logged in";
output_and_exit_if_error(
$input, $cookie,
$template,
{
module => 'members',
logged_in_user => $logged_in_user,
current_patron => $patron
}
);
my @debit_types = Koha::Account::DebitTypes->search_with_library_limits(
{ can_be_invoiced => 1, archived => 0 },
{}, $library_id );
$template->param( debit_types => \@debit_types );
$template->param(
csrf_token => Koha::Token->new->generate_csrf(
{ session_id => scalar $input->cookie('CGISESSID') }
),
patron => $patron,
finesview => 1,
);
output_html_with_http_headers $input, $cookie, $template->output;
}