From a3036b4760d80dd3d2188f5f95c6f4279ecef74b Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 27 Nov 2018 20:28:29 -0300 Subject: [PATCH] Bug 18805: Add ability to use up account credits This patch introduces a new button in the 'Pay fines' tab on the patron's account page. This button, labeled 'Normalize account' is only displayed when outstanding credits are available, that could be used to pay up existing debts. When clicking the button, the Koha::Account::normalize_balance method (bug 21896) is used for the purpose. To test: - Apply this patch (on top of 21896) - On a patron's 'Fines' tab, create a 'manual invoice' (maybe more than one) - Go to the 'Pay fines' tab => SUCCESS: No 'Apply credits' button is displayed. - On the 'create manual credit' tab, create a couple credits. - Go to the 'Pay fines' => SUCCESS: 'Apply credits' button is displayed - Click on 'Apply credits' => SUCCESS: Outstanding credits have been used to pay up debts. - Play with different options (credit excedes debts and vice-versa, they match, etc) => SUCCESS: They all work as expected - Sign off :-D Signed-off-by: Christopher Brannon Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens --- .../prog/en/modules/members/pay.tt | 10 +++++++++ members/pay.pl | 21 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) 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 cb49492a94..6d8c942149 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt @@ -52,7 +52,11 @@ Total due: +[% IF outstanding_credits.total_outstanding < 0 %] + [% total + outstanding_credits.total_outstanding | $Price %] +[% ELSE %] [% total | $Price %] +[% END %] @@ -109,6 +113,12 @@ [% line.amountoutstanding | $Price %] [% END %] +[% IF outstanding_credits.total_outstanding < 0 %] + + Outstanding credits could be applied + [% outstanding_credits.total_outstanding | $Price %] + +[% END %] [% IF ( account_grp.total ) %] diff --git a/members/pay.pl b/members/pay.pl index b2216aa511..848141906e 100755 --- a/members/pay.pl +++ b/members/pay.pl @@ -87,6 +87,9 @@ elsif ( $input->param('writeoff_selected') ) { elsif ( $input->param('woall') ) { writeoff_all(@names); } +elsif ( $input->param('apply_credits') ) { + apply_credits({ patron => $patron, cgi => $input }); +} elsif ( $input->param('confirm_writeoff') ) { my $accountlines_id = $input->param('accountlines_id'); my $amount = $input->param('amountwrittenoff'); @@ -138,7 +141,9 @@ output_html_with_http_headers $input, $cookie, $template->output; sub add_accounts_to_template { my $patron = Koha::Patrons->find( $borrowernumber ); - my $account_lines = $patron->account->outstanding_debits; + my $account = $patron->account; + my $outstanding_credits = $account->outstanding_credits; + my $account_lines = $account->outstanding_debits; my $total = $account_lines->total_outstanding; my @accounts; while ( my $account_line = $account_lines->next ) { @@ -157,7 +162,9 @@ sub add_accounts_to_template { patron => $patron, accounts => \@accounts, total => $total, + outstanding_credits => $outstanding_credits ); + return; } @@ -273,3 +280,15 @@ sub payselected { print $input->redirect($redirect); return; } + +sub apply_credits { + my ($args) = @_; + + my $patron = $args->{patron}; + my $cgi = $args->{cgi}; + + $patron->account->reconcile_balance(); + + print $cgi->redirect("/cgi-bin/koha/members/pay.pl?borrowernumber=" . $patron->borrowernumber ); + return; +} -- 2.39.5