From 941c96092998a4bc97a78774a5074ffdf01d4f02 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Thu, 29 Oct 2015 12:21:52 +0000
Subject: [PATCH] Bug 15084: Replace C4::Budgets::GetCurrencies with
Koha::Acquisition::Currencies->search
Most part of the code here is unnecessary complex. We should selected
the currency if it is selected, that's all :)
---
C4/Biblio.pm | 9 ++---
C4/Budgets.pm | 42 ----------------------
C4/Overdues.pm | 6 ++--
Koha/Acquisition/Currencies.pm | 9 +++++
Koha/Number/Price.pm | 6 ++--
about.pl | 3 +-
acqui/addorder.pl | 5 +--
acqui/addorderiso2709.pl | 39 ++++----------------
acqui/basket.pl | 6 ++--
acqui/invoice.pl | 3 +-
acqui/neworderempty.pl | 40 ++++-----------------
acqui/supplier.pl | 24 ++-----------
admin/aqbudgetperiods.pl | 7 ++--
admin/aqbudgets.pl | 7 ++--
admin/aqplan.pl | 7 ++--
admin/preferences.pl | 6 ++--
.../prog/en/modules/acqui/addorderiso2709.tt | 14 +++-----
.../prog/en/modules/acqui/neworderempty.tt | 17 +++++----
.../prog/en/modules/acqui/supplier.tt | 26 ++++++++------
.../prog/en/modules/admin/currency.tt | 2 ++
.../prog/en/modules/suggestion/suggestion.tt | 29 +++++++++------
misc/cronjobs/overdue_notices.pl | 2 +-
opac/sco/sco-main.pl | 5 +--
suggestion/suggestion.pl | 25 +++----------
t/Number/Price.t | 14 ++++----
t/db_dependent/Biblio.t | 18 +++++++---
t/db_dependent/MungeMarcPrice.t | 6 ++--
27 files changed, 143 insertions(+), 234 deletions(-)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 919051a..29b02fe 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -39,6 +39,7 @@ use C4::Linker;
use C4::OAI::Sets;
use Koha::Cache;
+use Koha::Acquisition::Currencies;
use vars qw($VERSION @ISA @EXPORT);
@@ -1531,10 +1532,10 @@ sub MungeMarcPrice {
my ( $price ) = @_;
return unless ( $price =~ m/\d/ ); ## No digits means no price.
# Look for the currency symbol and the normalized code of the active currency, if it's there,
- my $active_currency = C4::Budgets->GetCurrency();
- my $symbol = $active_currency->{'symbol'};
- my $isocode = $active_currency->{'isocode'};
- $isocode = $active_currency->{'currency'} unless defined $isocode;
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
+ my $symbol = $active_currency->symbol;
+ my $isocode = $active_currency->isocode;
+ $isocode = $active_currency->currency unless defined $isocode;
my $localprice;
if ( $symbol ) {
my @matches =($price=~ /
diff --git a/C4/Budgets.pm b/C4/Budgets.pm
index 79012ba..5cd5860 100644
--- a/C4/Budgets.pm
+++ b/C4/Budgets.pm
@@ -59,8 +59,6 @@ BEGIN {
&ModBudgetPlan
- &GetCurrency
- &GetCurrencies
&ConvertCurrency
&GetBudgetsPlanCell
@@ -917,46 +915,6 @@ sub CanUserModifyBudget {
# -------------------------------------------------------------------
-=head2 GetCurrencies
-
- @currencies = &GetCurrencies;
-
-Returns the list of all known currencies.
-
-C<$currencies> is a array; its elements are references-to-hash, whose
-keys are the fields from the currency table in the Koha database.
-
-=cut
-
-sub GetCurrencies {
- my $dbh = C4::Context->dbh;
- my $query = "
- SELECT *
- FROM currency
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute;
- my @results = ();
- while ( my $data = $sth->fetchrow_hashref ) {
- push( @results, $data );
- }
- return @results;
-}
-
-# -------------------------------------------------------------------
-
-sub GetCurrency {
- my $dbh = C4::Context->dbh;
- my $query = "
- SELECT * FROM currency where active = '1' ";
- my $sth = $dbh->prepare($query);
- $sth->execute;
- my $r = $sth->fetchrow_hashref;
- return $r;
-}
-
-# -------------------------------------------------------------------
-
=head2 ConvertCurrency
$foreignprice = &ConvertCurrency($currency, $localprice);
diff --git a/C4/Overdues.pm b/C4/Overdues.pm
index 72c0704..47446e0 100644
--- a/C4/Overdues.pm
+++ b/C4/Overdues.pm
@@ -32,7 +32,6 @@ use C4::Context;
use C4::Accounts;
use C4::Log; # logaction
use C4::Debug;
-use C4::Budgets qw(GetCurrency);
use Koha::DateUtils;
use vars qw($VERSION @ISA @EXPORT);
@@ -986,9 +985,10 @@ sub parse_overdues_letter {
$tables{'branches'} = $p;
}
- my $currencies = GetCurrency();
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
+
my $currency_format;
- $currency_format = $currencies->{currency} if defined($currencies);
+ $currency_format = $active_currency->currency if defined($active_currency);
my @item_tables;
if ( my $i = $params->{'items'} ) {
diff --git a/Koha/Acquisition/Currencies.pm b/Koha/Acquisition/Currencies.pm
index 7f506a7..cdbbfed 100644
--- a/Koha/Acquisition/Currencies.pm
+++ b/Koha/Acquisition/Currencies.pm
@@ -35,6 +35,15 @@ Koha::Acquisition::Currencies - Koha Acquisition Currency Object set class
=cut
+=head3 get_active
+
+=cut
+
+sub get_active {
+ my ( $self ) = @_;
+ return $self->SUPER::search( { active => 1 } )->next;
+}
+
=head3 type
=cut
diff --git a/Koha/Number/Price.pm b/Koha/Number/Price.pm
index 2d563f9..331e3c3 100644
--- a/Koha/Number/Price.pm
+++ b/Koha/Number/Price.pm
@@ -21,7 +21,7 @@ use Modern::Perl;
use Number::Format qw( format_price );
use C4::Context;
-use C4::Budgets qw( GetCurrency );
+use Koha::Acquisition::Currencies;
use base qw( Class::Accessor );
__PACKAGE__->mk_accessors(qw( value ));
@@ -82,7 +82,7 @@ sub _format_params {
my $with_symbol = $params->{with_symbol} || 0;
my $p_cs_precedes = $params->{p_cs_precedes};
my $p_sep_by_space = $params->{p_sep_by_space};
- my $currency = GetCurrency();
+ my $currency = Koha::Acquisition::Currencies->get_active;
my $currency_format = C4::Context->preference("CurrencyFormat");
my $int_curr_symbol = q||;
@@ -94,7 +94,7 @@ sub _format_params {
if ( $currency_format eq 'FR' ) {
# FIXME This test should be done for all currencies
- $int_curr_symbol = $currency->{symbol} if $with_symbol;
+ $int_curr_symbol = $currency->symbol if $with_symbol;
%format_params = (
decimal_fill => '2',
decimal_point => ',',
diff --git a/about.pl b/about.pl
index 01e941c..88b1284 100755
--- a/about.pl
+++ b/about.pl
@@ -34,6 +34,7 @@ use C4::Context;
use C4::Installer;
use Koha;
+use Koha::Acquisition::Currencies;
use Koha::Borrowers;
use Koha::Config::SysPrefs;
@@ -95,7 +96,7 @@ my $errZebraConnection = C4::Context->Zconn("biblioserver",0)->errcode();
my $warnIsRootUser = (! $loggedinuser);
-my $warnNoActiveCurrency = (! defined C4::Budgets->GetCurrency());
+my $warnNoActiveCurrency = (! defined Koha::Acquisition::Currencies->get_active);
my @xml_config_warnings;
my $context = new C4::Context;
diff --git a/acqui/addorder.pl b/acqui/addorder.pl
index f58e58d..e5480ef 100755
--- a/acqui/addorder.pl
+++ b/acqui/addorder.pl
@@ -129,6 +129,7 @@ use C4::Biblio; # AddBiblio TransformKohaToMarc
use C4::Budgets;
use C4::Items;
use C4::Output;
+use Koha::Acquisition::Currencies;
### "-------------------- addorder.pl ----------"
@@ -188,11 +189,11 @@ unless($confirm_budget_exceeding) {
if( ($budget_expenditure+0) && ($budget_used + $total) > $budget_expenditure
&& $total <= $budget_remaining )
{
- my $currency = GetCurrency;
+ my $currency = Koha::Acquisition::Currencies->get_active;
$template->param(
expenditure_exceeded => 1,
expenditure => sprintf("%.2f", $budget_expenditure),
- currency => ($currency) ? $currency->{'symbol'} : '',
+ currency => ($currency) ? $currency->symbol : '',
);
}
if($total > $budget_remaining){
diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl
index 8ce2ce1..9fe08c0 100755
--- a/acqui/addorderiso2709.pl
+++ b/acqui/addorderiso2709.pl
@@ -43,6 +43,7 @@ use C4::Branch; # GetBranches
use C4::Members;
use Koha::Number::Price;
+use Koha::Acquisition::Currencies;
use Koha::Acquisition::Order;
use Koha::Acquisition::Bookseller;
@@ -61,7 +62,6 @@ my $op = $cgiparams->{'op'} || '';
my $booksellerid = $input->param('booksellerid');
my $allmatch = $input->param('allmatch');
my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
-my $data;
$template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl",
booksellerid => $booksellerid,
@@ -90,39 +90,12 @@ if ($op eq ""){
} elsif ($op eq "batch_details"){
#display lines inside the selected batch
# get currencies (for change rates calcs if needed)
- my $active_currency = GetCurrency();
- my $default_currency;
- if (! $data->{currency} ) { # New order no currency set
- if ( $bookseller->{listprice} ) {
- $default_currency = $bookseller->{listprice};
- }
- else {
- $default_currency = $active_currency->{currency};
- }
- }
- my @rates = GetCurrencies();
-
- # ## @rates
-
- my @loop_currency = ();
- for my $curr ( @rates ) {
- my $selected;
- if ($data->{currency} ) {
- $selected = $curr->{currency} eq $data->{currency};
- }
- else {
- $selected = $curr->{currency} eq $default_currency;
- }
- push @loop_currency, {
- currcode => $curr->{currency},
- rate => $curr->{rate},
- selected => $selected,
- }
- }
+ my @currencies = Koha::Acquisition::Currencies->search;
$template->param("batch_details" => 1,
"basketno" => $cgiparams->{'basketno'},
- loop_currencies => \@loop_currency,
+ currencies => \@currencies,
+ bookseller => $bookseller,
"allmatch" => $allmatch,
);
import_biblios_list($template, $cgiparams->{'import_batch_id'});
@@ -167,7 +140,7 @@ if ($op eq ""){
my @discount = $input->param('discount');
my @sort1 = $input->param('sort1');
my @sort2 = $input->param('sort2');
- my $cur = GetCurrency();
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
for my $biblio (@$biblios){
# Check if this import_record_id was selected
next if not grep { $_ eq $$biblio{import_record_id} } @import_record_id_selected;
@@ -252,7 +225,7 @@ if ($op eq ""){
$orderinfo{ecost} = $orderinfo{rrp} * ( 1 - $c );
}
}
- $orderinfo{listprice} = $orderinfo{rrp} / $cur->{rate};
+ $orderinfo{listprice} = $orderinfo{rrp} / $active_currency->rate;
$orderinfo{unitprice} = $orderinfo{ecost};
$orderinfo{total} = $orderinfo{ecost} * $c_quantity;
} else {
diff --git a/acqui/basket.pl b/acqui/basket.pl
index 5fa94f8..b25426e 100755
--- a/acqui/basket.pl
+++ b/acqui/basket.pl
@@ -290,9 +290,7 @@ if ( $op eq 'delete_confirm' ) {
push @basketusers, $basketuser if $basketuser;
}
- #to get active currency
- my $cur = GetCurrency();
-
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
my @orders = GetOrders( $basketno );
my @books_loop;
@@ -384,7 +382,7 @@ if ( $op eq 'delete_confirm' ) {
total_gste => sprintf( "%.2f", $total_gste ),
total_gsti => sprintf( "%.2f", $total_gsti ),
total_gstvalue => sprintf( "%.2f", $total_gstvalue ),
- currency => $cur->{'currency'},
+ currency => $active_currency->currency,
listincgst => $bookseller->{listincgst},
basketgroups => $basketgroups,
basketgroup => $basketgroup,
diff --git a/acqui/invoice.pl b/acqui/invoice.pl
index f56afcc..c7584f3 100755
--- a/acqui/invoice.pl
+++ b/acqui/invoice.pl
@@ -36,6 +36,7 @@ use C4::Acquisition;
use C4::Budgets;
use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Currencies;
use Koha::DateUtils;
use Koha::Misc::Files;
@@ -178,7 +179,7 @@ $template->param(
total_gste_shipment => sprintf( $format, $total_gste + $details->{shipmentcost}),
total_gsti_shipment => sprintf( $format, $total_gsti + $details->{shipmentcost}),
invoiceincgst => $bookseller->{invoiceincgst},
- currency => GetCurrency()->{currency},
+ currency => Koha::Acquisition::Currency->get_active->currency,
budgets_loop => \@budgets_loop,
);
diff --git a/acqui/neworderempty.pl b/acqui/neworderempty.pl
index 4a37815..f09e1ce 100755
--- a/acqui/neworderempty.pl
+++ b/acqui/neworderempty.pl
@@ -89,6 +89,7 @@ use C4::Search qw/FindDuplicate/;
use C4::ImportBatch qw/GetImportRecordMarc SetImportRecordStatus/;
use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Currencies;
our $input = new CGI;
my $booksellerid = $input->param('booksellerid'); # FIXME: else ERROR!
@@ -205,37 +206,8 @@ else { #modify order
my $suggestion;
$suggestion = GetSuggestionInfo($suggestionid) if $suggestionid;
-# get currencies (for change rates calcs if needed)
-my $active_currency = GetCurrency();
-my $default_currency;
-if (! $data->{currency} ) { # New order no currency set
- if ( $bookseller->{listprice} ) {
- $default_currency = $bookseller->{listprice};
- }
- else {
- $default_currency = $active_currency->{currency};
- }
-}
-
-my @rates = GetCurrencies();
-
-# ## @rates
-
-my @loop_currency = ();
-for my $curr ( @rates ) {
- my $selected;
- if ($data->{currency} ) {
- $selected = $curr->{currency} eq $data->{currency};
- }
- else {
- $selected = $curr->{currency} eq $default_currency;
- }
- push @loop_currency, {
- currcode => $curr->{currency},
- rate => $curr->{rate},
- selected => $selected,
- }
-}
+my @currencies = Koha::Acquisition::Currencies->search;
+my $active_currency = Koha::Acquisition::Currencies->get_active;
# build branches list
my $onlymine =
@@ -376,9 +348,9 @@ $template->param(
listincgst => $bookseller->{'listincgst'},
invoiceincgst => $bookseller->{'invoiceincgst'},
name => $bookseller->{'name'},
- cur_active_sym => $active_currency->{'symbol'},
- cur_active => $active_currency->{'currency'},
- loop_currencies => \@loop_currency,
+ cur_active_sym => $active_currency->symbol,
+ cur_active => $active_currency->currency,
+ currencies => \@currencies,
orderexists => ( $new eq 'yes' ) ? 0 : 1,
title => $data->{'title'},
author => $data->{'author'},
diff --git a/acqui/supplier.pl b/acqui/supplier.pl
index 2d1a223..493c8af 100755
--- a/acqui/supplier.pl
+++ b/acqui/supplier.pl
@@ -53,6 +53,7 @@ use C4::Bookseller::Contact;
use C4::Budgets;
use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Currencies;
my $query = CGI->new;
my $op = $query->param('op') || 'display';
@@ -76,7 +77,6 @@ if ($booksellerid) {
}
$template->{'VARS'}->{'contacts'} = C4::Bookseller::Contact->new() unless $template->{'VARS'}->{'contacts'};
-#build array for currencies
if ( $op eq 'display' ) {
my $contracts = GetContracts( { booksellerid => $booksellerid } );
@@ -98,25 +98,7 @@ if ( $op eq 'display' ) {
print $query->redirect('/cgi-bin/koha/acqui/acqui-home.pl');
exit;
} else {
- my @currencies = GetCurrencies();
- my $loop_currency;
- my $active_currency = GetCurrency();
- my $active_listprice = $supplier->{'listprice'};
- my $active_invoiceprice = $supplier->{'invoiceprice'};
- if (!$supplier->{listprice}) {
- $active_listprice = $active_currency->{currency};
- }
- if (!$supplier->{invoiceprice}) {
- $active_invoiceprice = $active_currency->{currency};
- }
- for (@currencies) {
- push @{$loop_currency},
- {
- currency => $_->{currency},
- listprice => ( $_->{currency} eq $active_listprice ),
- invoiceprice => ( $_->{currency} eq $active_invoiceprice ),
- };
- }
+ my @currencies = Koha::Acquisition::Currencies->search;
# get option values from gist syspref
my @gst_values = map {
@@ -128,7 +110,7 @@ if ( $op eq 'display' ) {
active => $booksellerid ? $supplier->{'active'} : 1,
gstrate => $supplier->{gstrate} ? $supplier->{'gstrate'}+0.0 : 0,
gst_values => \@gst_values,
- loop_currency => $loop_currency,
+ currencies => \@currencies,
enter => 1,
);
}
diff --git a/admin/aqbudgetperiods.pl b/admin/aqbudgetperiods.pl
index f837b81..7cd32fc 100755
--- a/admin/aqbudgetperiods.pl
+++ b/admin/aqbudgetperiods.pl
@@ -57,6 +57,7 @@ use C4::Output;
use C4::Acquisition;
use C4::Budgets;
use C4::Debug;
+use Koha::Acquisition::Currencies;
my $dbh = C4::Context->dbh;
@@ -91,9 +92,9 @@ my ($template, $borrowernumber, $cookie, $staff_flags ) = get_template_and_user(
# This is used in incbudgets-active-currency.inc
-my $cur = GetCurrency();
-$template->param( symbol => $cur->{symbol},
- currency => $cur->{currency}
+my $active_currency = Koha::Acquisition::Currencies->get_active;
+$template->param( symbol => $active_currency->symbol,
+ currency => $active_currency->currency
);
# ADD OR MODIFY A BUDGET PERIOD - BUILD SCREEN
diff --git a/admin/aqbudgets.pl b/admin/aqbudgets.pl
index 2d85fdc..59091fd 100755
--- a/admin/aqbudgets.pl
+++ b/admin/aqbudgets.pl
@@ -35,6 +35,7 @@ use C4::Context;
use C4::Output;
use C4::Koha;
use C4::Debug;
+use Koha::Acquisition::Currencies;
my $input = new CGI;
my $dbh = C4::Context->dbh;
@@ -49,9 +50,9 @@ my ($template, $borrowernumber, $cookie, $staffflags ) = get_template_and_user(
}
);
-my $cur = GetCurrency();
-$template->param( symbol => $cur->{symbol},
- currency => $cur->{currency}
+my $active_currency = Koha::Acquisition::Currencies->get_active;
+$template->param( symbol => $active_currency->symbol,
+ currency => $active_currency->currency
);
my $op = $input->param('op') || 'list';
diff --git a/admin/aqplan.pl b/admin/aqplan.pl
index d0b11a2..ceaa61b 100755
--- a/admin/aqplan.pl
+++ b/admin/aqplan.pl
@@ -35,6 +35,7 @@ use C4::Output;
use C4::Koha;
use C4::Auth;
use C4::Debug;
+use Koha::Acquisition::Currencies;
my $input = new CGI;
#### $input
@@ -56,9 +57,9 @@ my $budget_period_id = $input->param('budget_period_id');
# IF PERIOD_ID IS DEFINED, GET THE PERIOD - ELSE GET THE ACTIVE PERIOD BY DEFAULT
my $period = GetBudgetPeriod($budget_period_id);
my $count = GetPeriodsCount();
-my $cur = GetCurrency;
-$template->param( symbol => $cur->{symbol},
- currency => $cur->{currency}
+my $active_currency = Koha::Acquisition::Currencies->get_active;
+$template->param( symbol => $active_currency->symbol,
+ currency => $active_currency->currency,
);
$template->param( period_button_only => 1 ) if $count == 0;
diff --git a/admin/preferences.pl b/admin/preferences.pl
index d9683f1..24bffce 100755
--- a/admin/preferences.pl
+++ b/admin/preferences.pl
@@ -28,7 +28,7 @@ use C4::ClassSource;
use C4::Log;
use C4::Output;
use C4::Templates;
-use C4::Budgets qw(GetCurrency);
+use Koha::Acquisition::Currencies;
use File::Spec;
use IO::File;
use YAML::Syck qw();
@@ -45,10 +45,10 @@ sub GetTab {
my $tab_template = C4::Templates::gettemplate( 'admin/preferences/' . $tab . '.pref', 'intranet', $input );
- my $active_currency = GetCurrency();
+ my $active_currency = Koha::Acquisition::Currencies->get_active;
my $local_currency;
if ($active_currency) {
- $local_currency = $active_currency->{currency};
+ $local_currency = $active_currency->currency;
}
$tab_template->param(
local_currency => $local_currency, # currency code is used, because we do not know how a given currency is formatted.
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt
index bf6c0b6..d2a7c9e 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt
@@ -187,10 +187,6 @@
<input type="hidden" name="import_batch_id" value="[%import_batch_id %]" />
<input type="hidden" name="ordernumber" value="[% ordernumber %]" />
- [% FOREACH cur IN loop_currencies %]
- <input type="hidden" name="[% cur.currency %]" value="[% cur.rate %]" />
- [% END %]
-
[% FOREACH biblio IN biblio_list %]
<fieldset class="biblio unselected rows" style="float:none;">
<legend>
@@ -334,11 +330,11 @@
<li>
<label for="all_currency">Currency:</label>
<select name="all_currency" id="all_currency">
- [% FOREACH loop_currencie IN loop_currencies %]
- [% IF ( loop_currencie.selected ) %]
- <option value="[% loop_currencie.currcode %]" selected="selected">[% loop_currencie.currcode %]</option>
- [% ELSE %]
- <option value="[% loop_currencie.currcode %]">[% loop_currencie.currcode %]</option>
+ [% FOREACH currency IN currencies %]
+ [% IF currency.currency == bookseller.listprice %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% ELSIF not currency.archived %]
+ <option value="[% currency.currency %]">[% currency.currency %]</option>
[% END %]
[% END %]
</select>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
index 7638f02..dbb2b02 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
@@ -302,8 +302,8 @@ $(document).ready(function()
<input type="hidden" name="suggestionid" value="[% suggestionid %]" />
<input type="hidden" name="import_batch_id" value="[% import_batch_id %]" />
- [% FOREACH loop_currencie IN loop_currencies %]
- <input type="hidden" id="currency_rate_[% loop_currencie.currcode %]" name="[% loop_currencie.currcode %]" value="[% loop_currencie.rate %]" />
+ [% FOREACH currency IN currencies %]
+ <input type="hidden" id="currency_rate_[% currency.currency %]" name="[% currency.currency %]" value="[% currency.rate %]" />
[% END %]
<ol><li>
@@ -522,10 +522,15 @@ $(document).ready(function()
<input type="hidden" name="currency" id="currency" value="[% currency %]" />[% currency %]
[% ELSE %]
<label for="currency">Currency:</label>
- <select name="currency" id="currency" onchange="updateCosts();">
- [% FOREACH loop_currencie IN loop_currencies %]
- [% IF ( loop_currencie.selected ) %]<option value="[% loop_currencie.currcode %]" selected="selected">[% loop_currencie.currcode %]</option>[% ELSE %]<option value="[% loop_currencie.currcode %]">[% loop_currencie.currcode %]</option>[% END %][% END %]
- </select>
+ <select name="currency" id="currency" onchange="updateCosts();">
+ [% FOREACH currency IN currencies %]
+ [% IF ordernumber and currency.currency == listprice or not ordernumber and currency.active %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% ELSIF not currency.archived %]
+ <option value="[% currency.currency %]">[% currency.currency %]</option>
+ [% END %]
+ [% END %]
+ </select>
[% END %]
</li>
<li>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt
index 334d644..be67df8 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/supplier.tt
@@ -221,20 +221,26 @@ function delete_contact(ev) {
</ol>
<ol>
<li><label for="list_currency">List prices are: </label>
- <select name="list_currency" id="list_currency">
- [% FOREACH loop_currenc IN loop_currency %]
- [% IF ( loop_currenc.listprice ) %]<option value="[% loop_currenc.currency %]" selected="selected">[% loop_currenc.currency %]</option>
- [% ELSE %]<option value="[% loop_currenc.currency %]">[% loop_currenc.currency %]</option>[% END %]
+ <select name="list_currency" id="list_currency">
+ [% FOREACH currency IN currencies %]
+ [% IF booksellerid and currency.currency == listprice or not booksellerid and currency.active %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% ELSIF not currency.archived %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% END %]
[% END %]
- </select>
+ </select>
</li>
<li><label for="invoice_currency">Invoice prices are: </label>
- <select name="invoice_currency" id="invoice_currency">
- [% FOREACH loop_currenc IN loop_currency %]
- [% IF ( loop_currenc.invoiceprice ) %]<option value="[% loop_currenc.currency %]" selected="selected">[% loop_currenc.currency %]</option>
- [% ELSE %]<option value="[% loop_currenc.currency %]">[% loop_currenc.currency %]</option>[% END %]
+ <select name="invoice_currency" id="invoice_currency">
+ [% FOREACH currency IN currencies %]
+ [% IF booksellerid and currency.currency == invoiceprice or not booksellerid and currency.active %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% ELSIF not currency.archived %]
+ <option value="[% currency.currency %]" selected="selected">[% currency.currency %]</option>
+ [% END %]
[% END %]
- </select>
+ </select>
</li>
</ol>
<ol class="radio">
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
index 8aefa41..0d31b7b 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
@@ -178,6 +178,7 @@
<th>ISO code</th>
<th class="title-string">Last updated</th>
<th>Active</th>
+ <th>Archived</th>
<th>Actions</th>
</tr>
</thead>
@@ -190,6 +191,7 @@
<td>[% currency.isocode |html %]</td>
<td><span title="[% currency.timestamp %]">[% currency.timestamp | $KohaDates %]</span></td>
<td style="color:green;">[% IF currency.active %]✓[% END %]</td>
+ <td>[% IF currency.archived %]Yes[% END %]</td>
<td>
<a href="/cgi-bin/koha/admin/currency.pl?op=add_form&currency_code=[% currency.currency %]">Edit</a>
|
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt
index 547265d..a562618 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt
@@ -420,16 +420,25 @@ h4.local_collapse a { font-size : 80%; text-decoration: none; } fieldset.brief o
</select>
</li><li><label for="quantity">Copies:</label>
<input type="text" size="10" id="quantity" name="quantity" value="[% quantity %]" onchange="calcNewsuggTotal();" />
- </li><li><label for="currency">Currency:</label>
- [% FOREACH loop_currenc IN loop_currency %]
- <input type="hidden" value="[% loop_currenc.rate %]" id="currency_rate_[% loop_currenc.currcode %]" name="currency_rate_[% loop_currenc.currcode %]" />
- <input type="hidden" id="[% loop_currenc.currcode %]" name="[% loop_currenc.currcode %]" value="[% loop_currenc.rate %]" />
- [% END %]
- <select name="currency" id="currency" onchange="calcNewsuggTotal();">
- [% FOREACH loop_currenc IN loop_currency %]
- [% IF ( loop_currenc.selected ) %]<option value="[% loop_currenc.currcode %]" selected="selected">[% loop_currenc.currcode %]</option>[% ELSE %]<option value="[% loop_currenc.currcode %]">[% loop_currenc.currcode %]</option>[% END %][% END %]
- </select>
- </li><li><label for="price">Price:</label>
+ </li>
+ <li>
+ <label for="currency">Currency:</label>
+ [% FOREACH c IN currencies %]
+ <input type="hidden" value="[% c.rate %]" id="currency_rate_[% c.currency %]" name="currency_rate_[% c.currency %]" />
+ <input type="hidden" id="[% c.currency %]" name="[% c.currency %]" value="[% c.rate %]" />
+ [% END %]
+
+ <select name="currency" id="currency" onchange="calcNewsuggTotal();">
+ [% FOREACH c IN currencies %]
+ [% IF suggestionid and suggestion.currency == c.currency or not suggestionid and c.active %]
+ <option value="[% c.currency %]" selected="selected">[% c.currency %]</option>
+ [% ELSIF not c.archived %]
+ <option value="[% c.currency %]">[% c.currency %]</option>
+ [% END %]
+ [% END %]
+ </select>
+ </li>
+ <li><label for="price">Price:</label>
<input type="text" size="20" name="price" id="price" value="[% price %]" onchange="calcNewsuggTotal();" />
</li><li><label for="total">Total: </label>
<input type="text" readonly="readonly" id="total" name="total" size="10" value="[% total %]"/>
diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index 98b0a25..becdc68 100755
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -41,11 +41,11 @@ use C4::Context;
use C4::Debug;
use C4::Letters;
use C4::Overdues qw(GetFine GetOverdueMessageTransportTypes parse_overdues_letter);
-use C4::Budgets qw(GetCurrency);
use C4::Log;
use Koha::Borrower::Debarments qw(AddUniqueDebarment);
use Koha::DateUtils;
use Koha::Calendar;
+use Koha::Acquisition::Currencies;
=head1 NAME
diff --git a/opac/sco/sco-main.pl b/opac/sco/sco-main.pl
index eff549d..b345c7c 100755
--- a/opac/sco/sco-main.pl
+++ b/opac/sco/sco-main.pl
@@ -45,6 +45,7 @@ use C4::Output;
use C4::Members;
use C4::Biblio;
use C4::Items;
+use Koha::Acquisition::Currencies;
my $query = new CGI;
@@ -113,8 +114,8 @@ if (C4::Context->preference('SelfCheckoutByLogin') && !$patronid) {
my $borrower = GetMemberDetails(undef,$patronid);
my $currencySymbol = "";
-if ( defined C4::Budgets->GetCurrency() ) {
- $currencySymbol = C4::Budgets->GetCurrency()->{symbol};
+if ( my $active_currency = Koha::Acquisition::Currencies->get_active ) {
+ $currencySymbol = $active_currency->symbol;
}
my $branch = $issuer->{branchcode};
diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl
index e772a2a..08dd118 100755
--- a/suggestion/suggestion.pl
+++ b/suggestion/suggestion.pl
@@ -32,6 +32,7 @@ use C4::Members;
use C4::Debug;
use Koha::DateUtils qw( dt_from_string );
+use Koha::Acquisition::Currencies;
use URI::Escape;
@@ -352,28 +353,10 @@ foreach my $budget ( @{$budgets} ) {
$template->param( budgetsloop => \@budgets_loop);
$template->param( "statusselected_$$suggestion_ref{'STATUS'}" =>1) if ($$suggestion_ref{'STATUS'});
-# get currencies and rates
-my @rates = GetCurrencies();
-my $count = scalar @rates;
-my $active_currency = GetCurrency();
-my $selected_currency;
-if ($$suggestion_ref{'currency'}) {
- $selected_currency = $$suggestion_ref{'currency'};
-}
-else {
- $selected_currency = $active_currency->{currency};
-}
-
-my @loop_currency = ();
-for ( my $i = 0 ; $i < $count ; $i++ ) {
- my %line;
- $line{currcode} = $rates[$i]->{'currency'};
- $line{rate} = $rates[$i]->{'rate'};
- $line{selected} = 1 if ($line{'currcode'} eq $selected_currency);
- push @loop_currency, \%line;
-}
+my @currencies = Koha::Acquisition::Currencies->search;
$template->param(
- loop_currency => \@loop_currency,
+ currencies => \@currencies,
+ suggestion => $suggestion_ref,
price => sprintf("%.2f", $$suggestion_ref{'price'}||0),
total => sprintf("%.2f", $$suggestion_ref{'total'}||0),
);
diff --git a/t/Number/Price.t b/t/Number/Price.t
index 3191e4d..060b183 100644
--- a/t/Number/Price.t
+++ b/t/Number/Price.t
@@ -5,10 +5,10 @@ use Test::More tests => 19;
use Test::MockModule;
use t::lib::Mocks;
-use C4::Budgets;
-my $budget_module = Test::MockModule->new('C4::Budgets');
+use Koha::Acquisition::Currencies;
+my $budget_module = Test::MockModule->new('Koha::Acquisition::Currencies');
my $currency;
-$budget_module->mock( 'GetCurrency', sub { return $currency; } );
+$budget_module->mock( 'get_active', sub { return $currency; } );
use_ok('Koha::Number::Price');
my $format = {
@@ -16,12 +16,12 @@ my $format = {
p_sep_by_space => 0, # Force to not add a space between the symbol and the number
};
t::lib::Mocks::mock_preference( 'CurrencyFormat', 'US' );
-$currency = {
+$currency = Koha::Acquisition::Currency->new({
currency => 'USD',
symbol => '$',
rate => 1,
active => 1,
-};
+});
is( Koha::Number::Price->new->format( $format ), '0.00', 'US: format 0' );
is( Koha::Number::Price->new(3)->format( $format ), '3.00', 'US: format 3' );
@@ -45,12 +45,12 @@ is( Koha::Number::Price->new(1234567890)->unformat,
'1234567890', 'US: unformat 1234567890' );
t::lib::Mocks::mock_preference( 'CurrencyFormat', 'FR' );
-$currency = {
+$currency = Koha::Acquisition::Currency->new({
currency => 'EUR',
symbol => '€',
rate => 1,
active => 1,
-};
+});
# Actually,the price formating for France is 3,00€
# How put the symbol at the end with Number::Format?
diff --git a/t/db_dependent/Biblio.t b/t/db_dependent/Biblio.t
index 0413b90..0bc6310 100755
--- a/t/db_dependent/Biblio.t
+++ b/t/db_dependent/Biblio.t
@@ -37,11 +37,19 @@ my $context = new Test::MockModule('C4::Context');
mock_marcfromkohafield();
-my $currency = new Test::MockModule('C4::Budgets');
-$currency->mock( 'GetCurrency', sub {
- return { symbol => '$', isocode => 'USD',
- currency => 'USD', active => 1 };
-});
+my $currency = new Test::MockModule('Koha::Acquisition::Currencies');
+$currency->mock(
+ 'get_active',
+ sub {
+ return Koha::Acquisition::Currency->new(
+ { symbol => '$',
+ isocode => 'USD',
+ currency => 'USD',
+ active => 1,
+ }
+ );
+ }
+);
sub run_tests {
diff --git a/t/db_dependent/MungeMarcPrice.t b/t/db_dependent/MungeMarcPrice.t
index f661323..78a599f 100755
--- a/t/db_dependent/MungeMarcPrice.t
+++ b/t/db_dependent/MungeMarcPrice.t
@@ -3,7 +3,7 @@
use strict;
use warnings;
use C4::Biblio;
-use C4::Budgets;
+use Koha::Acquisition::Currencies;
use Test::More;
use utf8;
@@ -39,10 +39,10 @@ my $ISOCODE = 'USD';
my $RATE= 1;
# disables existing active currency if necessary.
-my $active_currency = C4::Budgets->GetCurrency();
+my $active_currency = Koha::Acquisition::Currencies->get_active;
my $curr;
if ($active_currency) {
- $curr = $active_currency->{'currency'};
+ $curr = $active_currency->currency;
$dbh->do("UPDATE currency set active = 0 where currency = '$curr'");
}
--
2.1.0