AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2010, 02:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
Dynamics AX Sustained Engineering: Bank Checks do not display the correct numerals when using the Italian Language
Источник: http://blogs.technet.com/b/dynamicsa...-language.aspx
==============

Bank Checks do not display the correct numerals when using the Italian Language

Scenario:

If you print an Accounts Payable check using the Italian language the check numerals may print incorrectly.

Resolution:

To resolve this issue you can modify the Global class adding an Italian specific method to return the correct check printing.

1. In the AOT >> expand classes >> locate the Global Class.

2. Right Click the Global Class >> Choose New Method

3. Add the below code example which translates the Italian language

static TempStr numeralsToTxt_IT(real _num)

{

int numOfPennies = (decround(frac(_num), 2) * 100) mod 100;

real test = _num - frac(_num);



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;

}



real checkPower(real _test, int64 _power)

{

int64 numOfPower,numOfPowerOrig;



if (_test >= _power)

{

numOfPower = _test div _power;

numOfPowerOrig = numOfPower;



if (numOfPower == 1 && _power > 1000)

{

returntxt = returntxt + ' ' + substr("@SYS5437",0,2);

}



if (numOfPower >= 100)

{

temp = numOfPower div 100;

if(temp == 1 && _power >= 1000)

{

returntxt = returntxt + ' ' + hundreds;

}

else

{

returntxt = returntxt + ' ' + ones[temp] + ' ' + hundreds;

}



numOfPower = numOfPower mod 100;

}

if (numOfPower >= 20)

{

temp = numOfPower div 10;

returntxt = returntxt + ' ' + tenths[temp];

numOfPower = numOfPower mod 10;

}

if (numOfPower > 1)

{

returntxt = returntxt + ' ' + ones[numOfPower];

numOfPower = numOfPower mod 10;

}



switch(_power)

{

case 1000000000 :

{

returntxt = numOfPowerOrig == 1 ? returntxt + ' ' + billions : returntxt + ' ' + "miliardi";

_test = modOperator(_test, 1000000000);

break;

}

case 1000000 :

{

returntxt = numOfPowerOrig == 1 ? returntxt + ' ' + millions : returntxt + ' ' + "milioni" ;

_test = modOperator(_test, 1000000);

break;

}

case 1000 :

{

returntxt = numOfPowerOrig == 1 ? "mile" : returntxt + ' ' + thousands ;

_test = modOperator(_test, 1000);

break;

}

case 100 :

{

returntxt = returntxt + ' ' + hundreds;

_test = modOperator(_test, 100);

break;

}

}

}

return _test;

}







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";



test = checkPower(test, 1000000000);

test = checkPower(test, 1000000);

test = checkPower(test, 1000);

test = checkPower(test, 100);



if (test >= 20)

{

numOfTenths = test div 10;

returntxt = returntxt + ' ' + tenths[numofTenths];

numOfTenths = numOfTenths mod 10;

test = test mod 10;

}

if (test >= 1)

{

numOfTenths = real2int(test);

returntxt = returntxt + ' ' + ones[numOfTenths];

}



if (numOfPennies)

{

returntxt = '***' + returntxt + ' ' + "@SYS5534" + ' ' + num2str(numOfPennies,0,0,0,0) + '/100';

}

else

{

returntxt = '***' + returntxt + ' ' + "@SYS5534" + ' ' + '00/100';

}



return returntxt;

}



4. Add the below code in bold to the Classes\Global\numeralsToTxt

case 100 :

{

returntxt = returntxt + ' ' + hundreds;

_test = modOperator(_test, 100);

break;

}

}

}

return _test;

}

if(substr(xUserInfo::find().Language, 1, 2) !='it')

{

returntxt = Global::numeralsToTxt_IT(test);

return returntxt;

}



5. Save and Compile the code.




Источник: http://blogs.technet.com/b/dynamicsa...-language.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: Microsoft Dynamics AX 4.0 and AX 2009 are compatible with Microsoft Windows 7 and Microsoft Windows Server 2008 R2 Blog bot DAX Blogs 0 22.09.2009 04:06
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX Sustained Engineering: Dynamics AX 2009 Patching Blog bot DAX Blogs 0 08.10.2008 10:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:17.