Sales Amount in Report MultiLanguage Output

Hi,

anyone every try output the amount in letters in DIFFERENT LANGUAGE?
Eg:
NUMERIC:$123
ENGLISH WORDS:ONE HUNDRED AND TWENTY THREE DOLLARS ONLY
GERMAN WORDS: Hundertzwanzig drei Dollar ONLY

Just Go and change “FormatNoText” function in the report 1401, ass below

pass currency code as USD and chnge the Hundreds, tens, ones in german language german

CLEAR(NoText);
NoTextIndex := 1;
NoText[1] := ‘****’;

IF No < 1 THEN
AddToNoText(NoText,NoTextIndex,PrintExponent,Text026)
ELSE BEGIN
FOR Exponent := 4 DOWNTO 1 DO BEGIN
PrintExponent := FALSE;
Ones := No DIV POWER(1000,Exponent - 1);
Hundreds := Ones DIV 100;
Tens := (Ones MOD 100) DIV 10;
Ones := Ones MOD 10;
IF Hundreds > 0 THEN BEGIN
AddToNoText(NoText,NoTextIndex,PrintExponent,OnesText[Hundreds]);
AddToNoText(NoText,NoTextIndex,PrintExponent,Text027);
END;
IF Tens >= 2 THEN BEGIN
AddToNoText(NoText,NoTextIndex,PrintExponent,TensText[Tens]);
IF Ones > 0 THEN
AddToNoText(NoText,NoTextIndex,PrintExponent,OnesText[Ones]);
END ELSE
IF (Tens * 10 + Ones) > 0 THEN
AddToNoText(NoText,NoTextIndex,PrintExponent,OnesText[Tens * 10 + Ones]);
IF PrintExponent AND (Exponent > 1) THEN
AddToNoText(NoText,NoTextIndex,PrintExponent,ExponentText[Exponent]);
No := No - (Hundreds * 100 + Tens * 10 + Ones) * POWER(1000,Exponent - 1);
END;
END;

AddToNoText(NoText,NoTextIndex,PrintExponent,Text028);
AddToNoText(NoText,NoTextIndex,PrintExponent,FORMAT(No * 100) + ‘/100’);

IF CurrencyCode <> ‘’ THEN
AddToNoText(NoText,NoTextIndex,PrintExponent,CurrencyCode);

Thanks

Jerome Marshal. J

In the currency table just add the name of the currency in the field of currency name ( don’t remember),which will solve your problem, no need for any customization.

Hi Nikeman

If you are using German localization database then just passing the currency code is enough.

Thanks

Jerome Marshal. J

hi marshal,

thanks i am using german as an example, my client required thai & vietnamese.

hi manish,

thanks, will try it out and let you know again.

hi marshal,

do you mean change the text constant values?

If the particular language module is there in database no need to update text constant value .Text constant will automatically update for different languages.

otherwise you have to update text constant value for different languages

Bear in mind, that simple substitute of text constants in standard might not be enough - FormatNoText is designed for English grammar, but it is not universal, some languages follow the pattern of forming the numerals, some do not - even your example with German shows it.

BTW French people do not have problems wit hexadecimal system - they have special words for numbers from 1 to 16.

Problems start later, as 96 in French is quatre vingt seize or literally 4-20-16 [;)]

"If the particular language module is there in database no need to update text constant value .Text constant will automatically update for different languages.#### otherwise you have to update text constant value for different languages"

Hi Modris,

so i do not have to modified anything, as long as the language package is installed, text constant will run normally?

Hi marshal,

you are absolutely right changing the FormatNoText i do however change in other function, think due to licensing issues i might not have access to the report referred.

So I end up changing all the numerical value to the language i want.

hi Akhilesh,

i quote a real example that i do have a chinese installed, but the amount in words doesnt appear in chinese[:’(]

hi marshal,

i did a test by passing a hard coded currency code -rmb (china currency), i change my language to chinese, but unfortunately it doesnt gave me chinese for amount in words [*-)]

hi Modris,

absolutely agreed, for a quick fix i might design a customize record for particular customer, but if the customer going to have subsidiary in different languages am i going to do another report?

i was thinking along the line of creating a setup table primary, currency code, local values, numeric values.

eg:

currency code | local values | numeric values

USD | one | 1

DEM | ein | 1

RMB | 一 | 1

note: rmb=china currency, dem=german currency

so if navision test that the language pack is not english and the report like to print in their local currency, system will look up this table for value.
i am not sure currently if navision have such a feature or similar like as i am still new to navision. [:)]

You can print the currency code by entering the description of the currency in the currency table in the currenct decimal description & currency numeric description.

Ex. If the currency is USD then in the currency table in front of USD under decimal desc. enter cents & in numeric desc. enter dollor.

Enter the description for each currency you want.

You can check the example check report id. 1401, where it prints the description of the amount in words.

hi manish,

thanks for the reply, sorry maybe i was using version 4, i wasn’t able to find the field name decimal description in currency table(Id:4) you mention.

hi manish,

think i will only have to change them in caption ml for the text constant will do [;)]