Can you please suggest a way to register the return order line with
Disposition Codes 41, 51, and 61? Below is my code.
class BAS_inventoryRegistrationHelper
{
public static void inventoryRegistration(SalesId _salesId)
{
boolean result;
SalesLine salesReturnOrderRegisterLine;
SalesLine salesLine;
TmpInventTransWMS tmpInventTransWMS;
InventTransWMS_Register inventTransWMS_Register;
InventDim inventDim;
InventTrans inventTrans;
VendPackingSlipTrans vendPackingSlipTransLoc;
InventTransOrigin inventTransOrigin;
SalesReturnOrderLineRegister salesReturnOrderLineRegister;
while select salesReturnOrderRegisterLine
where salesReturnOrderRegisterLine.SalesId == _salesId
{
salesLine = BAS_inventoryRegistrationHelper::updateDispositionCode(salesReturnOrderRegisterLine.InventTransId);
inventTransWMS_Register = InventTransWMS_Register::newStandard(tmpInventTransWMS);
select firstonly inventTrans
where inventTrans.StatusReceipt == StatusReceipt::Ordered
exists join inventTransOrigin
where inventTransOrigin.RecId == inventTrans.InventTransOrigin
&& inventTransOrigin.InventTransId == salesLine.InventTransId
&& inventTransOrigin.ReferenceId == _salesId;
tmpInventTransWMS.clear();
tmpInventTransWMS.initFromInventTrans(inventTrans);
//tmpInventTransWMS.InventQty = salesReturnOrderRegisterLine.SalesQty;
tmpInventTransWMS.LineNum = salesLine.LineNum;
inventDim = salesLine.inventDim();
//inventDim.inventSerialId = salesReturnOrderRegisterLine.inventSerialId;
//inventDim.inventBatchId = salesReturnOrderRegisterLine.inventBatchId;
tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
tmpInventTransWMS.ItemId = salesLine.ItemId;
//tmpInventTransWMS.insert();
inventTransWMS_Register.writeTmpInventTransWMS(tmpInventTransWMS, inventTrans, InventDim::find(tmpInventTransWMS.InventDimId));
select * from salesLine;
if (!inventTransWMS_Register.updateInvent(salesLine))
{
throw error("Error during sales return order registration");
}
}
}
public static SalesLine updateDispositionCode(InventTransId _inventTransId)
{
SalesLine salesLine = SalesLine::findInventTransId(_inventTransId, true);
ReturnDispositionCode returnDispositionCode;
BAS_inventoryRegistrationHelper::runPreReturnOrderRegisterLine(salesLine);
ttsbegin;
salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId;
salesLine.update();
ttscommit;
return salesLine;
}
public static void runPreReturnOrderRegisterLine(SalesLine _salesLine)
{
InventTransOriginId salesLineInventTransOriginId;
InventTransOriginId reservationLineInventTransOriginId;
SalesLine reservationLine;
ReturnDispositionCode returnDispositionCode;
if (_salesLine.ReturnStatus == ReturnStatusLine::Awaiting)
{
if (!_salesLine.ReturnAllowReservation && _salesLine.isStocked())
{
SalesLine::changeReturnOrderType(_salesLine.InventTransId);
_salesLine = SalesLine::findInventTransId(_salesLine.InventTransId, true);
}
select firstOnly returnDispositionCode
where returnDispositionCode.DispositionAction == DispositionAction::ReplaceScrap;
ttsbegin;
select forupdate reservationLine
where reservationLine.SalesId == _salesLine.SalesId;
_salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId;
_salesLine.update();
ttscommit;
}
else if (_salesLine.ReturnStatus == ReturnStatusLine::Registered)
{
select forupdate firstonly reservationLine where reservationLine.InventRefTransId == _salesLine.InventTransId;
if (reservationLine
|| _salesLine.qtyMarked())
{
if ((_salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReplaceScrap
|| _salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReturnToCust
|| _salesLine.returnDispositionCode().DispositionAction == DispositionAction::Scrap))
{
if (reservationLine.SalesQty == reservationLine.RemainSalesPhysical)
{
reservationLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(reservationLine.DataAreaId, reservationLine.InventTransId);
salesLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(_salesLine.DataAreaId, _salesLine.InventTransId);
InventTransOrigin::deleteMarking(salesLineInventTransOriginId, reservationLineInventTransOriginId, -_salesLine.QtyOrdered);
reservationLine.delete();
}
}
else
{
throw error("@SYS332911");
}
}
}
}
}