From a9119bf340266686130fe9dc891d8cbf09627e59 Mon Sep 17 00:00:00 2001 From: Chris Hall Date: Thu, 26 Jan 2012 16:04:53 +1300 Subject: [PATCH] Bug 6413 Added ability to add a note when paying or writing off a fine Content-Type: text/plain; charset="utf-8" Code will also respect notes when using the "Writeoff All" button but WILL NOT when using either the "Pay Amount" or "Pay Selected" buttons Fixed uri encoding of arguments Signed-off-by: Nicole C. Engard --- C4/Accounts.pm | 32 +++++++++++-------- .../intranet-tmpl/prog/en/modules/members/pay.tt | 2 + .../prog/en/modules/members/paycollect.tt | 2 + members/pay.pl | 9 ++++-- members/paycollect.pl | 7 +++- 5 files changed, 33 insertions(+), 19 deletions(-) diff --git a/C4/Accounts.pm b/C4/Accounts.pm index f7adca1..cb0910f 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -167,7 +167,7 @@ sub makepayment { #here we update both the accountoffsets and the account lines #updated to check, if they are paying off a lost item, we return the item # from their card, and put a note on the item record - my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch ) = @_; + my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch, $payment_note ) = @_; my $dbh = C4::Context->dbh; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; @@ -203,14 +203,15 @@ sub makepayment { # create new line my $payment = 0 - $amount; + $payment_note //= ""; my $ins = $dbh->prepare( "INSERT - INTO accountlines (borrowernumber, accountno, date, amount, itemnumber, description, accounttype, amountoutstanding, manager_id) - VALUES ( ?, ?, now(), ?, ?, 'Payment,thanks', 'Pay', 0, ?)" + INTO accountlines (borrowernumber, accountno, date, amount, itemnumber, description, accounttype, amountoutstanding, manager_id, note) + VALUES ( ?, ?, now(), ?, ?, 'Payment,thanks', 'Pay', 0, ?, ?)" ); - $ins->execute($borrowernumber, $nextaccntno, $payment, $data->{'itemnumber'}, $manager_id); + $ins->execute($borrowernumber, $nextaccntno, $payment, $data->{'itemnumber'}, $manager_id, $payment_note); $ins->finish; } @@ -737,12 +738,13 @@ sub recordpayment_selectaccts { # makepayment needs to be fixed to handle partials till then this separate subroutine # fills in sub makepartialpayment { - my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch ) = @_; + my ( $accountlines_id, $borrowernumber, $accountno, $amount, $user, $branch, $payment_note ) = @_; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; if (!$amount || $amount < 0) { return; } + $payment_note //= ""; my $dbh = C4::Context->dbh; my $nextaccntno = getnextacctno($borrowernumber); @@ -757,20 +759,20 @@ sub makepartialpayment { # create new line my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, ' - . 'description, accounttype, amountoutstanding, itemnumber, manager_id) ' - . ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?)'; + . 'description, accounttype, amountoutstanding, itemnumber, manager_id, note) ' + . ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?, ?)'; $dbh->do( $insert, undef, $borrowernumber, $nextaccntno, $amount, - "Payment, thanks - $user", 'Pay', $data->{'itemnumber'}, $manager_id); + "Payment, thanks - $user", 'Pay', $data->{'itemnumber'}, $manager_id, $payment_note); UpdateStats( $user, 'payment', $amount, '', '', '', $borrowernumber, $accountno ); return; } -=head2 WriteOff +=head2 WriteOffFee - WriteOff( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch ); + WriteOffFee( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch, $payment_note ); Write off a fine for a patron. C<$borrowernumber> is the patron's borrower number. @@ -779,11 +781,13 @@ C<$itemnum> is the itemnumber of of item whose fine is being written off. C<$accounttype> is the account type of the fine being written off. C<$amount> is a floating-point number, giving the amount that is being written off. C<$branch> is the branchcode of the library where the writeoff occurred. +C<$payment_note> is the note to attach to this payment =cut sub WriteOffFee { - my ( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch ) = @_; + my ( $borrowernumber, $accountnum, $itemnum, $accounttype, $amount, $branch, $payment_note ) = @_; + $payment_note //= ""; $branch ||= C4::Context->userenv->{branch}; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; @@ -803,12 +807,12 @@ sub WriteOffFee { $query =" INSERT INTO accountlines - ( borrowernumber, accountno, itemnumber, date, amount, description, accounttype, manager_id ) - VALUES ( ?, ?, ?, NOW(), ?, 'Writeoff', 'W', ? ) + ( borrowernumber, accountno, itemnumber, date, amount, description, accounttype, manager_id, note ) + VALUES ( ?, ?, ?, NOW(), ?, 'Writeoff', 'W', ?, ? ) "; $sth = $dbh->prepare( $query ); my $acct = getnextacctno($borrowernumber); - $sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id ); + $sth->execute( $borrowernumber, $acct, $itemnum, $amount, $manager_id, $payment_note ); UpdateStats( $branch, 'writeoff', $amount, q{}, q{}, q{}, $borrowernumber ); 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 2780c3f..52eb78c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt @@ -47,6 +47,7 @@ Fines & charges Sel Description + Payment Note Account type Notify id Level @@ -87,6 +88,7 @@ [% END %] [% line.description %] ([% line.title |html_entity %]) + [% line.accounttype %] [% line.notify_id %] [% line.notify_level %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt index c558b08..cce9df2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt @@ -107,6 +107,7 @@ function moneyFormat(textObj) {
Pay an individual fine + @@ -160,6 +161,7 @@ function moneyFormat(textObj) { +
Description
diff --git a/members/pay.pl b/members/pay.pl index 7580daf..d02c830 100755 --- a/members/pay.pl +++ b/members/pay.pl @@ -29,6 +29,7 @@ use strict; use warnings; +use URI::Escape; use C4::Context; use C4::Auth; use C4::Output; @@ -89,7 +90,8 @@ if ($writeoff_all) { my $itemno = $input->param('itemnumber'); my $account_type = $input->param('accounttype'); my $amount = $input->param('amountoutstanding'); - WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $account_type, $amount, $branch ); + my $payment_note = $input->param("payment_note"); + WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $account_type, $amount, $branch, $payment_note ); } for (@names) { @@ -181,12 +183,12 @@ sub redirect_to_paycollect { $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( '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( $input->param("payment_note_$line_no") ); $redirect .= '&remote_user='; $redirect .= $user; return print $input->redirect($redirect); @@ -205,7 +207,8 @@ sub writeoff_all { my $amount = $input->param("amountoutstanding$value"); my $accountno = $input->param("accountno$value"); my $accountlines_id = $input->param("accountlines_id$value"); - WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $accounttype, $amount, $branch ); + my $payment_note = $input->param("payment_note_$value"); + WriteOffFee( $borrowernumber, $accountlines_id, $itemno, $accounttype, $amount, $branch, $payment_note ); } } diff --git a/members/paycollect.pl b/members/paycollect.pl index 5a732a9..88914f0 100755 --- a/members/paycollect.pl +++ b/members/paycollect.pl @@ -19,6 +19,7 @@ use strict; use warnings; +use URI::Escape; use C4::Context; use C4::Auth; use C4::Output; @@ -55,6 +56,7 @@ my $individual = $input->param('pay_individual'); my $writeoff = $input->param('writeoff_individual'); my $select_lines = $input->param('selected'); my $select = $input->param('selected_accts'); +my $payment_note = uri_unescape $input->param('payment_note'); my $accountno; my $accountlines_id; if ( $individual || $writeoff ) { @@ -85,6 +87,7 @@ if ( $individual || $writeoff ) { description => $description, notify_id => $notify_id, notify_level => $notify_level, + payment_note => $payment_note, ); } elsif ($select_lines) { $total_due = $input->param('amt'); @@ -104,10 +107,10 @@ if ( $total_paid and $total_paid ne '0.00' ) { if ($individual) { if ( $total_paid == $total_due ) { makepayment( $accountlines_id, $borrowernumber, $accountno, $total_paid, $user, - $branch ); + $branch, $payment_note ); } else { makepartialpayment( $accountlines_id, $borrowernumber, $accountno, $total_paid, - $user, $branch ); + $user, $branch, $payment_note ); } print $input->redirect( "/cgi-bin/koha/members/pay.pl?borrowernumber=$borrowernumber"); -- 1.7.2.5
Description