internal final class NW_NumToTxtHelper
{
static TempStr numeralsToTxt_AR(real _num)
{
real numOfPennies = decround(frac(_num), 2);
real test = _num - frac(_num);
str zero;
str comma;
str and;
str cent;
int numOfTenths;
str 20 ones[19], tenths[9], hundreds, thousands, millions, billions, trillions;
int64 temp;
str 200 returntxt;
real modOperator(real a1, real a2)
{
int tmpi;
real tmp1, tmp2;
tmp1 = a1 / a2;
tmpi = real2int(tmp1);
tmp2 = tmpi;
return (tmp1 - tmp2)*a2;
}
str doubleDigit2ARTxt(real doubledigit,boolean _pennies = false)
{
str txt;
int firstDigit;
real tempdigit;
if(_pennies)
{
firstDigit = doubledigit * 10;
doubledigit = doubledigit * 100;
if(!firstDigit)
{
doubledigit = doubledigit mod 10;
//txt = zero + " " + ones[doubledigit];
txt = ones[doubledigit];
return txt;
}
}
tempdigit = doubledigit;
if (tempdigit >= 20)
{
tempdigit = tempdigit div 10;
txt = tenths[tempdigit];
doubledigit = doubledigit mod 10;
}
if (doubledigit >= 1)
{
txt = txt ? (ones[doubledigit] + and + txt) : ones[doubledigit];
}
return txt;
}
real checkPower(real _test,int64 _power)
{
int64 numOfPower;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
if(temp > 9)// The validation was previously on 2
{
returntxt = returntxt ? (returntxt + and + ones[temp] + ' ' + hundreds) :(returntxt + ' ' + ones[temp] + ' ' + hundreds);
}
else
{
switch(temp)
{
Case 1:
returntxt = returntxt ? (returntxt + and + hundreds) : (returntxt + ' ' + hundreds);
break;
Case 2:
// TO DO need to insert a label for two hundred in Arabic
returntxt = returntxt ? (returntxt + and + "مائتين") : returntxt + ' ' + "مائتين";
break;
Case 3:
// TO DO need to insert a label for three hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثلاثمائة") : returntxt + ' ' + 'ثلاثمائة';
break;
Case 4:
// TO DO need to insert a label for four hundred in Arabic
returntxt = returntxt ? (returntxt + and + "اربعمائة") : returntxt + ' ' + "اربعمائة";
break;
Case 5:
// TO DO need to insert a label for five hundred in Arabic
returntxt = returntxt ? (returntxt + and + "خمسمائة") : returntxt + ' ' + "خمسمائة";
break;
Case 6:
// TO DO need to insert a label for six hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ستمائة") : returntxt + ' ' + "ستمائة";
break;
Case 7:
// TO DO need to insert a label for seven hundred in Arabic
returntxt = returntxt ? (returntxt + and + "سبعمائة") : returntxt + ' ' + "سبعمائة";
break;
Case 8:
// TO DO need to insert a label for eight hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثمانمائة") : returntxt + ' ' + "ثمانمائة";
break;
Case 9:
// TO DO need to insert a label for nine hundred in Arabic
returntxt = returntxt ? (returntxt + and + "تسعمائة") : returntxt + ' ' + "تسعمائة";
break;
}
}
numOfPower = numOfPower mod 100;
}
if(numOfPower > 2 && _power > 100)
{
returntxt = returntxt ? (returntxt + and + doubleDigit2ARTxt(real2int(numOfPower))) : (returntxt + ' ' + doubleDigit2ARTxt(real2int(numOfPower)));
}
else
{
if(returntxt && numOfPower)
{
returntxt = returntxt + and + ' ';
}
}
switch(_power)
{
case 1000000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two trillions in Arabic
returntxt = returntxt + "تريليونين ";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + trillions) : (returntxt + ' ' + "تريليونات");
}
_test = modOperator(_test, 1000000000000.00);
break;
}
case 1000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two billions in Arabic
returntxt = returntxt + "مليارين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + billions) : (returntxt + ' ' + "مليارات");
}
_test = modOperator(_test, 1000000000);
break;
}
case 1000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Millions in Arabic
returntxt = returntxt + "مليونين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + millions) : (returntxt + ' ' + "ملايين");
}
_test = modOperator(_test, 1000000);
break;
}
case 1000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Thousands' in Arabic
returntxt = returntxt + "ألفين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + thousands) : (returntxt + ' ' + "الاف");
}
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
switch (numOfPower)
{
case 2:
returntxt = returntxt + "مائتين";
break;
case 3:
returntxt = returntxt +"ثلاثمائة";
break;
case 4:
returntxt = returntxt + "اربعمائة";
break;
case 5:
returntxt = returntxt + "خمسمائة";
break;
case 6:
returntxt = returntxt + "ستمائة";
break;
case 7:
returntxt = returntxt + "سبعمائة";
break;
case 8:
returntxt = returntxt + "ثمانمائة";
break;
case 9:
returntxt = returntxt + "تسعمائة";
break;
default:
returntxt = returntxt + ' ' + hundreds;
}
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
infolog.language("AR");
and = ' ' + "@SYS5534" + ' ';
//and = ' ' + "و" + ' ';
comma = "ريـال";
//comma = "@SYS80142";
zero = "@SYS2068";
cent = "هللــه";
ones[1] = "@SYS26620";
ones[2] = "@SYS26621";
ones[3] = "@SYS26622";
ones[4] = "@SYS26626";
ones[5] = "@SYS26627";
ones[6] = "@SYS26628";
ones[7] = "@SYS26629";
ones[8] = "@SYS26630";
ones[9] = "@SYS26631";
ones[10] = "@SYS26632";
ones[11] = "@SYS26633";
ones[12] = "@SYS26634";
ones[13] = "@SYS26635";
ones[14] = "@SYS26636";
ones[15] = "@SYS26637";
ones[16] = "@SYS26638";
ones[17] = "@SYS26639";
ones[18] = "@SYS26640";
ones[19] = "@SYS26641";
tenths[1] = 'Not used';
tenths[2] = "@SYS26643";
tenths[3] = "@SYS26644";
tenths[4] = "@SYS26645";
tenths[5] = "@SYS26646";
tenths[6] = "@SYS26647";
tenths[7] = "@SYS26648";
tenths[8] = "@SYS26649";
tenths[9] = "@SYS26650";
hundreds = "@SYS26651";
thousands = "@SYS26652";
millions = "@SYS26653";
billions = "@SYS26654";
trillions = "@SYS101697";
if(test == 0)
{
returntxt = zero;
}
else
{
test = checkPower(test, 1000000000000);
test = checkPower(test, 1000000000);
test = checkPower(test, 1000000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
}
if(returntxt && test)
{
returntxt = returntxt + and + doubleDigit2ARTxt(real2int(test));
}
else
{
returntxt = returntxt + ' ' + doubleDigit2ARTxt(real2int(test));
}
if(numOfPennies)
{
//Removing the stars and addin the pound and cent wording to fullfil the Egyptian requierment
returntxt = ' فقط ' + returntxt + ' ' + comma + ' ' + and + doubleDigit2ARTxt(numOfPennies,true) + ' ' + cent + ' لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + doubleDigit2ARTxt(numOfPennies,true);
}
else
{
//Removing the stars and the zeros if no cents to fullfil the Egyptian requierment
returntxt = ' فقط ' + returntxt + ' ' + comma + ' لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + zero + ' ' + zero;
}
return returntxt;
}
public static Description numToTxt_En(real _amount, str currency)
{
real decimals, WordReal;
int intNum;
str 250 word, decWord, wholeWord;
int repPos, repPos1, repPoswhole;
word = Global::numeralsToTxt_EN(_amount);
repPos = strscan(word, ' and', 1, strlen(word));
intNum = _amount;
decimals = _amount - intNum;
WordReal = _amount - decimals;
str Curr, cent;
if(currency =='EURO')
{
Curr = "Euro";
cent = 'Cents';
}
else if(currency =='$' || currency=="USD")
{
Curr = "Dollars";
cent = 'Cents';
}
else if(currency =='SAR')
{
Curr = "Saudi Riyals";
cent = 'Halalah';
}
if (decimals == 0.00)
{
wholeWord = num2str(WordReal,0,0,0,0);
wholeWord = Global::numeralsToTxt_EN(str2num(wholeWord));
wholeWord = strdel(wholeWord, 1, 4);
repPoswhole = strscan(wholeWord,' and', 1, strlen(wholeWord));
wholeWord = substr(wholeWord, 1, repPoswhole-1);
word = strfmt("%1 %2 only",wholeWord,Curr);
}
else
{
decWord = substr(num2str(decimals, 0, 2, 1, 1), 3, 2);
// Info ("test str: " +(num2str(decimals, 0, 2, 1, 1)));
wholeWord = num2str(WordReal,0,0,0,0);
decWord = Global::numeralsToTxt_EN(str2num(decWord));
wholeWord = Global::numeralsToTxt_EN(str2num(wholeWord));
decWord = strdel(decWord, 1, 4);
wholeWord = strdel(wholeWord, 1, 4);
repPos1 = strscan(decWord, 'and', 1, strlen(decWord));
repPoswhole = strscan(wholeWord, ' and', 1, strlen(wholeWord));
decWord = substr(decWord, 1, repPos1-1);
wholeWord = substr(wholeWord, 1, repPoswhole-1);
word = strfmt("%1 %2 and %3 %4 only",wholeWord,Curr,decWord, cent);
}
return word;
}
public static TempStr numToTxt_AR(real _num,str _currency)
{
real numOfPennies = decround(frac(_num), 2);
real test = _num - frac(_num);
str zero;
str comma;
str and;
str cent;
int numOfTenths;
str 20 ones[19], tenths[9], hundreds, thousands, millions, billions, trillions;
int64 temp;
str 200 returntxt;
real modOperator(real a1, real a2)
{
int tmpi;
real tmp1, tmp2;
tmp1 = a1 / a2;
tmpi = real2int(tmp1);
tmp2 = tmpi;
return (tmp1 - tmp2)*a2;
}
str doubleDigit2ARTxt(real doubledigit,boolean _pennies = false)
{
str txt;
int firstDigit;
real tempdigit;
if(_pennies)
{
firstDigit = doubledigit * 10;
doubledigit = doubledigit * 100;
if(!firstDigit)
{
doubledigit = doubledigit mod 10;
//txt = zero + " " + ones[doubledigit];
txt = ones[doubledigit];
return txt;
}
}
tempdigit = doubledigit;
if (tempdigit >= 20)
{
tempdigit = tempdigit div 10;
txt = tenths[tempdigit];
doubledigit = doubledigit mod 10;
}
if (doubledigit >= 1)
{
txt = txt ? (ones[doubledigit] + and + txt) : ones[doubledigit];
}
return txt;
}
real checkPower(real _test,int64 _power)
{
int64 numOfPower;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
if(temp > 9)// The validation was previously on 2
{
returntxt = returntxt ? (returntxt + and + ones[temp] + ' ' + hundreds) :(returntxt + ' ' + ones[temp] + ' ' + hundreds);
}
else
{
switch(temp)
{
Case 1:
returntxt = returntxt ? (returntxt + and + hundreds) : (returntxt + ' ' + hundreds);
break;
Case 2:
// TO DO need to insert a label for two hundred in Arabic
returntxt = returntxt ? (returntxt + and + "مائتين") : returntxt + ' ' + "مائتين";
break;
Case 3:
// TO DO need to insert a label for three hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثلاثمائة") : returntxt + ' ' + 'ثلاثمائة';
break;
Case 4:
// TO DO need to insert a label for four hundred in Arabic
returntxt = returntxt ? (returntxt + and + "اربعمائة") : returntxt + ' ' + "اربعمائة";
break;
Case 5:
// TO DO need to insert a label for five hundred in Arabic
returntxt = returntxt ? (returntxt + and + "خمسمائة") : returntxt + ' ' + "خمسمائة";
break;
Case 6:
// TO DO need to insert a label for six hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ستمائة") : returntxt + ' ' + "ستمائة";
break;
Case 7:
// TO DO need to insert a label for seven hundred in Arabic
returntxt = returntxt ? (returntxt + and + "سبعمائة") : returntxt + ' ' + "سبعمائة";
break;
Case 8:
// TO DO need to insert a label for eight hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثمانمائة") : returntxt + ' ' + "ثمانمائة";
break;
Case 9:
// TO DO need to insert a label for nine hundred in Arabic
returntxt = returntxt ? (returntxt + and + "تسعمائة") : returntxt + ' ' + "تسعمائة";
break;
}
}
numOfPower = numOfPower mod 100;
}
if(numOfPower > 2 && _power > 100)
{
returntxt = returntxt ? (returntxt + and + doubleDigit2ARTxt(real2int(numOfPower))) : (returntxt + ' ' + doubleDigit2ARTxt(real2int(numOfPower)));
}
else
{
if(returntxt && numOfPower)
{
returntxt = returntxt + and + ' ';
}
}
switch(_power)
{
case 1000000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two trillions in Arabic
returntxt = returntxt + "تريليونين ";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + trillions) : (returntxt + ' ' + "تريليونات");
}
_test = modOperator(_test, 1000000000000.00);
break;
}
case 1000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two billions in Arabic
returntxt = returntxt + "مليارين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + billions) : (returntxt + ' ' + "مليارات");
}
_test = modOperator(_test, 1000000000);
break;
}
case 1000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Millions in Arabic
returntxt = returntxt + "مليونين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + millions) : (returntxt + ' ' + "ملايين");
}
_test = modOperator(_test, 1000000);
break;
}
case 1000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Thousands' in Arabic
returntxt = returntxt + "ألفين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + thousands) : (returntxt + ' ' + "الاف");
}
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
switch (numOfPower)
{
case 2:
returntxt = returntxt + "مائتين";
break;
case 3:
returntxt = returntxt +"ثلاثمائة";
break;
case 4:
returntxt = returntxt + "اربعمائة";
break;
case 5:
returntxt = returntxt + "خمسمائة";
break;
case 6:
returntxt = returntxt + "ستمائة";
break;
case 7:
returntxt = returntxt + "سبعمائة";
break;
case 8:
returntxt = returntxt + "ثمانمائة";
break;
case 9:
returntxt = returntxt + "تسعمائة";
break;
default:
returntxt = returntxt + ' ' + hundreds;
}
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
infolog.language("AR");
and = ' ' + "@SYS5534" + ' ';
if(_currency =='EURO')
{
comma = "يورو";
cent = 'سنت';
}
else if(_currency =='USD')
{
comma = "دولار";
cent = 'سنت';
}
else if(_currency =='KWD')
{
comma = "دينار كويتي";
cent = "فلس";
}
else if(_currency =='BHD')
{
comma = "دينار بحريني";
cent = "فلس";
}
else if(_currency =='SAR')
{
comma = "ريـال";
cent = "هللــه";
}
zero = "@SYS2068";
ones[1] = "@SYS26620";
ones[2] = "@SYS26621";
ones[3] = "@SYS26622";
ones[4] = "@SYS26626";
ones[5] = "@SYS26627";
ones[6] = "@SYS26628";
ones[7] = "@SYS26629";
ones[8] = "@SYS26630";
ones[9] = "@SYS26631";
ones[10] = "@SYS26632";
ones[11] = "@SYS26633";
ones[12] = "@SYS26634";
ones[13] = "@SYS26635";
ones[14] = "@SYS26636";
ones[15] = "@SYS26637";
ones[16] = "@SYS26638";
ones[17] = "@SYS26639";
ones[18] = "@SYS26640";
ones[19] = "@SYS26641";
tenths[1] = 'Not used';
tenths[2] = "@SYS26643";
tenths[3] = "@SYS26644";
tenths[4] = "@SYS26645";
tenths[5] = "@SYS26646";
tenths[6] = "@SYS26647";
tenths[7] = "@SYS26648";
tenths[8] = "@SYS26649";
tenths[9] = "@SYS26650";
hundreds = "@SYS26651";
thousands = "@SYS26652";
millions = "@SYS26653";
billions = "@SYS26654";
trillions = "@SYS101697";
if(test == 0)
{
returntxt = zero;
}
else
{
test = checkPower(test, 1000000000000);
test = checkPower(test, 1000000000);
test = checkPower(test, 1000000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
}
if(returntxt && test)
{
returntxt = returntxt + and + doubleDigit2ARTxt(real2int(test));
}
else
{
returntxt = returntxt + ' ' + doubleDigit2ARTxt(real2int(test));
}
if(numOfPennies)
{
//Removing the stars and addin the pound and cent wording to fullfil the Egyptian requierment
returntxt = ' فقط ' + returntxt + ' ' + comma + ' ' + and + doubleDigit2ARTxt(numOfPennies,true) + ' ' + cent + ' لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + doubleDigit2ARTxt(numOfPennies,true);
}
else
{
//Removing the stars and the zeros if no cents to fullfil the Egyptian requierment
returntxt = ' فقط ' + returntxt + ' ' + comma + ' لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + zero + ' ' + zero;
}
return returntxt;
}
}