While performing the registration for the return order line in X++, I am facing an
Update Conflict exception when passing the disposition code '41,51 and 61' at the line
inventTransWMS_Register.updateInvent(salesLine);
This is the actual code:
public void inventoryRegistration(SalesTable _salesTable,str _dispositionCode)
{
Integer lastRec = 0;
SalesId oldSalesId;
inventTrans inventTrans;
SalesFormLetter salesFormLetter;
inventTransOrigin inventTransOrigin;
TradeOrderLineRegister tradeOrderlineRegister;
SalesReturnOrderLineRegister salesReturnOrderLineRegister;
InventTransWMS_Register inventTransWMS_register;
TmpInventTransWMS TmpInventTransWMS;
ReturnDispositionCode returnDispositionCode;
Description255 errorMsg;
SalesLine salesLine;
TmpFrmVirtual tmpFrmVirtual;
Args _args = new Args();
try
{
ttsBegin;
while select forUpdate salesLine
where _salestable.SalesId == salesLine.SalesId
&& _salestable.SalesType == SalesType::ReturnItem
{
try
{
_args.record(salesLine);
tradeOrderLineRegister = SalesReturnOrderLineRegister::construct();
tradeOrderLineRegister.parmArgs(_args);
tradeOrderLineRegister.init();
salesReturnOrderLineRegister = tradeOrderLineRegister;
salesReturnOrderLineRegister.runPreSuper();
//update returnDisposioncode
select firstOnly DispositionCodeId from returnDispositionCode
where returnDispositionCode.DispositionCodeId == _dispositionCode;
if(returnDispositionCode.DispositionCodeId)
{
salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId;
salesLine.update();
}
else
{
throw error("@BASIS_SOCancellation:Error");
}
select firstOnly crossCompany inventTrans
join RecId,InventTransId from inventTransOrigin
where inventTransOrigin.InventTransId == salesLine.InventTransId
&& inventTrans.InventTransOrigin == inventTransOrigin.RecId;
//inventTrans = InventTrans::findTransId(salesLine.InventTransId);
inventTransWMS_register = inventTransWMS_register::newStandard(tmpInventTransWMS);
//inventTransWMS_Register.createFromInventTrans(inventTrans, inventTrans.inventDim());
tmpInventTransWMS.clear();
tmpInventTransWMS.initFromInventTrans(inventTrans);
tmpInventTransWMS.InventDimId = salesLine.InventDimId;
tmpInventTransWMS.ItemId = salesLine.ItemId;
tmpInventTransWMS.LineNum = salesLine.LineNum;
tmpInventTransWMS.insert();
inventTransWMS_register.writeTmpInventTransWMS(tmpInventTransWMS, inventTrans, inventTrans.inventDim());
//inventTransWMS_Register.updateInvent(SalesLine::findRecId(salesLine.RecId));
inventTransWMS_Register.updateInvent(salesLine);
if(returnDispositionCode.DispositionAction == DispositionAction::ReplaceCredit ||
returnDispositionCode.DispositionAction == DispositionAction::ReplaceScrap )
{
tmpFrmVirtual.TableNum = tableNum(SalesLine);
tmpFrmVirtual.RecordNo = salesLine.RecId;
tmpFrmVirtual.ItemId = salesLine.ItemId;
tmpFrmVirtual.LineNum = salesLine.LineNum;
tmpFrmVirtual.Qty = salesLine.SalesQty;
tmpFrmVirtual.InventDimId = inventTrans.inventDimId;
tmpFrmVirtual.SalesId = salesLine.SalesId;
tmpFrmVirtual.insert();
ReturnReplaceItemRef::createRefReturnFromTmpFrmVirtual(salesLine.SalesId,salesLine.LineNum,tmpFrmVirtual);
}
}
catch
{
continue;
}
}
ttsCommit;
}
catch
{
throw error("@BASIS_SOCancellation:Validation5");
}
}