Class/Object

squants.market

Money

Related Docs: object Money | package market

Permalink

final class Money extends Quantity[Money]

Represents a quantity of Money.

Money is similar to other quantities in that it represents an amount of something - purchasing power - and it is measured in units - currencies.

The main difference is that the conversion rate between currencies can not be certain at compile. (In fact it may not always be so easy to know them at runtime as well.)

To address this diversion from the way most other quantities work, Money overrides several of the standard methods and operators to ensure one of two rules is followed:

1) this and that are in the same currency, or 2) there is in an implicit MoneyContext in scope (which may or may not have the applicable exchange rate)

Methods and operations applied to moneys of different currencies may throw a NoSuchExchangeRateException if the implicit MoneyContext does not contain the Rate(s) necessary to perform the conversion.

The defaultMoneyContext includes USD as the default currency, a list of ~20 other currencies and NO exchange rates

Source
Money.scala
Since

0.1

Linear Supertypes
Quantity[Money], Ordered[Money], Comparable[Money], Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Money
  2. Quantity
  3. Ordered
  4. Comparable
  5. Serializable
  6. Serializable
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. def !=#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  3. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  4. def %(that: BigDecimal): Money

    Permalink

    Integer divides this money by that BigDecimal and returns the remainder

    Integer divides this money by that BigDecimal and returns the remainder

    that

    BigDecimal

    returns

    Money

  5. def %(that: Money): Double

    Permalink
    Definition Classes
    Quantity
  6. def %(that: Double): Money

    Permalink
    Definition Classes
    Quantity
  7. def *(that: CurrencyExchangeRate): Money

    Permalink

    Multiplies this money by that squants.market.CurrencyExchangeRate and returns the equal value in the other currency.

    Multiplies this money by that squants.market.CurrencyExchangeRate and returns the equal value in the other currency.

    Delegates to CurrencyExchangeRate * Money

    that

    BigDecimal

  8. def *(that: BigDecimal): Money

    Permalink

    Multiplies this money by that BigDecimal and returns a new Money

    Multiplies this money by that BigDecimal and returns a new Money

    that

    BigDecimal

    returns

    Money

  9. def *(that: Double): Money

    Permalink
    Definition Classes
    Quantity
  10. def +(that: Money)(implicit context: MoneyContext = defaultMoneyContext): Money

    Permalink

    moneyPlus *

  11. def +(that: Money): Money

    Permalink
    Definition Classes
    Quantity
  12. def +-(that: Money): QuantityRange[Money]

    Permalink
    Definition Classes
    Quantity
  13. def -(that: Money)(implicit context: MoneyContext = defaultMoneyContext): Money

    Permalink

    moneyMinus *

  14. def -(that: Money): Money

    Permalink
    Definition Classes
    Quantity
  15. def ->: (Money) ⇒ CurrencyExchangeRate

    Permalink

    toThe

  16. def /[A <: Quantity[A]](that: A): Price[A]

    Permalink

    Divide this money by another (non-money) Quantity and return a Price

    Divide this money by another (non-money) Quantity and return a Price

    A

    Quantity Type

    that

    Quantity

    returns

    Price[A]

  17. def /(that: Money)(implicit context: MoneyContext = defaultMoneyContext): BigDecimal

    Permalink
  18. def /(that: BigDecimal): Money

    Permalink

    Divides this money by that BigDecimal and returns a new Money

    Divides this money by that BigDecimal and returns a new Money

    that

    BigDecimal

    returns

    Money

  19. def /(that: Money): Double

    Permalink
    Definition Classes
    Quantity
  20. def /(that: Double): Money

    Permalink
    Definition Classes
    Quantity
  21. def /%(that: BigDecimal): (Money, Money)

    Permalink

    Integer divides this money by that BigDecimal and returns the quotient and the remainder

    Integer divides this money by that BigDecimal and returns the quotient and the remainder

    that

    BigDecimal

    returns

    (Money, Money)

  22. def /%(that: Money): (Double, Money)

    Permalink
    Definition Classes
    Quantity
  23. def /%(that: Double): (Money, Money)

    Permalink
    Definition Classes
    Quantity
  24. def <(that: Money): Boolean

    Permalink
    Definition Classes
    Ordered
  25. def <#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  26. def <=(that: Money): Boolean

    Permalink
    Definition Classes
    Ordered
  27. def <=#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  28. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  29. def ==#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  30. def =~(that: Money)(implicit tolerance: Money): Boolean

    Permalink

    approx

    approx

    Definition Classes
    Quantity
  31. def >(that: Money): Boolean

    Permalink
    Definition Classes
    Ordered
  32. def >#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  33. def >=(that: Money): Boolean

    Permalink
    Definition Classes
    Ordered
  34. def >=#(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink
  35. def abs: Money

    Permalink

    Returns the absolute value of this Quantity

    Returns the absolute value of this Quantity

    returns

    Quantity

    Definition Classes
    Quantity
  36. val amount: BigDecimal

    Permalink

    the amount of money

  37. def approx(that: Money)(implicit tolerance: Money): Boolean

    Permalink

    Returns boolean result of approximate equality comparison

    Returns boolean result of approximate equality comparison

    that

    Quantity

    tolerance

    Quantity

    Definition Classes
    Quantity
  38. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  39. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  40. def compare(that: Money): Int

    Permalink

    Override for Quantity.compare to only work on Moneys of like Currency

    Override for Quantity.compare to only work on Moneys of like Currency

    that

    Money

    returns

    Int

    Definition Classes
    MoneyQuantity → Ordered
  41. def compareTo(that: Money): Int

    Permalink
    Definition Classes
    Ordered → Comparable
  42. val currency: Currency

    Permalink

    the currency in which the money is denominated

  43. def dimension: Money.type

    Permalink

    The Dimension this quantity represents

    The Dimension this quantity represents

    Definition Classes
    MoneyQuantity
  44. def divide(that: Money): Double

    Permalink

    Override for Quantity.divide to only work on Moneys of like Currency Cross currency subtractions should use moneyMinus

    Override for Quantity.divide to only work on Moneys of like Currency Cross currency subtractions should use moneyMinus

    that

    Money

    returns

    Double

    Definition Classes
    MoneyQuantity
  45. def divide(that: Double): Money

    Permalink

    Divide this quantity by some number

    Divide this quantity by some number

    that

    Double

    returns

    Quantity

    Definition Classes
    Quantity
  46. def divideAndRemainder(that: Money): (Double, Money)

    Permalink

    Returns a Pair that includes the result of divideToInteger and remainder

    Returns a Pair that includes the result of divideToInteger and remainder

    that

    Quantity

    returns

    (Double, Quantity)

    Definition Classes
    Quantity
  47. def divideAndRemainder(that: Double): (Money, Money)

    Permalink

    Returns a Pair that includes the result of divideToInteger and remainder

    Returns a Pair that includes the result of divideToInteger and remainder

    that

    Double

    returns

    (Quantity, Quantity)

    Definition Classes
    Quantity
  48. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  49. def equals(that: Any): Boolean

    Permalink

    Override for Quantity.equal to only match Moneys of like Currency

    Override for Quantity.equal to only match Moneys of like Currency

    that

    Money must be of matching value and unit

    Definition Classes
    MoneyQuantity → AnyRef → Any
  50. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  51. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  52. def hashCode(): Int

    Permalink

    Override of hashCode

    Override of hashCode

    Definition Classes
    Quantity → AnyRef → Any
  53. def in(unit: Currency)(implicit context: MoneyContext): Money

    Permalink

    Reboxes this Money value in a Money in the given Currency

    Reboxes this Money value in a Money in the given Currency

    unit

    Currency

    context

    MoneyContext required for cross currency operations

    returns

    Money

    Exceptions thrown

    NoSuchExchangeRateException when no exchange rate is available

  54. def in(uom: UnitOfMeasure[Money]): Money

    Permalink

    Returns an equivalent Quantity boxed with the supplied Unit

    Returns an equivalent Quantity boxed with the supplied Unit

    uom

    UnitOfMeasure[A]

    returns

    Quantity

    Definition Classes
    Quantity
  55. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  56. def map(f: (Double) ⇒ Double): Money

    Permalink

    Applies a function to the underlying value of the Quantity, returning a new Quantity in the same unit

    Applies a function to the underlying value of the Quantity, returning a new Quantity in the same unit

    f

    Double => Double function

    Definition Classes
    Quantity
  57. def max(that: Money): Money

    Permalink

    Override for Quantity.max to only work on Moneys of like Currency

    Override for Quantity.max to only work on Moneys of like Currency

    that

    Money

    returns

    Int

    Definition Classes
    MoneyQuantity
  58. def min(that: Money): Money

    Permalink

    Override for Quantity.max to only work on Moneys of like Currency

    Override for Quantity.max to only work on Moneys of like Currency

    that

    Quantity

    returns

    Int

    Definition Classes
    MoneyQuantity
  59. def minus(that: Money): Money

    Permalink

    Override Quantity.minus to only work on like currencies Cross currency subtractions should use moneyMinus

    Override Quantity.minus to only work on like currencies Cross currency subtractions should use moneyMinus

    that

    Money

    returns

    Money

    Definition Classes
    MoneyQuantity
    Exceptions thrown

    scala.UnsupportedOperationException when attempted on cross currencies

  60. def moneyCompare(that: Money)(implicit moneyContext: MoneyContext): Int

    Permalink

    Supports compare operation on Moneys of dislike Currency

    Supports compare operation on Moneys of dislike Currency

    that

    Money

    moneyContext

    MoneyContext

  61. def moneyDivide(that: Money)(implicit context: MoneyContext): BigDecimal

    Permalink

    Divides this money by that money and returns the ratio between the converted amounts

    Divides this money by that money and returns the ratio between the converted amounts

    that

    Money

    context

    MoneyContext

  62. def moneyEquals(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink

    Supports equality comparisons on Moneys of dislike Currency

    Supports equality comparisons on Moneys of dislike Currency

    that

    Money

    moneyContext

    MoneyContext

  63. def moneyMax(that: Money)(implicit moneyContext: MoneyContext): Money

    Permalink

    Supports max operation on Moneys of dislike Currency

    Supports max operation on Moneys of dislike Currency

    that

    Money

    moneyContext

    MoneyContext

  64. def moneyMin(that: Money)(implicit moneyContext: MoneyContext): Money

    Permalink

    Supports min operation on Moneys of dislike Currency

    Supports min operation on Moneys of dislike Currency

    that

    Money

    moneyContext

    MoneyContext

  65. def moneyMinus(that: Money)(implicit context: MoneyContext = defaultMoneyContext): Money

    Permalink

    Subtracts that Money from this Money converted to this.currency via context

    Subtracts that Money from this Money converted to this.currency via context

    that

    Money

    context

    MoneyContext required for cross currency operations

    returns

    Money

    Exceptions thrown

    NoSuchExchangeRateException when no exchange rate is available

  66. def moneyNotEquals(that: Money)(implicit moneyContext: MoneyContext): Boolean

    Permalink

    Supports non-equality comparisons on Moneys of dislike Currency

    Supports non-equality comparisons on Moneys of dislike Currency

    that

    Money

    moneyContext

    MoneyContext

  67. def moneyPlus(that: Money)(implicit context: MoneyContext = defaultMoneyContext): Money

    Permalink

    Adds this Money to that Money converted to this.currency via context

    Adds this Money to that Money converted to this.currency via context

    that

    Money

    context

    MoneyContext required for cross currency operations

    returns

    Money

    Exceptions thrown

    NoSuchExchangeRateException when no exchange rate is available

  68. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  69. def negate: Money

    Permalink

    Returns the negative value of this Quantity

    Returns the negative value of this Quantity

    returns

    Quantity

    Definition Classes
    Quantity
  70. def notWithin(range: QuantityRange[Money]): Boolean

    Permalink

    Returns true if this value is not within (contains) the range

    Returns true if this value is not within (contains) the range

    range

    QuantityRange

    returns

    Boolean

    Definition Classes
    Quantity
  71. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  72. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  73. def plus(that: Money): Money

    Permalink

    Overrides Quantity.plus to only work on like currencies.

    Overrides Quantity.plus to only work on like currencies. Cross currency additions should use moneyPlus

    that

    Money

    returns

    Money

    Definition Classes
    MoneyQuantity
    Exceptions thrown

    scala.UnsupportedOperationException when attempted on cross currencies

  74. def plusOrMinus(that: Money): QuantityRange[Money]

    Permalink

    Returns a QuantityRange representing the range for this value +- that

    Returns a QuantityRange representing the range for this value +- that

    that

    Quantity

    returns

    QuantityRange

    Definition Classes
    Quantity
  75. def remainder(that: Money): Double

    Permalink

    Returns the remainder of a division by a like quantity

    Returns the remainder of a division by a like quantity

    that

    Quantity

    returns

    Double

    Definition Classes
    Quantity
  76. def remainder(that: Double): Money

    Permalink

    Returns the remainder of a division by a number

    Returns the remainder of a division by a number

    that

    Quantity

    returns

    Quantity

    Definition Classes
    Quantity
  77. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  78. def times(that: Double): Money

    Permalink

    Multiply this quantity by some number

    Multiply this quantity by some number

    that

    Double

    returns

    Quantity

    Definition Classes
    Quantity
  79. def to(unit: Currency)(implicit context: MoneyContext): BigDecimal

    Permalink

    Convert this Money to a Double representing the currency unit

    Convert this Money to a Double representing the currency unit

    unit

    Currency

    context

    MoneyContext required for cross currency operations

    returns

    Double

    Exceptions thrown

    NoSuchExchangeRateException when no exchange rate is available

  80. def to(uom: UnitOfMeasure[Money]): Double

    Permalink

    Returns a Double representing the quantity in terms of the supplied unit

    Returns a Double representing the quantity in terms of the supplied unit

    val d = Feet(3)
    (d to Inches) should be(36)
    uom

    UnitOfMeasure[A]

    returns

    Double

    Definition Classes
    Quantity
  81. def to(that: Money): QuantityRange[Money]

    Permalink

    Returns a QuantityRange that goes from this to that

    Returns a QuantityRange that goes from this to that

    that

    Quantity

    returns

    QuantityRange

    Definition Classes
    Quantity
  82. def toFormattedString(c: Currency)(implicit context: MoneyContext): String

    Permalink
  83. def toFormattedString: String

    Permalink

    Returns a string formatted with the value and currency symbol

    Returns a string formatted with the value and currency symbol

    eg USD(100) => "$100.00"

    returns

    String

  84. def toString(c: Currency)(implicit context: MoneyContext): String

    Permalink
  85. def toString(): String

    Permalink

    Returns a string formatted with the value and currency code

    Returns a string formatted with the value and currency code

    eg USD(100) => "100.00 USD"

    returns

    String

    Definition Classes
    MoneyQuantity → AnyRef → Any
  86. def toString(uom: UnitOfMeasure[Money], format: String): String

    Permalink

    Returns a string representing the quantity's value in the given unit in the given format

    Returns a string representing the quantity's value in the given unit in the given format

    uom

    UnitOfMeasure[A] with UnitConverter

    format

    String containing the format for the value (ie "%.3f")

    returns

    String

    Definition Classes
    Quantity
  87. def toString(uom: UnitOfMeasure[Money]): String

    Permalink

    Returns a string representing the quantity's value in the given unit

    Returns a string representing the quantity's value in the given unit

    uom

    UnitOfMeasure[A] with UnitConverter

    returns

    String

    Definition Classes
    Quantity
  88. def toThe(that: Money): CurrencyExchangeRate

    Permalink

    Combines with that Money to create an squants.market.CurrencyExchangeRate

    Combines with that Money to create an squants.market.CurrencyExchangeRate

    Exchange Rates on the same currency are not supported

    val rate: CurrencyExchangeRate = JPY(100) toThe USD(1)

    that

    Money

    Exceptions thrown

    scala.IllegalArgumentException if the that.currency matches this.currency

  89. def toTuple(uom: UnitOfMeasure[Money]): (Double, String)

    Permalink

    Returns a pair representing the numeric value and the uom's symbol

    Returns a pair representing the numeric value and the uom's symbol

    uom

    UnitOfMeasure[A]

    Definition Classes
    Quantity
  90. def toTuple: (Double, String)

    Permalink

    Returns a tuple representing the numeric value and the unit's symbol

    Returns a tuple representing the numeric value and the unit's symbol

    Definition Classes
    Quantity
  91. def unary_-(): Money

    Permalink
    Definition Classes
    Quantity
  92. def unit: Currency

    Permalink

    The Unit of Measure the value represents

    The Unit of Measure the value represents

    returns

    UnitOfMeasure[A]

    Definition Classes
    MoneyQuantity
  93. def value: Double

    Permalink

    The value of the quantity given the unit

    The value of the quantity given the unit

    returns

    Double

    Definition Classes
    MoneyQuantity
  94. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  95. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  96. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  97. def within(range: QuantityRange[Money]): Boolean

    Permalink

    Returns true if this value is within (contains) the range

    Returns true if this value is within (contains) the range

    range

    QuantityRange

    returns

    Boolean

    Definition Classes
    Quantity
  98. def ~=(that: Money)(implicit tolerance: Money): Boolean

    Permalink

    approx

    approx

    Definition Classes
    Quantity
  99. def (that: Money)(implicit tolerance: Money): Boolean

    Permalink

    approx

    approx

    Definition Classes
    Quantity

Inherited from Quantity[Money]

Inherited from Ordered[Money]

Inherited from Comparable[Money]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped