When clicking "Budgets" or "Funds" in Koha menu "Administration > Acquisition parameters" just a blank page does appear, saying "Internal server error". When clicking "Budgets" the log file "plack-error.log" says: Can't call method "symbol" on an undefined value at /usr/share/koha/intranet/cgi-bin/admin/aqbudgetperiods.pl line 94. When clicking "Funds" it says: Can't call method "symbol" on an undefined value at /usr/share/koha/intranet/cgi-bin/admin/aqbudgets.pl line 53. For example, line 94 of script "aqbudgetperiods.pl" says: $template->param( symbol => $active_currency->symbol, currency => $active_currency->currency So this happens when no activated currency exists (for example when no example currency was loaded). Instead of showing "Internal Server Error" Koha should tell about the missing activated currency. This was experienced in Koha 16.11.1 as well as in Koha 17.05.1.
Confirmed on current master.
Created attachment 67179 [details] [review] Bug 19328 - Internal server error because of missing currency This patch fixes internal server errors because of missing active currency in files aqbudgetperiods.pl, aqbudgets.pl and aqplan.pl. To reproduce: - Make sure that no active currency is defined. You can undefine the active currency in Administration->Currencies and exchange rates - Try to go to Administration->Budgets and Admistration->Funds Result: Internal server error To test: - Apply patch - Restart plack - Try to reproduce issue, it should no longer occur. There should be a yellow message box "No active currency is defined" - From Administration-> Budgets administration try to edit a fund and go to "Planning". Verify that the message box appears here as well.
Seems to be a regression. Oh, there are more candidates for Internal server errors, maybe to be investigated / fixed in a separate bug: git grep 'Currencies->get_active' C4/Biblio.pm: my $active_currency = Koha::Acquisition::Currencies->get_active; C4/Overdues.pm: my $active_currency = Koha::Acquisition::Currencies->get_active; Koha/Number/Price.pm: my $currency = Koha::Acquisition::Currencies->get_active; about.pl:my $warnNoActiveCurrency = (! defined Koha::Acquisition::Currencies->get_active); acqui/acqui-home.pl:my $cur = Koha::Acquisition::Currencies->get_active; acqui/addorder.pl: my $currency = Koha::Acquisition::Currencies->get_active; acqui/addorderiso2709.pl: my $active_currency = Koha::Acquisition::Currencies->get_active; acqui/basket.pl: my $active_currency = Koha::Acquisition::Currencies->get_active; acqui/invoice.pl: currency => Koha::Acquisition::Currencies->get_active, acqui/neworderempty.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; admin/aqbudgetperiods.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; admin/aqbudgets.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; admin/aqplan.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; admin/preferences.pl: my $active_currency = Koha::Acquisition::Currencies->get_active; opac/opac-account-pay-paypal-return.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; opac/opac-account-pay.pl:my $active_currency = Koha::Acquisition::Currencies->get_active; opac/sco/sco-main.pl:if ( my $active_currency = Koha::Acquisition::Currencies->get_active ) { t/db_dependent/Koha/Acquisition/Currencies.t:my $active_currency = Koha::Acquisition::Currencies->get_active; t/db_dependent/MungeMarcPrice.t:my $active_currency = Koha::Acquisition::Currencies->get_active;
Created attachment 67321 [details] [review] Bug 19328 - Internal server error because of missing currency This patch fixes internal server errors because of missing active currency in files aqbudgetperiods.pl, aqbudgets.pl and aqplan.pl. To reproduce: - Make sure that no active currency is defined. You can undefine the active currency in Administration->Currencies and exchange rates - Try to go to Administration->Budgets and Admistration->Funds Result: Internal server error To test: - Apply patch - Restart plack - Try to reproduce issue, it should no longer occur. There should be a yellow message box "No active currency is defined" - From Administration-> Budgets administration try to edit a fund and go to "Planning". Verify that the message box appears here as well. Signed-off-by: David Bourgault <david.bourgault@inlibro.com>
Created attachment 67922 [details] [review] Bug 19328 - Internal server error because of missing currency This patch fixes internal server errors because of missing active currency in files aqbudgetperiods.pl, aqbudgets.pl and aqplan.pl. To reproduce: - Make sure that no active currency is defined. You can undefine the active currency in Administration->Currencies and exchange rates - Try to go to Administration->Budgets and Admistration->Funds Result: Internal server error To test: - Apply patch - Restart plack - Try to reproduce issue, it should no longer occur. There should be a yellow message box "No active currency is defined" - From Administration-> Budgets administration try to edit a fund and go to "Planning". Verify that the message box appears here as well. Signed-off-by: David Bourgault <david.bourgault@inlibro.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
I am willing to push this patch but I do not think it is the way to fix it. Please do not fix more occurrences.
Pushed to master for 17.11, thanks to everybody involved!