From 260dbd1c70ecd8cf76b452ec2f3c59365c9860e1 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 6 Jul 2015 11:00:38 -0400 Subject: [PATCH] Bug 14498: uri_escape error triggered by duplicate accountno's for patron If a patron has duplicate accountno's for two different fines in Koha this will trigger the error usi_escape: Unmatched [ in regex; marked by <-- HERE in m/([ <-- HERE ])/ at (eval 133) line 1. upon attempt to pay. How those accountno's get duplicated is unknown, but considering accountno is somewhat vestigial at this point in time, it would be much more sensible to use accountlines_id which is has guaranteed uniqueness at the database level. Test Plan: 1) Create a patron with 2 fines 2) Edit the accountno's for those fines and set them to 0 3) Attempt to pay one, note the error 4) Apply this patch 5) Refesh the page 6) Attempt to pay one, no error this time! 7) Test Pay, Write off, Pay amount, Write off all, and Pay selected Signed-off-by: Deborah Duce Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- .../prog/en/modules/members/pay.tt | 29 +++++++++---------- members/pay.pl | 6 ++-- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt index 18b857cdac..64a0f689ce 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt @@ -94,25 +94,24 @@ function enableCheckboxActions(){ [% IF ( line.amountoutstanding > 0 ) %] - + [% END %] [% IF ( line.amountoutstanding > 0 ) %] - - [% IF CAN_user_updatecharges_writeoff %][% END %] + + [% IF CAN_user_updatecharges_writeoff %][% END %] [% END %] - - - - - - - - - - - + + + + + + + + + + [% SWITCH line.accounttype %] @@ -139,7 +138,7 @@ function enableCheckboxActions(){ [%- IF line.description %], [% line.description %][% END %] [% IF line.title %]([% line.title %])[% END %] - + [% line.accounttype %] [% line.notify_id %] [% line.notify_level %] diff --git a/members/pay.pl b/members/pay.pl index 07217fd6ab..a4f73f2731 100755 --- a/members/pay.pl +++ b/members/pay.pl @@ -170,7 +170,6 @@ 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( '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 ); @@ -184,7 +183,7 @@ sub redirect_to_paycollect { sub writeoff_all { my @params = @_; - my @wo_lines = grep { /^accountno\d+$/ } @params; + my @wo_lines = grep { /^accountlines_id\d+$/ } @params; for (@wo_lines) { if (/(\d+)/) { my $value = $1; @@ -193,7 +192,6 @@ sub writeoff_all { # my $borrowernum = $input->param("borrowernumber$value"); my $itemno = $input->param("itemnumber$value"); my $amount = $input->param("amountoutstanding$value"); - my $accountno = $input->param("accountno$value"); my $accountlines_id = $input->param("accountlines_id$value"); my $payment_note = $input->param("payment_note_$value"); WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $accounttype, $amount, $branch, $payment_note ); @@ -250,7 +248,7 @@ 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"); } } -- 2.39.5