Ok I created a method pretty similar using your example (which I thank you for immensely!). It still isn’t quite working though. Basically I already know how much I’m going to mark (I happen to have it already on a separate field in the salesLine). The kicker is when it goes into the InventTrans updateTmpMark method, there isn’t already a _inventTrans. In the UI, there ALWAYS is a _inventTrans. I don’t understand WHY it’s there in the UI, as it’s a static method and it’s not being passed in. Regardless, does anything jump out at you as being incorrect? I’m hard-coding my example just to really tie down my testing.
static void testMarkIvan()
{
InventTrans imjTrans;
InventTrans salesLineTrans;
TmpInventTransMark tmpInventTransMark;
SalesLine salesLine;
Map mapMarkNow;
InventDim inventDim;
MapEnumerator mapEnumerator;
Qty qtyMax;
container con;
Qty qty;
TmpInventTransMark tmpInventTransMarkNow;
;
salesLineTrans = InventTrans::findTransId(‘ILI-49118’, false);
imjTrans = InventTrans::findTransId(‘ILI-35458’, false);
select * from salesLine where salesLine.InventTransId == salesLineTrans.InventTransId;
inventDim = salesLineTrans.inventDim();
// setup marking
[con, qty] = inventTrans::packTmpMark(salesLine.ItemId, inventDim, salesLine.InventTransId, salesLine.quantityToMark);
mapMarkNow = Map::create(con);
mapEnumerator = mapMarkNow.getEnumerator();
while (mapEnumerator.moveNext())
{
tmpInventTransMark = mapEnumerator.currentValue();
if (tmpInventTransMark.InventTransId == imjTrans.InventTransId)
{
break;
}
}
buf2buf(tmpInventTransMark, tmpInventTransMarkNow);
tmpInventTransMarkNow.qtyMarkNow = salesLine.quantityToMark;
tmpInventTransMarkNow.insert();
mapMarkNow = new Map(Types::Integer, Types::Record);
mapMarkNow.insert(tmpInventTransMarkNow.RecId, tmpInventTransMarkNow);
inventTrans::updateTmpMark(salesLineTrans.InventTransId, inventDim, -salesLineTrans.Qty, mapMarkNow.pack());
}