Topic: Число словами для финансовых документов

Использую функцию ToWordsRu для финансовых документов и договоров.
Однако, она формирует число словами немного не так, как должно быть.
Например, число 12345,67 она пишет так:
Двенадцать тысяч триста сорок пять рублей и 67 копеек.
Но, в договорах это должно выглядеть так:
(Двенадцать тысяч триста сорок пять) рублей 67 копеек.
Т.е. число прописью пишется в скобках, т.к. оно расшифровывает сумму.
Также, не должно быть предлога "и" перед копейками.
Т.е. вся строка суммы договора 12345,67 должна выглядеть так:
Итого: 12 345,67 (Двенадцать тысяч триста сорок пять) рублей 67 копеек
Соответственно, надо убрать из результата функции предлог "и", а также дать возможность поставить скобку перед "рублями".
Вопрос к разработчику - можете ли доработать эту функцию или надо самому писать функцию для переработки возвращенной из ToWordsRu строки.

2 (edited by k245 2019-03-15 12:59:13)

Re: Число словами для финансовых документов

function ToInvoiceRu(AValue:real):string;
var
  i:integer;
begin
  result := ReplaceStr(ToWordsRu(AValue),' и','' ) ; // без и
  i := pos(' руб',result);
  result := '('+copy(result,1,i-1)+')'+copy(result,i,length(result));
end;

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
  ShowMessage( ToInvoiceRu(12345.67));
end;

begin

end.

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=5182&download=0

Post's attachments

Attachment icon T10.png 9.42 kb, 179 downloads since 2019-03-15 

Визуальное программирование: блог и телеграм-канал.