/** * 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); } } }
/** * 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)); }