AX / D365FO – Reserve and Remove reservation for an Item in X++

Reserve:

static void A_reserveItem(Args _args)
{
InventTrans             inventTrans;
InventTransOrigin       inventTransOrigin;
InventMovement          inventMovement;
InventUpd_Reservation   inventUpd_Reservation ;

// Reserve an item
select inventTrans
where  inventTrans.ItemId                      == “0900270G31115”
&&  inventTrans.StatusReceipt               == StatusReceipt::None
&&  inventTrans.StatusIssue                 == StatusIssue::OnOrder
exists join inventTransOrigin
where   inventTransOrigin.RecId            == inventTrans.InventTransOrigin;

if(inventTrans.RecId)

{
Inventmovement = inventTrans.inventmovement(true);
inventUpd_Reservation = InventUpd_Reservation::newInventDim(inventmovement,inventTrans.inventDim(),inventTrans.Qty, false);
inventUpd_Reservation.updatenow();
}

info(‘done’);
}

Remove reservation:

static void A_RemoveReserveItem(Args _args)
{
InventTrans             inventTrans;
InventTransOrigin       inventTransOrigin;
InventMovement          inventMovement;
InventUpd_Reservation   inventUpd_Reservation ;

// Remove reservations and markings on a reserved salesorder
while select inventTrans
where  inventTrans.ItemId                      == “0900270G31115”
&&  inventTrans.StatusReceipt               == StatusReceipt::None
&& (inventTrans.StatusIssue                 == StatusIssue::ReservPhysical
||  inventTrans.StatusIssue                 == StatusIssue::ReservOrdered)
exists join inventTransOrigin
where   inventTransOrigin.RecId            == inventTrans.InventTransOrigin
{

if (inventTrans.MarkingRefInventTransOrigin)
{
InventTransOrigin::deleteMarking(inventTrans.MarkingRefInventTransOrigin, inventTrans.InventTransOrigin, -inventTrans.Qty, true);
InventTransOrigin::deleteMarking(inventTrans.InventTransOrigin, inventTrans.MarkingRefInventTransOrigin, inventTrans.Qty, true);
}
if (inventTrans.StatusIssue == StatusIssue::ReservPhysical || inventTrans.StatusIssue == StatusIssue::ReservOrdered)
{
Inventmovement = inventTrans.inventmovement(true);
inventUpd_Reservation = InventUpd_Reservation::newInventDim(inventmovement,inventTrans.inventDim(), -1 * inventTrans.Qty, false);
inventUpd_Reservation.updatenow();
}
}
info(‘Done’);
}

Leave a comment