@@ -, +, @@ --- Koha/Number/Price.pm | 5 +++++ t/Number/Price.t | 28 ++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) --- a/Koha/Number/Price.pm +++ a/Koha/Number/Price.pm @@ -56,6 +56,8 @@ sub unformat { sub _format_params { my ( $self, $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_format = C4::Context->preference("CurrencyFormat"); @@ -79,6 +81,9 @@ sub _format_params { ); } + $format_params{p_cs_precedes} = $p_cs_precedes if defined $p_cs_precedes; + $format_params{p_sep_by_space} = $p_sep_by_space if defined $p_sep_by_space; + return \%format_params; } --- a/t/Number/Price.t +++ a/t/Number/Price.t @@ -11,6 +11,10 @@ my $currency; $budget_module->mock( 'GetCurrency', sub { return $currency; } ); use_ok('Koha::Number::Price'); +my $format = { + p_cs_precedes => 1, # Force to place the symbol at the beginning + 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 => 'USD', @@ -19,19 +23,19 @@ $currency = { active => 1, }; -is( Koha::Number::Price->new->format, '0.00', 'US: format 0' ); -is( Koha::Number::Price->new(3)->format, '3.00', 'US: format 3' ); -is( Koha::Number::Price->new(1234567890)->format, +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' ); +is( Koha::Number::Price->new(1234567890)->format( $format ), '1,234,567,890.00', 'US: format 1234567890' ); # FIXME This should be display symbol, but it was the case before the creation of this module -is( Koha::Number::Price->new->format( { with_symbol => 1 } ), +is( Koha::Number::Price->new->format( { %$format, with_symbol => 1 } ), '0.00', 'US: format 0 with symbol' ); -is( Koha::Number::Price->new(3)->format( { with_symbol => 1 } ), +is( Koha::Number::Price->new(3)->format( { %$format, with_symbol => 1 } ), '3.00', 'US: format 3 with symbol' ); is( Koha::Number::Price->new(1234567890) - ->format( { with_symbol => 1 }, 'US: format 1234567890 with symbol' ), + ->format( { %$format, with_symbol => 1 }, 'US: format 1234567890 with symbol' ), '1,234,567,890.00' ); @@ -50,20 +54,20 @@ $currency = { # Actually,the price formating for France is 3,00€ # How put the symbol at the end with Number::Format? -is( Koha::Number::Price->new->format, '0,00', 'FR: format 0' ); -is( Koha::Number::Price->new(3)->format, '3,00', 'FR: format 3' ); +is( Koha::Number::Price->new->format( $format ), '0,00', 'FR: format 0' ); +is( Koha::Number::Price->new(3)->format( $format ), '3,00', 'FR: format 3' ); is( - Koha::Number::Price->new(1234567890)->format, + Koha::Number::Price->new(1234567890)->format( $format ), '1 234 567 890,00', 'FR: format 1234567890' ); -is( Koha::Number::Price->new->format( { with_symbol => 1 } ), +is( Koha::Number::Price->new->format( { %$format, with_symbol => 1 } ), '€0,00', 'FR: format 0 with symbol' ); -is( Koha::Number::Price->new(3)->format( { with_symbol => 1 } ), +is( Koha::Number::Price->new(3)->format( { %$format, with_symbol => 1 } ), '€3,00', 'FR: format 3 with symbol' ); is( Koha::Number::Price->new(1234567890) - ->format( { with_symbol => 1 }, 'FR: format 123567890 with symbol' ), + ->format( { %$format, with_symbol => 1 }, 'FR: format 123567890 with symbol' ), '€1 234 567 890,00' ); --