Browse Source

Bug 9593: (follow-up) don't make currency.isocode required

This patch changes the price parsing so that it can fall
back on the currency name if an ISO code is not supplied; this allows
for handling the very common situation where the currency name
as entered was already the same as the ISO code.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
3.16.x
Galen Charlton 8 years ago
parent
commit
f13c72ebee
  1. 1
      C4/Biblio.pm
  2. 4
      koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
  3. 25
      t/db_dependent/MungeMarcPrice.t

1
C4/Biblio.pm

@ -1517,6 +1517,7 @@ sub MungeMarcPrice {
my $active_currency = C4::Budgets->GetCurrency();
my $symbol = $active_currency->{'symbol'};
my $isocode = $active_currency->{'isocode'};
$isocode = $active_currency->{'currency'} unless defined $isocode;
my $localprice;
if ( $symbol ) {
my @matches =($price=~ /

4
koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt

@ -81,8 +81,8 @@
<input type="text" name="symbol" id="symbol" size="5" maxlength="5" value="[% symbol %]" required="required" class="required" /> <span class="required">Required</span>
</li>
<li>
<label for="isocode" class="required">ISO code: </label>
<input type="text" name="isocode" id="isocode" size="5" maxlength="5" value="[% isocode %]" required="required" class="required" /> <span class="required">Required</span>
<label for="isocode">ISO code: </label>
<input type="text" name="isocode" id="isocode" size="5" maxlength="5" value="[% isocode %]" />
</li>
<li>
<span class="label">Last updated: </span>[% timestamp %]

25
t/db_dependent/MungeMarcPrice.t

@ -30,7 +30,7 @@ my @prices2test=( { string => '25,5 £, $34,55, $LD35', expected => '34.55
{ string => '5.99 (7.75 CAN)', expected => '5.99' },
);
plan tests => scalar @prices2test;
plan tests => 2 * scalar @prices2test;
# set active currency test data
my $CURRENCY = 'TEST';
@ -49,9 +49,26 @@ if ($active_currency) {
$dbh->do("INSERT INTO currency ( currency,symbol,isocode,rate,active )
VALUES ('$CURRENCY','$SYMBOL','$ISOCODE','$RATE',1)");
foreach my $price (@prices2test) {
my $mungemarcprice=MungeMarcPrice($price->{'string'});
my $expected=$price->{'expected'};
ok ($mungemarcprice eq $expected, "must return $price->{'expected'} from initial string : $price->{'string'}");
is(
MungeMarcPrice($price->{'string'}),
$price->{'expected'},
"got expected price from $price->{'string'} (using currency.isocode)",
);
}
# run tests again, but fall back to currency name
$dbh->do('DELETE FROM aqbasket');
$dbh->do('DELETE FROM currency');
$dbh->do("INSERT INTO currency ( currency, symbol, rate, active )
VALUES ('$ISOCODE', '$SYMBOL', '$RATE', 1)");
foreach my $price (@prices2test) {
is(
MungeMarcPrice($price->{'string'}),
$price->{'expected'},
"got expected price from $price->{'string'} (using ISO code as currency name)",
);
}
# Cleanup
$dbh->rollback;

Loading…
Cancel
Save