Сервис для вывода русских сумм (в рублях) прописью. Начиная с версии 4.46 поддерживается также вывод сумм в долларах США.
До версии 4.46 ключей у макроса не было, форма вызова предполагала ввод числа прямо внутри квадратных скобок, то есть так: $Propis[123.25]$. В 4.46 и выше данный синтаксис также будет работать, по умолчанию выводя значение в рублях и копейках.
Нужно обратить внимание на то, что за границей иногда используют запятую в качестве разделителя тысяч (миллионов и так далее), для простоты чтения. При этом в качестве десятичного разделителя используется точка. Например, 1,334,344.38. И иногда, в стиле калькуляторов, пишут вместо запятой апостроф. Если необходимо обработать такие строки, нужно удалить лишние символы с помощью макроса Replace, или они могут быть автоматически удалены после операций умножения, деления или округления в макросах Math, Multiply и т.д.
Простые примеры
$Propis[1]$ выведет: Один рубль 00 копеек
$Propis[2]$ выведет: Два рубля 00 копеек
$Propis[price: 5]$ выведет: Пять рублей 00 копеек
$Propis[1234.15]$ выведет: Одна тысяча двести тридцать четыре рубля 15 копеек
$Propis[price: 1234.15; currency: USD]$ выведет: Одна тысяча двести тридцать четыре доллара США 15/100
Типовой пример для вывода суммы нескольких товаров в корзине прописью
$Propis[price: $Multiply[left: $Attribute:price$; right: $Attribute:quantity$; digits: 2]$; currency: $Text[source: RUR; antisource: USD; condition: USD !in $Attribute:price$, \$ !in $Attribute:price$]$]$
Результатом работы показанного блока в зависимости от валюты будет строка типа:
Одна тысяча пятьсот долларов США 55/100 или
Одна тысяча пятьсот рублей 55 копеек
Цена (
$Attribute:price$) умножена на количество товаров (
$Attribute:quantity$) и округлено до 2 знаков после запятой, поскольку если количество знаков не будет указано, число будет округлено до целых и дробная часть потеряна. В зависимости от того, был ли в исходной цене замечен знак доллара или строка "USD", ключу
currency будет установлено либо значение
RUR, либо значение
USD.
Обратите внимание, что конструкция !in означает "левое выражение не входит в правое", и то что знак доллара квотирован (предварен обратным слэшем) чтобы макросы не трогали его во время обработки. Также учтите, что если в $Attribute:price$ находится значение вида 132$, то после умножения макросом Multiply знак доллара будет уничтожен. Поскольку центы в российской бухгалтерии обычно не пишут, вместо ожидаемых "10 долларов США 25 центов" в режиме работы с долларами выводится "10 долларов США 25/100" и это есть правильно.