*
* @return string
* formatted monetary amount
- *
- * @throws \CRM_Core_Exception
*/
function smarty_modifier_crmMoney($amount, ?string $currency = NULL): string {
- return Civi::format()->money($amount, $currency);
+ try {
+ return Civi::format()->money($amount, $currency);
+ }
+ catch (CRM_Core_Exception $e) {
+ // @todo escalate this to a deprecation notice. It turns out to be depressingly
+ // common for us to double process amount strings - if they are > 1000 then
+ // they wind up throwing an exception in the money function.
+ // It would be more correct to format in the smarty layer, only.
+ Civi::log()->warning('Invalid amount passed in as money - {money}', ['money' => $amount]);
+ return $amount;
+ }
}