Рабочий код. Суть джоба: резервация заказа (SalesLine) на складе 'KFG' с приоритетом в локейшене 'SQUARE'.
X++:
if (salesLine && reserveQty)
{
inventMovement = InventMovement::construct(salesLine);
if (reserveQty)
{
//inventDim_KFG_SQUARE.InventSiteId = 'KAB';
inventDim_KFG_SQUARE.InventLocationId = 'KFG';
inventDim_KFG_SQUARE.wMSLocationId = 'SQUARE';
inventDim_KFG_SQUARE = InventDim::findDim(inventDim_KFG_SQUARE);
//inventDim_KFG.InventSiteId = 'KAB';
inventDim_KFG.InventLocationId = 'KFG';
inventDim_KFG = InventDim::findDim(inventDim_KFG);
inventDimParm.initFromInventDim(inventDim_KFG_SQUARE);
qtyOnhand = InventOnHand::newParameters(salesLine.ItemId, inventDim_KFG_SQUARE, inventDimParm).availPhysical();
if (qtyOnhand)
{
reserveNow = qtyOnhand >= reserveQty ? reserveQty : qtyOnhand;
reserveQty -= reserveNow;
if(inventMovement)
{
InventUpd_Reservation::updateReserveFromForm(salesLine, inventDim_KFG_SQUARE, inventDimParm, reserveNow);
}
}
if (reserveQty)
{
inventDimParm.initFromInventDim(inventDim_KFG);
qtyOnhand = InventOnHand::newParameters(salesLine.ItemId, inventDim_KFG, inventDimParm).availPhysical();
if (qtyOnhand)
{
reserveNow = qtyOnhand >= reserveQty ? reserveQty : qtyOnhand;
reserveQty -= reserveNow;
InventUpd_Reservation::updateReserveFromForm(salesLine, inventDim_KFG, inventDimParm, reserveNow);
}
}
if (reserveQty)
{
warning(strfmt('Qty \'%1\' not reserved for item \'%2\' Sales Order \'%3\'.', reserveQty, salesLine.itemId, salesLine.SalesId));
}
else
{
info(strfmt('Reserved %1.', reserveStock.InventTransId));
reserveStock.Reserved = NoYes::Yes;
reserveStock.doUpdate();
}
}
}