Browse Source

Bug 11773: fix crash in sco-main.pl if no active currency is set

If no currency is defined as active and a patron with debts tries to
check out in welf checkout moduel, sco-main.pl crashes with:

Software error:
Can't use an undefined value as a HASH reference at /usr/share/kohaclone/opac/sco/sco-main.pl line 190.

This patch tests for active currency and simply does not display a
currency symbol if appropriate.

Test plan:

1) Make sure you have a patron with debts and no currency defined as
   active.  (Home › Administration › Currencies & Exchange rates
   › Currencies )
2) Go to Self checkout module and try to checkout an item to this patron
   Result: Crash with error message "Can't use an undefined value as a
   HASH..."
3) Apply patch
4) Reload and try to checkout again
   Expected result: Message "You owe the library..." without currency
   symbol
5) Define a currency as active and try to checkout again
   Expected result: Message "You owe..." with currency symbol

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
3.16.x
Marc Véron 10 years ago
committed by Galen Charlton
parent
commit
1db56c834b
  1. 8
      opac/sco/sco-main.pl

8
opac/sco/sco-main.pl

@ -111,6 +111,10 @@ if (C4::Context->preference('SelfCheckoutByLogin') && !$patronid) {
}
my $borrower = GetMemberDetails(undef,$patronid);
my $currencySymbol = "";
if ( defined C4::Budgets->GetCurrency() ) {
$currencySymbol = C4::Budgets->GetCurrency()->{symbol};
}
my $branch = $issuer->{branchcode};
my $confirm_required = 0;
@ -154,7 +158,7 @@ elsif ( $op eq "checkout" ) {
hide_main => 1,
);
if ($issue_error eq 'DEBT') {
$template->param(amount => C4::Budgets->GetCurrency()->{symbol}.$impossible->{DEBT});
$template->param(amount => $currencySymbol.$impossible->{DEBT});
}
#warn "issue_error: " . $issue_error ;
if ( $issue_error eq "NO_MORE_RENEWALS" ) {
@ -187,7 +191,7 @@ elsif ( $op eq "checkout" ) {
hide_main => 1,
);
if ($issue_error eq 'DEBT') {
$template->param(amount => C4::Budgets->GetCurrency()->{symbol}.$needconfirm->{DEBT});
$template->param(amount => $currencySymbol.$needconfirm->{DEBT});
}
} else {
if ( $confirmed || $issuenoconfirm ) { # we'll want to call getpatroninfo again to get updated issues.

Loading…
Cancel
Save