Example #1
0
 /**
  * Validates all money columns
  * 
  * @internal
  * 
  * @param  fActiveRecord $object                The fActiveRecord instance
  * @param  array         &$values               The current values
  * @param  array         &$old_values           The old values
  * @param  array         &$related_records      Any records related to this record
  * @param  array         &$cache                The cache array for the record
  * @param  array         &$validation_messages  An array of ordered validation messages
  * @return void
  */
 public static function validateMoneyColumns($object, &$values, &$old_values, &$related_records, &$cache, &$validation_messages)
 {
     $class = get_class($object);
     if (empty(self::$money_columns[$class])) {
         return;
     }
     foreach (self::$money_columns[$class] as $column => $currency_column) {
         if ($values[$column] instanceof fMoney || $values[$column] === NULL) {
             continue;
         }
         // Remove any previous validation warnings
         unset($validation_messages[$column]);
         $column_name = fValidationException::formatField(fORM::getColumnName($class, $currency_column));
         if ($currency_column && !in_array($values[$currency_column], fMoney::getCurrencies())) {
             $validation_messages[$column] = self::compose('%sThe currency specified is invalid', $column_name);
         } else {
             $validation_messages[$column] = self::compose('%sPlease enter a monetary value', $column_name);
         }
     }
 }
Example #2
0
 /**
  * Sets the default currency to use when creating fMoney objects
  * 
  * @param string  $iso_code  The ISO code (three letters, e.g. `'USD'`) for the new default currency
  * @return void
  */
 public static function setDefaultCurrency($iso_code)
 {
     if (!isset(self::$currencies[$iso_code])) {
         throw new fProgrammerException('The currency specified, %1$s, is not a valid currency. Must be one of: %2$s.', $iso_code, join(', ', array_keys(self::$currencies)));
     }
     self::$default_currency = $iso_code;
 }
 /**
  * @dataProvider formatProvider
  */
 public function testFormat($amount, $currency, $remove_zero_decimal, $output)
 {
     $money = new fMoney($amount, $currency);
     $this->assertEquals($output, $money->format($remove_zero_decimal));
 }