To find stock On-Hand in AX through X++
static void
findOnHand(Args _args)
{
InventDim inventDim;
InventDimParm inventDimParm;
Itemid itemid;
InventOnHand inventOnHand = new InventOnHand();
;
// take a sample item for testing
itemid = "Item1";
// take a combination of dimension , against which you want to find the stock
inventDim.InventLocationId = "HYD";
//Set the flag for the selected dimensions as active.
inventDimParm.initFromInventDim(inventDim);
//initialize the inventonhand with item,dimension and dim paramter
inventOnHand.parmItemId(itemid);
inventOnHand.parmInventDim(inventDim);
inventOnHand.parmInventDimParm(inventDimParm);
// Retrieve the onhand info
info(strfmt("Available Physical: %1",
inventOnhand.availPhysical()));
info(strfmt("On order: %1",inventOnhand.onOrder()));
}
{
InventDim inventDim;
InventDimParm inventDimParm;
Itemid itemid;
InventOnHand inventOnHand = new InventOnHand();
;
// take a sample item for testing
itemid = "Item1";
// take a combination of dimension , against which you want to find the stock
inventDim.InventLocationId = "HYD";
//Set the flag for the selected dimensions as active.
inventDimParm.initFromInventDim(inventDim);
//initialize the inventonhand with item,dimension and dim paramter
inventOnHand.parmItemId(itemid);
inventOnHand.parmInventDim(inventDim);
inventOnHand.parmInventDimParm(inventDimParm);
// Retrieve the onhand info
info(strfmt("Available Physical: %1",
inventOnhand.availPhysical()));
info(strfmt("On order: %1",inventOnhand.onOrder()));
}
To find out stock in inventsum using code X++:
static void ItemOnhandSum(Args
_args)
{
InventSum inventsum;
Qty availableQty = 0;
;
select sum(PostedQty),
sum(Received),
sum(Deducted),
sum(Registered),
sum(Picked),
sum(ReservPhysical),
sum(Ordered),
sum(Arrived),
sum(ReservOrdered),
sum(OnOrder) from inventsum
where inventsum.ItemId == "KCYIWU001";
if (inventsum)
{
availableQty = inventsum.PostedQty
+ inventsum.Received
- inventsum.Deducted
+ inventsum.Registered
- inventSum.Picked
- inventSum.ReservPhysical
+ inventsum.Ordered
+ inventsum.Arrived
- inventsum.ReservOrdered
- inventsum.OnOrder;
}
info(strfmt('%1', availableQty));
}
To find on- hand Stock by date :
static void
findOnHand_ByDate(Args _args)
{
InventDim inventDim;
InventDimParm inventDimParm;
Itemid itemid;
InventOnHand inventOnHand = new
InventOnHand();
InventSumDateDim
inventSumDateDim;
TransDate transDate;
;
// take a sample item for
testing
itemid = "20 MM RMC";
transDate = 13\01\2010;
// take a combination of
dimension , against which you want to find the stock
inventDim.InventLocationId =
"GW";
//Set the flag for the selected
dimensions as active.
inventDimParm.initFromInventDim(inventDim);
//initialize the
inventSumDateDim with Date,item,dimension and dim paramter
inventSumDateDim =
InventSumDateDim::newParameters(transDate,
itemid,
inventDim,
inventDimParm);
// Retrieve the onhand info
info(strfmt("PostedQty:
%1",inventSumDateDim.postedQty()));
info(strfmt("DeductedQty:
%1",inventSumDateDim.deductedQty()));
info(strfmt("ReceivedQty:
%1",inventSumDateDim.receivedQty()));
}
Thanks Vishal :)
ReplyDeleteHi Vishal,
ReplyDeleteHow can i retrieve reserved qty??? I have checked the inventsumdatedim class but it doesnt have a reserved() method..
Please guide me on this
Hi Vishal,
ReplyDeleteI want to trigger an event on change in On hand Stock physical available, What is the right place to put the code for it?
Even I need to trigger an event on change in On hand Stock physical available? any suggestions????
ReplyDeleteYou can use the standard functionality for Alerts (https://technet.microsoft.com/en-us/library/aa499769.aspx). (Or) You can write a piece of code that will compare the current on hand stock with the previous one(Insert/Update).
DeleteExcellent article, thanks!
ReplyDeleteInformative blog. Thanks for sharing.
ReplyDeleteMicrosoft Dynamics AX Training
Thank you!
DeleteThank you... you help me so much! :)
ReplyDeleteYour welcome! Keep visiting for more interesting articles :)
Delete