Transfer Orders Auto Posting - Picking List, Ship and Received
To Post a TO receipt list in code, you can do the following:
void TO_PostPickList(InventTransferId transferId)
{
//will post the pick list.
InventTransferParmTable itpt;
InventTransferUpdPick itup;
;
//make sure we haven't already posted the pick list
//if the TO is changed, this will return a false positive and won't re-post the pick list
//TODO beef up the check on whether or not the Pick List should be postsed
select * from itpt where itpt.TransferId == transferId &&
itpt.UpdateType == InventTransferUpdateType::PickingList;
if(itpt.RecId == 0)
{
itpt.clear();
itpt.initParmDefault();
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::PickingList;
itpt.PrintTransferPickingList = NoYes::No;
itpt.PickUpdateQty = InventTransferPickUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 0; // See note below on how to compute this.
itup = InventTransferUpdPick::newParmBuffer(itpt);
itup.run();
}
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
________________
To Post a TO receipt list in code, you can do the following:
void TO_PostReceipt(inventTransferId transferId)
{
InventTransferParmTable itpt;
InventTransferUpdReceive itur;
;
itpt.clear();
itpt.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::Receive;
itpt.PrintTransferReceipt = NoYes::No;
//itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::Registered;
itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 245; // See note below on how to compute this.
itur = InventTransferUpdReceive::newParmBuffer(itpt);
itur.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
____________________
To Post a TO Ship in code, you can do the following:
void TO_PostShip(inventTransferId transferId)
{
InventTransferParmTable inventTransferParmTable;
InventTransferUpdShip inventTransferUpdShip;
;
inventTransferParmTable.clear();
inventTransferParmTable.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
inventTransferParmTable.ParmId = RunBaseMultiParm::getSysParmId();
inventTransferParmTable.TransferId = transferId;
inventTransferParmTable.UpdateType = InventTransferUpdateType::Shipment;
inventTransferParmTable.PrintTransferReceipt = NoYes::No;
inventTransferParmTable.ShipUpdateQty = InventTransferShipUpdateQty::All;
inventTransferParmTable.EditLines = NoYes::Yes;
inventTransferParmTable.ExplodeLines = NoYes::No;
inventTransferParmTable.InventDimFixedReceiveList = 0;// See note below on how to compute this
inventTransferUpdShip = InventTransferUpdShip::newParmBuffer(inventTransferParmTable);
inventTransferUpdShip.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
This blog is for Dynamics AX (AXAPTA) Developers,this will help you for your development issues. This site contains some Microsoft Dynamics AX X++ Codes for use in your day to day use.
16 December 2011
Transfer Orders Post Picking List, Ship and Received in Code / auto post TransferOrder
Transfer Orders Auto Posting - Picking List, Ship and Received
To Post a TO receipt list in code, you can do the following:
void TO_PostReceipt(inventTransferId transferId)
{
InventTransferParmTable itpt;
InventTransferUpdReceive itur;
;
itpt.clear();
itpt.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::Receive;
itpt.PrintTransferReceipt = NoYes::No;
//itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::Registered;
itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 245; // See note below on how to compute this.
itur = InventTransferUpdReceive::newParmBuffer(itpt);
itur.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
_____________
To Post a TO receipt list in code, you can do the following:
void TO_PostReceipt(inventTransferId transferId)
{
InventTransferParmTable itpt;
InventTransferUpdReceive itur;
;
itpt.clear();
itpt.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::Receive;
itpt.PrintTransferReceipt = NoYes::No;
//itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::Registered;
itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 245; // See note below on how to compute this.
itur = InventTransferUpdReceive::newParmBuffer(itpt);
itur.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
____________________
To Post a TO Ship in code, you can do the following:
void TO_PostShip(inventTransferId transferId)
{
InventTransferParmTable inventTransferParmTable;
InventTransferUpdShip inventTransferUpdShip;
;
inventTransferParmTable.clear();
inventTransferParmTable.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
inventTransferParmTable.ParmId = RunBaseMultiParm::getSysParmId();
inventTransferParmTable.TransferId = inventTransferTable.TransferId;//transferId;
inventTransferParmTable.UpdateType = InventTransferUpdateType::Shipment;
inventTransferParmTable.PrintTransferReceipt = NoYes::No;
inventTransferParmTable.ShipUpdateQty = InventTransferShipUpdateQty::All;
inventTransferParmTable.EditLines = NoYes::Yes;
inventTransferParmTable.ExplodeLines = NoYes::No;
inventTransferParmTable.InventDimFixedReceiveList = 0; // See note below on how to compute this.
inventTransferUpdShip = InventTransferUpdShip::newParmBuffer(inventTransferParmTable);
inventTransferUpdShip.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
To Post a TO receipt list in code, you can do the following:
void TO_PostReceipt(inventTransferId transferId)
{
InventTransferParmTable itpt;
InventTransferUpdReceive itur;
;
itpt.clear();
itpt.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::Receive;
itpt.PrintTransferReceipt = NoYes::No;
//itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::Registered;
itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 245; // See note below on how to compute this.
itur = InventTransferUpdReceive::newParmBuffer(itpt);
itur.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
_____________
To Post a TO receipt list in code, you can do the following:
void TO_PostReceipt(inventTransferId transferId)
{
InventTransferParmTable itpt;
InventTransferUpdReceive itur;
;
itpt.clear();
itpt.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
itpt.ParmId = RunBaseMultiParm::getSysParmId();
itpt.TransferId = transferId;
itpt.UpdateType = InventTransferUpdateType::Receive;
itpt.PrintTransferReceipt = NoYes::No;
//itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::Registered;
itpt.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
itpt.EditLines = NoYes::Yes;
itpt.ExplodeLines = NoYes::Yes;
itpt.InventDimFixedReceiveList = 245; // See note below on how to compute this.
itur = InventTransferUpdReceive::newParmBuffer(itpt);
itur.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
____________________
To Post a TO Ship in code, you can do the following:
void TO_PostShip(inventTransferId transferId)
{
InventTransferParmTable inventTransferParmTable;
InventTransferUpdShip inventTransferUpdShip;
;
inventTransferParmTable.clear();
inventTransferParmTable.initParmDefault();
//TODO add check to make sure this is only posted if it needs to be posted
inventTransferParmTable.ParmId = RunBaseMultiParm::getSysParmId();
inventTransferParmTable.TransferId = inventTransferTable.TransferId;//transferId;
inventTransferParmTable.UpdateType = InventTransferUpdateType::Shipment;
inventTransferParmTable.PrintTransferReceipt = NoYes::No;
inventTransferParmTable.ShipUpdateQty = InventTransferShipUpdateQty::All;
inventTransferParmTable.EditLines = NoYes::Yes;
inventTransferParmTable.ExplodeLines = NoYes::No;
inventTransferParmTable.InventDimFixedReceiveList = 0; // See note below on how to compute this.
inventTransferUpdShip = InventTransferUpdShip::newParmBuffer(inventTransferParmTable);
inventTransferUpdShip.run();
/*
#DEFINE.INVENTLOCATIONID_IDX(0)
#DEFINE.BATCH_IDX(1)
#DEFINE.LOCATION_IDX(2)
#DEFINE.PALLET_IDX(3)
#DEFINE.SERIALID_IDX(4)
#DEFINE.CONFIGID_IDX(5)
#DEFINE.INVENTSIZEID_IDX(6)
#DEFINE.INVENTCOLORID_IDX(7)
binary: 11110101
decimal: 245
*/
}
06 December 2011
Query Filter using query
1.To filter the Record based on the Enumvalues
Reference Form is : HRCCompLevel
class FormRun extends ObjectRun
{
QueryBuildRange qR;
HRCCompType compType;
}
_____
DS->HRCCompLevel->
public void init()
{
super();
//qR = SysQuery::findOrCreateRange(HRCCompLevel_ds.queryBuildDataSource(), fieldnum(HRCCompLevel, Type));
qR = SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum(HRCCompLevel)), fieldnum(HRCCompLevel, Type));
qR.status(RangeStatus::Locked);
}
________
DS->HRCCompLevel->
public void executeQuery()
{
qR.value(queryValue(queryValue(compType)));
qR.value('*');// this is to get all records
super();
}
---------------------
public int selectionChange()
{
int ret;
ret = super();
transferStatus = this.selection();
InventTransferTable_ds.executeQuery();
return ret;
}
_________________________________________________________________
_________________________________________________________________
2.
public void init()
{
super();
qR = SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum
(InventTransferTable)), fieldnum(InventTransferTable, TransferStatus));
}
________________
public void executeQuery()
{
str queryExpression;
;
queryExpression = '(' +
queryValue(RBOInventTransferStatus::Created) + '.' +
Enum2str(RBOInventTransferStatus::Received) + '.'+
Enum2str(RBOInventTransferStatus::Shipped) + ')';
if(transferStatus == RBOInventTransferStatus::All)
{
qR.value('*');
}
else
qR.value(queryValue(queryValue(transferStatus)));
super();
}
Reference Form is : HRCCompLevel
class FormRun extends ObjectRun
{
QueryBuildRange qR;
HRCCompType compType;
}
_____
DS->HRCCompLevel->
public void init()
{
super();
//qR = SysQuery::findOrCreateRange(HRCCompLevel_ds.queryBuildDataSource(), fieldnum(HRCCompLevel, Type));
qR = SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum(HRCCompLevel)), fieldnum(HRCCompLevel, Type));
qR.status(RangeStatus::Locked);
}
________
DS->HRCCompLevel->
public void executeQuery()
{
qR.value(queryValue(queryValue(compType)));
qR.value('*');// this is to get all records
super();
}
---------------------
public int selectionChange()
{
int ret;
ret = super();
transferStatus = this.selection();
InventTransferTable_ds.executeQuery();
return ret;
}
_________________________________________________________________
_________________________________________________________________
2.
public void init()
{
super();
qR = SysQuery::findOrCreateRange(this.query().dataSourceTable(tablenum
(InventTransferTable)), fieldnum(InventTransferTable, TransferStatus));
}
________________
public void executeQuery()
{
str queryExpression;
;
queryExpression = '(' +
queryValue(RBOInventTransferStatus::Created) + '.' +
Enum2str(RBOInventTransferStatus::Received) + '.'+
Enum2str(RBOInventTransferStatus::Shipped) + ')';
if(transferStatus == RBOInventTransferStatus::All)
{
qR.value('*');
}
else
qR.value(queryValue(queryValue(transferStatus)));
super();
}
25 November 2011
How to create a project with specific layer objects / To get layer wise modifications
Step 1: Create a new project.
You can rename your project as desired, we'll call it Project_USR_Layer for now. Then open the newly created project
Step 2: Choose Advanced Filter/Sort from the toolbar.
If you are into keyboard short-cuts, you can use Ctrl-F3 for this as well.
A new dialog pops up
I like my objects grouped in the project as they are grouped in the AOT, so I've chosen Groupings - AOT.
Step 3: Select the required objects.
Use the Select button on the dialog to select the objects you require for your project.
We wanna select all AOT objects from a specific layer, so we'll use the UtilLevel field in the selection criteria
From the screenshot you can see that all objects from the USR layer are selected. If desired, you can limit the type of AOT objects for your project as well, by using the recordType field.
Confirm twice and the objects are added to your project. This may take some time, so be patient :-)
Similar challenge:
You can use the same method for selecting AOT objects modified/created by a specific programmer. Just set different selecting criteria in your query.
You can rename your project as desired, we'll call it Project_USR_Layer for now. Then open the newly created project
Step 2: Choose Advanced Filter/Sort from the toolbar.
If you are into keyboard short-cuts, you can use Ctrl-F3 for this as well.
A new dialog pops up
I like my objects grouped in the project as they are grouped in the AOT, so I've chosen Groupings - AOT.
Step 3: Select the required objects.
Use the Select button on the dialog to select the objects you require for your project.
We wanna select all AOT objects from a specific layer, so we'll use the UtilLevel field in the selection criteria
From the screenshot you can see that all objects from the USR layer are selected. If desired, you can limit the type of AOT objects for your project as well, by using the recordType field.
Confirm twice and the objects are added to your project. This may take some time, so be patient :-)
Similar challenge:
You can use the same method for selecting AOT objects modified/created by a specific programmer. Just set different selecting criteria in your query.
02 November 2011
Create & Post Inventory Journal in AX 2009 / Inventory movement journal code
Create & Post Inventory Journal in AX 2009
Following is job which will create and post the Inventory Journal in ax 2009 :-
static void createMovJournal(Args _args)
{
InventJournalTable journalTable;
InventJournalTrans journalTrans;
InventJournalTableData journalTableData;
InventJournalTransData journalTransData;
InventTable inventTable;
InventDim inventDim;
Counter cnt;
InventJournalCheckPost journalCheckPost = new InventJournalCheckPost();
DialogButton dbtn;
;
journalTableData = JournalTableData::newTable(journalTable);
journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);
// Init JournalTable
journalTable.clear();
journalTable.JournalId = journalTableData.nextJournalId();
journalTable.JournalType = InventJournalType::Movement;
journalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);
journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
// Init JournalTrans
select firstonly inventTable;
for(cnt=1;cnt<10;cnt++)
{
journalTrans.clear();
journalTransData.initFromJournalTable();
journalTrans.TransDate = systemdateget() + 1 div 2;
journalTrans.ItemId ='1103'; //inventTable.ItemId;
journalTrans.Qty = 100;
journalTrans.CostAmount = 100;
journalTrans.LedgerAccountIdOffset='110170';
// Dimension details
inventDim.InventLocationId = '11';
journalTrans.InventDimId ='00000061_069'; //InventDim::findOrCreate(inventDim).inventDimId;
journalTransData.create();
}
journalTable.insert();
// Call the static method to post the journal
if(InventJournalCheckPost::newPostJournal(journalTable).validate())
if(box::yesNo("Do you want to Post Now?",DialogButton::No)==DialogButton::Yes)
{
InventJournalCheckPost::newPostJournal(journalTable).run();
}
else
{
box::info("Not Posted");
}
info("done");
}
Following is job which will create and post the Inventory Journal in ax 2009 :-
static void createMovJournal(Args _args)
{
InventJournalTable journalTable;
InventJournalTrans journalTrans;
InventJournalTableData journalTableData;
InventJournalTransData journalTransData;
InventTable inventTable;
InventDim inventDim;
Counter cnt;
InventJournalCheckPost journalCheckPost = new InventJournalCheckPost();
DialogButton dbtn;
;
journalTableData = JournalTableData::newTable(journalTable);
journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans,journalTableData);
// Init JournalTable
journalTable.clear();
journalTable.JournalId = journalTableData.nextJournalId();
journalTable.JournalType = InventJournalType::Movement;
journalTable.JournalNameId = journalTableData.journalStatic().standardJournalNameId(journalTable.JournalType);
journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));
// Init JournalTrans
select firstonly inventTable;
for(cnt=1;cnt<10;cnt++)
{
journalTrans.clear();
journalTransData.initFromJournalTable();
journalTrans.TransDate = systemdateget() + 1 div 2;
journalTrans.ItemId ='1103'; //inventTable.ItemId;
journalTrans.Qty = 100;
journalTrans.CostAmount = 100;
journalTrans.LedgerAccountIdOffset='110170';
// Dimension details
inventDim.InventLocationId = '11';
journalTrans.InventDimId ='00000061_069'; //InventDim::findOrCreate(inventDim).inventDimId;
journalTransData.create();
}
journalTable.insert();
// Call the static method to post the journal
if(InventJournalCheckPost::newPostJournal(journalTable).validate())
if(box::yesNo("Do you want to Post Now?",DialogButton::No)==DialogButton::Yes)
{
InventJournalCheckPost::newPostJournal(journalTable).run();
}
else
{
box::info("Not Posted");
}
info("done");
}
01 November 2011
Changing numerals to text in Indian Format amount in words India
Changing numerals to text in Indian Format
static TempStr numerals2Txt_IN(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, lakhs, crores;
int64 temp;
str 200 returntxt;
str 200 pennytxt;
int penny;
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;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
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 10000000 :
{
returntxt = returntxt + ' ' + Crores;
_test = modOperator(_test, 10000000);
break;
}
case 100000 :
{
returntxt = returntxt + ' ' + lakhs;
_test = modOperator(_test, 100000);
break;
}
case 1000 :
{
returntxt = returntxt + ' ' + thousands;
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
returntxt = returntxt + ' ' + hundreds;
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
#Define.text_1('One')
#Define.text_2('Two')
#Define.text_3('Three')
#Define.text_4('Four')
#Define.text_5('Five')
#Define.text_6('Six')
#Define.text_7('Seven')
#Define.text_8('Eight')
#Define.text_9('Nine')
#Define.text_10('Ten')
#Define.text_11('Eleven')
#Define.text_12('Twelve')
#Define.text_13('Thirteen')
#Define.text_14('Fourteen')
#Define.text_15('Fifteen')
#Define.text_16('Sixteen')
#Define.text_17('Seventeen')
#Define.text_18('Eighteen')
#Define.text_19('Nineteen')
#Define.text_20('Twenty')
#Define.text_30('Thirty')
#Define.text_40('Forty')
#Define.text_50('Fifty')
#Define.text_60('Sixty')
#Define.text_70('Seventy')
#Define.text_80('Eighty')
#Define.text_90('Ninety')
#Define.text_100('Hundred')
#Define.text_1000('Thousand')
#Define.text_100000('Lakh')
#Define.text_10000000('Crore')
#Define.text_and('Rupees and')
#Define.text_paise('Paise Only')
#Define.text_ruppe('Rupees Only')
ones[1] = #text_1;
ones[2] = #text_2;
ones[3] = #text_3;
ones[4] = #text_4;
ones[5] = #text_5;
ones[6] = #text_6;
ones[7] = #text_7;
ones[8] = #text_8;
ones[9] = #text_9;
ones[10] = #text_10;
ones[11] = #text_11;
ones[12] = #text_12;
ones[13] = #text_13;
ones[14] = #text_14;
ones[15] = #text_15;
ones[16] = #text_16;
ones[17] = #text_17;
ones[18] = #text_18;
ones[19] = #text_19;
tenths[1] = 'Not used';
tenths[2] = #text_20;
tenths[3] = #text_30;
tenths[4] = #text_40;
tenths[5] = #text_50;
tenths[6] = #text_60;
tenths[7] = #text_70;
tenths[8] = #text_80;
tenths[9] = #text_90;
hundreds = #text_100;
thousands = #text_1000;
lakhs = #text_100000;
crores = #text_10000000;
test = checkPower(test, 10000000);
test = checkPower(test, 100000);
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)
{
if (numOfPennies >= 20)
{
penny = numOfPennies div 10;
pennytxt = tenths[penny];
numOfPennies = numOfPennies mod 10;
}
if (numOfPennies >= 1)
{
pennytxt = pennytxt + ' ' + ones[numOfPennies];
}
returntxt = returntxt + ' ' + #text_and + ' ' + pennytxt + ' ' +#text_paise;
}
else
{
returntxt = returntxt + ' ' + #text_ruppe;
}
return returntxt;
}
static TempStr numerals2Txt_IN(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, lakhs, crores;
int64 temp;
str 200 returntxt;
str 200 pennytxt;
int penny;
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;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
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 10000000 :
{
returntxt = returntxt + ' ' + Crores;
_test = modOperator(_test, 10000000);
break;
}
case 100000 :
{
returntxt = returntxt + ' ' + lakhs;
_test = modOperator(_test, 100000);
break;
}
case 1000 :
{
returntxt = returntxt + ' ' + thousands;
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
returntxt = returntxt + ' ' + hundreds;
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
#Define.text_1('One')
#Define.text_2('Two')
#Define.text_3('Three')
#Define.text_4('Four')
#Define.text_5('Five')
#Define.text_6('Six')
#Define.text_7('Seven')
#Define.text_8('Eight')
#Define.text_9('Nine')
#Define.text_10('Ten')
#Define.text_11('Eleven')
#Define.text_12('Twelve')
#Define.text_13('Thirteen')
#Define.text_14('Fourteen')
#Define.text_15('Fifteen')
#Define.text_16('Sixteen')
#Define.text_17('Seventeen')
#Define.text_18('Eighteen')
#Define.text_19('Nineteen')
#Define.text_20('Twenty')
#Define.text_30('Thirty')
#Define.text_40('Forty')
#Define.text_50('Fifty')
#Define.text_60('Sixty')
#Define.text_70('Seventy')
#Define.text_80('Eighty')
#Define.text_90('Ninety')
#Define.text_100('Hundred')
#Define.text_1000('Thousand')
#Define.text_100000('Lakh')
#Define.text_10000000('Crore')
#Define.text_and('Rupees and')
#Define.text_paise('Paise Only')
#Define.text_ruppe('Rupees Only')
ones[1] = #text_1;
ones[2] = #text_2;
ones[3] = #text_3;
ones[4] = #text_4;
ones[5] = #text_5;
ones[6] = #text_6;
ones[7] = #text_7;
ones[8] = #text_8;
ones[9] = #text_9;
ones[10] = #text_10;
ones[11] = #text_11;
ones[12] = #text_12;
ones[13] = #text_13;
ones[14] = #text_14;
ones[15] = #text_15;
ones[16] = #text_16;
ones[17] = #text_17;
ones[18] = #text_18;
ones[19] = #text_19;
tenths[1] = 'Not used';
tenths[2] = #text_20;
tenths[3] = #text_30;
tenths[4] = #text_40;
tenths[5] = #text_50;
tenths[6] = #text_60;
tenths[7] = #text_70;
tenths[8] = #text_80;
tenths[9] = #text_90;
hundreds = #text_100;
thousands = #text_1000;
lakhs = #text_100000;
crores = #text_10000000;
test = checkPower(test, 10000000);
test = checkPower(test, 100000);
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)
{
if (numOfPennies >= 20)
{
penny = numOfPennies div 10;
pennytxt = tenths[penny];
numOfPennies = numOfPennies mod 10;
}
if (numOfPennies >= 1)
{
pennytxt = pennytxt + ' ' + ones[numOfPennies];
}
returntxt = returntxt + ' ' + #text_and + ' ' + pennytxt + ' ' +#text_paise;
}
else
{
returntxt = returntxt + ' ' + #text_ruppe;
}
return returntxt;
}
25 October 2011
Axapta Application file extensions
http://www.artofcreation.be/2009/10/27/application-file-extensions/
Subscribe to:
Posts (Atom)
Service class to get the selected record and deleted matching records and refresh the form data source in D365 F&O
[DataContractAttribute] class ABCUserProfilesBulkDeleteContract { UserId userId; [DataMemberAttribute('UserId')] pu...
-
Please click here to access Custom Workflow step by step process:
-
public InventQty onHandInventory(ItemId itemId, InventSiteId inventSiteId,InventLocationId inventLocation) { InventOnhand inventOnh...
-
1. In classDeclaration extend SrsReportDataProviderPreProcess instead of SrsReportDataProviderBase 2. Temp table properties should b...