/// This method unreserves SalesLine record.
/// The SalesLine record to unreserve.
public void unReserveInventory(SalesLine _salesLine)
{
InventTrans inventTrans;
InventTransOrigin inventTransOrigin;
InventMovement inventMovement;
InventUpd_Reservation inventUpd_Reservation;
SalesLine salesLine;
// Remove reservations and markings on a reserved salesorder
while select inventTrans
where inventTrans.StatusReceipt == StatusReceipt::None
&& (inventTrans.StatusIssue == StatusIssue::ReservPhysical
|| inventTrans.StatusIssue == StatusIssue::ReservOrdered)
exists join inventTransOrigin
where inventTransOrigin.RecId == inventTrans.InventTransOrigin
exists join salesLine
where salesLine.InventTransId == inventTransOrigin.InventTransId
&& SalesLine.RecId == _salesLine.RecId
{
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();
}
}
}
/// This method reserves SalesLine record with specific InventBatchId.
///The SalesLine record to reserve.
///Quantity to reserve.
///InventBatchId to reserve against
public void reservesalesLineByBatchId(SalesLine _salesLine,
InventQty _reserveQuantity,
InventBatchId _inventBatchId)
{
InventUpd_Reservation reservation;
InventMovement movement;
InventDim inventDimSalesLine, inventDim;
InventSum inventsum;
movement = InventMovement::construct(_salesLine);
if (_reserveQuantity > 0)
{
select inventdim
where inventdim.inventSiteId == _salesLine.inventDim().InventLocationId &&
inventdim.inventBatchId == _inventBatchId
exists join inventsum
where inventdim.inventdimId == inventsum.inventdimId &&
inventsum.itemId == _salesLine.itemId &&
inventsum.availPhysical >= _reservedQuantity;
reservation = InventUpd_Reservation::newInventDim(movement,
inventDim,
-_reserveQuantity,
false);
reservation.updateNow();
}
}
André Arnaud de Cal...
294,349
Super User 2025 Season 1
Martin Dráb
233,029
Most Valuable Professional
nmaenpaa
101,158
Moderator