Partial/Complete marking of Sales Line with X++ Code:
static void xppInventMarking(Args _args)
{
InventTrans purchLineTrans;
InventTrans salesLineTrans;
SalesLine salesLine;
TmpInventTransMark tmpInventTransMark;
Map mapMarkNow;
InventDim inventDim;
MapEnumerator mapEnumerator;
Qty qtyMax;
container con;
Qty qty;
TmpInventTransMark tmpInventTransMarkNow;
;
//Say,Sales Line has sales qty = 10
//Say, Purch Line has PurchQty = 10 and we want to mark only 1, partial
ttsbegin;
salesLineTrans = InventTrans::findTransId('00000451_068', true);
purchLineTrans = InventTrans::findTransId('00000452_068', false);
inventDim = purchLineTrans.inventDim();
salesLine = salesLineTrans.salesLine();
// setup marking
[con, qty] = TmpInventTransMark::packTmpMark(salesLine.ItemId, inventDim, salesLine.InventTransId, -10);
salesLine.SalesQty = -1;
mapMarkNow = Map::create(con);
mapEnumerator = mapMarkNow.getEnumerator();
while (mapEnumerator.moveNext())
{
tmpInventTransMark = mapEnumerator.currentValue();
if (tmpInventTransMark.InventTransId == purchLineTrans.InventTransId)
{
break;
}
}
buf2buf(tmpInventTransMark, tmpInventTransMarkNow);
tmpInventTransMarkNow.qtyMarkNow = salesLine.SalesQty;
tmpInventTransMarkNow.insert();
mapMarkNow = new Map(Types::Integer, Types::Record);
mapMarkNow.insert(tmpInventTransMarkNow.RecId, tmpInventTransMarkNow);
salesLineTrans.Qty = -1;
TmpInventTransMark::updateTmpMark(salesLineTrans.InventTransId, inventDim, -salesLineTrans.Qty, mapMarkNow.pack());
ttscommit;
}
***************************************
Complete Marking:
PurchLine purchLine;
SalesLine salesLine;
;
purchLine = PurchLine::findRecId(“464643344”);
salesLine = SalesLine::findRecId(“2343464344”);
If (purchLine.RecId)
{
purchLine.ItemRefType = InventRefType::Sales;
purchLine.InventRefId = salesLine.SalesId;
purchLine.InventRefTransId = salesLine.InventTransId;
purchLine.update();
}
if (salesLine.RecId)
{
salesLine.InventRefType = InventRefType::Purch;
salesLine.InventRefId = purchLine.PurchId;
salesLine.InventRefTransId = purchLine.InventTransId;
salesLine.update();
}
This is so cool! I'm working on a project that requires to do the markings automatically.
ReplyDeleteThanks!