From 795329c3128b47b582ce33d6972ab08f93130d26 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 27 Sep 2019 20:58:59 +0100 Subject: [PATCH] Bug 23049: Update maninvoice to reference debit types --- .../prog/en/modules/members/maninvoice.tt | 102 ++++++------ members/maninvoice.pl | 153 ++++++++++-------- 2 files changed, 138 insertions(+), 117 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt index 2dcb452029..8fe5d3118e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt @@ -1,6 +1,7 @@ [% USE raw %] [% USE Asset %] [% USE Koha %] +[% USE Price %] [% USE Branches %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] @@ -12,58 +13,61 @@ [% INCLUDE 'header.inc' %] [% INCLUDE 'patron-search.inc' %] - +
-[% INCLUDE 'members-toolbar.inc' %] + [% INCLUDE 'members-toolbar.inc' %] - -
- -
+ +
+ +
-[% IF ( ERROR ) %] -[% IF ( ITEMNUMBER ) %] - ERROR an invalid itemnumber was entered, please hit back and try again -[% END %] -[% ELSE %] -
- -
- Manual invoice -
    -
  1. - - -
  2. -
  3. -
  4. -
  5. -
  6. Example: 5.00
  7. -
-
Cancel
-
+ [% IF ( ERROR ) %] + [% IF ( ITEMNUMBER ) %] + ERROR an invalid itemnumber was entered, please hit back and try again + [% END %] + [% ELSE %] +
+ +
+ Manual invoice +
    +
  1. + + +
  2. +
  3. +
  4. +
  5. +
  6. Example: 5.00
  7. +
+
+
+ Cancel +
+
-[% END %] -
+ [% END %] +
+
@@ -79,9 +83,9 @@ [% INCLUDE 'str/members-menu.inc' %] [% Asset.js("js/members-menu.js") | $raw %] [% END %] diff --git a/members/maninvoice.pl b/members/maninvoice.pl index 76d224b7bc..3642cd39be 100755 --- a/members/maninvoice.pl +++ b/members/maninvoice.pl @@ -3,9 +3,9 @@ #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. # @@ -36,94 +36,105 @@ use Koha::Items; use Koha::Patrons; use Koha::Patron::Categories; +use Koha::Account::DebitTypes; -my $input=new CGI; -my $flagsrequired = { borrowers => 'edit_borrowers' }; +my $input = new CGI; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { template_name => "members/maninvoice.tt", + { + template_name => "members/maninvoice.tt", query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => $flagsrequired, - debug => 1, + 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"); +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 $add=$input->param('add'); -if ($add){ - if ( checkauth( $input, 0, $flagsrequired, 'intranet' ) ) { - 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 { +my $library_id = C4::Context->userenv->{'branch'}; - if ( C4::Context->preference('AccountAutoReconcile') ) { - $patron->account->reconcile_balance; - } - - print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber"); - exit; +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; } -} else { - - 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' }, - debug => 1, - }); + 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 { - 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 } ); + if ( C4::Context->preference('AccountAutoReconcile') ) { + $patron->account->reconcile_balance; + } - # get authorised values with type of MANUAL_INV - my @invoice_types; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare('SELECT * FROM authorised_values WHERE category = "MANUAL_INV"'); - $sth->execute(); - while ( my $row = $sth->fetchrow_hashref() ) { - push @invoice_types, $row; - } - $template->param( invoice_types_loop => \@invoice_types ); + 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_added_manually => 1 }, + {}, $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, + 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; } -- 2.20.1