Sha256: 001d5c8004db1c947e38bf9193e697153f7796bb4da285c8a76c52da1ca6f69e
Contents?: true
Size: 774 Bytes
Versions: 3
Compression:
Stored size: 774 Bytes
Contents
module Virtuaaliviivakoodi class AmountNormalizer def self.call(value) amount = value.to_f if amount raise(ArgumentError, "Amount is negative") if (amount < 0) raise(ArgumentError, "Amount is too large, maximum is 999999.99") if (amount > 999999.99) decimals = digits_after_decimal_point(amount) raise(ArgumentError, "There can't be more than two decimals") if decimals > 2 euros, cents = sprintf("%0.02f", amount).split(".") Virtuaaliviivakoodi.pad(euros, 6) + cents else Virtuaaliviivakoodi.pad("", 8) end end private def self.digits_after_decimal_point(f) sign, digits, base, exponent = BigDecimal(f.to_s).split digits.length - exponent end end end
Version data entries
3 entries across 3 versions & 1 rubygems