Доброго времени суток.
Являюсь сотрудником компании использующей Salesforce.
Одна из идей использовать Salesаorce для генерации текстов договоров. Все данные для договорв (номер, имя клиента, сумма и т.д.) берутся из других полей. Но по российскому законодательству суммы в договорах должны прописываться не только цифрами, но и словами. Сумму цифрами, как я уже сказал, берем из другого поля в системе, но необходимо автоматически переводить цифры в слова. Подобный код для перевода на английский я нашел - http://salesforcewithkiran.blogspot.ru/2013/05/number-to-words-in-apex.html. Хотел спросить, нет ли у кого подобного на русский?
Если нет, то может ли кто-то взяться за адаптацию подобного на русский, если это конечно рабочий вариант?
Детали обсудим в личке.
Спасибо.
Доброго времени суток. Являюсь сотрудником компании использующей Salesforce. Одна из идей использовать Salesаorce для генерации текстов договоров. Все данные для договорв (номер, имя клиента, сумма и т.д.) берутся из других полей. Но по российскому законодательству суммы в договорах должны прописываться не только цифрами, но и словами. Сумму цифрами, как я уже сказал, берем из другого поля в системе, но необходимо автоматически переводить цифры в слова. Подобный код для перевода на английский я нашел - [url]http://salesforcewithkiran.blogspot.ru/2013/05/number-to-words-in-apex.html[/url]. Хотел спросить, нет ли у кого подобного на русский? Если нет, то может ли кто-то взяться за адаптацию подобного на русский, если это конечно рабочий вариант? Детали обсудим в личке. Спасибо.
Привет Антон.
Интересный вопрос ты подкинул, а главное очень жизненный. На практике мне не встречался подобный алгоритм и честно признаться самому стало очень любопытно увидеть что-то похожее. Видимо для бизнеса подобный функционал очень даже необходимая штука.
Тот что ты предложил вариант с английскими словами мне кажется не очень подходит для переделки. Я нашел интересный русский вариант на другой платформе. В ближайшее время перепишу для Salesforce и сделаю чтобы его можно было использовать так сказать "из коробки".
Привет Антон. Интересный вопрос ты подкинул, а главное очень жизненный. На практике мне не встречался подобный алгоритм и честно признаться самому стало очень любопытно увидеть что-то похожее. Видимо для бизнеса подобный функционал очень даже необходимая штука. Тот что ты предложил вариант с английскими словами мне кажется не очень подходит для переделки. Я нашел интересный русский вариант на другой платформе. В ближайшее время перепишу для Salesforce и сделаю чтобы его можно было использовать так сказать "из коробки".
Вот статья "Сумма прописью на Salesforce"
[b]Вот статья "[url=http://salesforce-developer.ru/summa-propisyu-na-salesforce/]Сумма прописью на Salesforce[/url]"[/b]
круто, круто
круто, круто
Ух ты, действительно "круто"
Спасибо большое! Будем пробовать, как запустим, отпишу, как говорится с полей.
Ух ты, действительно "круто" :) Спасибо большое! Будем пробовать, как запустим, отпишу, как говорится с полей.
Используй formula field поле. Например, вот так. Будет работать на ура до 999 999.
Поле с цифрами AnnualRevenue. Ну и создаешь поле формула филд с таким кодом.
CASE((MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000))/1000,
100, 'one',
200, 'two',
300, 'three',
400, 'four',
500, 'five',
600, 'six',
700, 'seven',
800, 'eight',
900, 'nine',
'')
&
IF (MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000) >= 100000, IF(MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000) == 100000, ' hundred', ' hundreds'),'')
&
IF (MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,10000) == 10000,
CASE((MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,1000))/1000,
10, ' ten',
11, ' eleven',
12, ' twelve',
13, ' thirteen',
14, ' fourteen',
15, ' fifteen',
16, ' sixteen',
17, ' seventeen',
18, ' eighteen',
19, ' nineteen',
'')
,
CASE ((MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,10000))/1000,
20, ' twenty',
30, ' thirty',
40, ' fourty',
50, ' fifty',
60, ' sixty',
70, ' seventy',
80, ' eighty',
90, ' ninety',
''
)
&
CASE ((MOD(AnnualRevenue,10000) - MOD(AnnualRevenue,1000))/1000,
1, ' one',
2, ' two',
3, ' three',
4, ' four',
5, ' five',
6, ' six',
7, ' seven',
8, ' eight',
9, ' nine',
''))
&
IF (MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,1000) >= 1000, IF(MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,1000) == 1000, ' thousand', ' thousands'),'')
&
CASE(MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100),
100, ' one',
200, ' two',
300, ' three',
400, ' four',
500, ' five',
600, ' six',
700, ' seven',
800, ' eight',
900, ' nine',
'')
&
IF (MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100) >= 100, IF(MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100) == 100, ' hundred', ' hundreds'),'')
&
IF (MOD(AnnualRevenue,100) - MOD(AnnualRevenue,10) == 10,
CASE(MOD(AnnualRevenue,100) - MOD(AnnualRevenue,1),
10, ' ten',
11, ' eleven',
12, ' twelve',
13, ' thirteen',
14, ' fourteen',
15, ' fifteen',
16, ' sixteen',
17, ' seventeen',
18, ' eighteen',
19, ' nineteen',
'')
,
CASE (MOD(AnnualRevenue,100) - MOD(AnnualRevenue,10),
20, ' twenty',
30, ' thirty',
40, ' fourty',
50, ' fifty',
60, ' sixty',
70, ' seventy',
80, ' eighty',
90, ' ninety',
''
)
&
CASE (MOD(AnnualRevenue,10) - MOD(AnnualRevenue,1),
1, ' one',
2, ' two',
3, ' three',
4, ' four',
5, ' five',
6, ' six',
7, ' seven',
8, ' eight',
9, ' nine',
''))
&
IF(AnnualRevenue == 0, 'zero','')
Если надо для русского используй схожий алгоритм)
Успехов!
Используй formula field поле. Например, вот так. Будет работать на ура до 999 999. Поле с цифрами AnnualRevenue. Ну и создаешь поле формула филд с таким кодом. [code]CASE((MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000))/1000, 100, 'one', 200, 'two', 300, 'three', 400, 'four', 500, 'five', 600, 'six', 700, 'seven', 800, 'eight', 900, 'nine', '') & IF (MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000) >= 100000, IF(MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,100000) == 100000, ' hundred', ' hundreds'),'') & IF (MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,10000) == 10000, CASE((MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,1000))/1000, 10, ' ten', 11, ' eleven', 12, ' twelve', 13, ' thirteen', 14, ' fourteen', 15, ' fifteen', 16, ' sixteen', 17, ' seventeen', 18, ' eighteen', 19, ' nineteen', '') , CASE ((MOD(AnnualRevenue,100000) - MOD(AnnualRevenue,10000))/1000, 20, ' twenty', 30, ' thirty', 40, ' fourty', 50, ' fifty', 60, ' sixty', 70, ' seventy', 80, ' eighty', 90, ' ninety', '' ) & CASE ((MOD(AnnualRevenue,10000) - MOD(AnnualRevenue,1000))/1000, 1, ' one', 2, ' two', 3, ' three', 4, ' four', 5, ' five', 6, ' six', 7, ' seven', 8, ' eight', 9, ' nine', '')) & IF (MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,1000) >= 1000, IF(MOD(AnnualRevenue,1000000) - MOD(AnnualRevenue,1000) == 1000, ' thousand', ' thousands'),'') & CASE(MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100), 100, ' one', 200, ' two', 300, ' three', 400, ' four', 500, ' five', 600, ' six', 700, ' seven', 800, ' eight', 900, ' nine', '') & IF (MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100) >= 100, IF(MOD(AnnualRevenue,1000) - MOD(AnnualRevenue,100) == 100, ' hundred', ' hundreds'),'') & IF (MOD(AnnualRevenue,100) - MOD(AnnualRevenue,10) == 10, CASE(MOD(AnnualRevenue,100) - MOD(AnnualRevenue,1), 10, ' ten', 11, ' eleven', 12, ' twelve', 13, ' thirteen', 14, ' fourteen', 15, ' fifteen', 16, ' sixteen', 17, ' seventeen', 18, ' eighteen', 19, ' nineteen', '') , CASE (MOD(AnnualRevenue,100) - MOD(AnnualRevenue,10), 20, ' twenty', 30, ' thirty', 40, ' fourty', 50, ' fifty', 60, ' sixty', 70, ' seventy', 80, ' eighty', 90, ' ninety', '' ) & CASE (MOD(AnnualRevenue,10) - MOD(AnnualRevenue,1), 1, ' one', 2, ' two', 3, ' three', 4, ' four', 5, ' five', 6, ' six', 7, ' seven', 8, ' eight', 9, ' nine', '')) & IF(AnnualRevenue == 0, 'zero','')[/code] Если надо для русского используй схожий алгоритм) Успехов!