D365FO: Create Counting Journal X++

public void CreateCountingJournal(JournalDescription _journalDescription, ItemId _itemId, InventQtyCounted _countedQuantity)
{
JournalCheckPost journalCheckPost;
InventDim inventDim;
InventDimParm tmpInventDimParm;
InventJournalTrans journalTrans;
InventJournalTable inventJournal;
InventJournalName inventJournalName;
JournalTableData journalTableData;
InventSum inventSum;
NumberSeq numberSeq;
NumberSeq num;
str journalName;
str journalNum;
int lineNum = 0;
boolean errors;
;
journalName = InventParameters::find().CountJournalNameId;

num = new NumberSeq();

num = NumberSeq::newGetNum(InventParameters::numRefInventJournalId());

journalNum = num.num();

inventJournalName = InventJournalName::find(journalName);

ttsbegin;

inventJournal.initFromInventJournalName(inventJournalName);
inventJournal.JournalNameId = journalName;
inventJournal.JournalId = journalNum;
inventJournal.JournalType = InventJournalType::Count;
inventJournal.Description = _journalDescription;
inventJournal.insert();

journalTableData = JournalTableData::newTable(inventJournal);

inventDim.clear();
journalTrans.clear();

inventDim.initValue();
inventDim.InventSiteId = “9”;
inventDim.InventLocationId = “99”;
inventDim.wMSLocationId = “Loc”;
inventDim = InventDim::findOrCreate(inventDim);

journalTrans.initValue();
journalTrans.initFromInventJournalTable(inventJournal);

JournalTrans.TransDate = today();
journalTrans.ItemId = _itemId;

InventQty ItemOnHandQty = InventSumDatePhysicalDim::onHandQty(JournalTrans.TransDate,journalTrans.ItemId,inventDim,tmpInventDimParm);

JournalTrans.LineNum = 1;
journalTrans.InventDimId = inventDim.inventDimId;
journalTrans.InventOnHand = ItemOnHandQty;
journalTrans.JournalType = inventJournal.JournalType;

journalTrans.initFromInventTable(InventTable::find(journalTrans.ItemId));
journalTrans.InventOnHand = ItemOnHandQty;
journalTrans.Counted = _countedQuantity;
journalTrans.Counted = decRound(journalTrans.Counted,InventTable::inventDecimals(journalTrans.ItemId));
journalTrans.Qty = journalTrans.Counted – journalTrans.InventOnHand;
journalTrans.validateWrite();
journalTrans.insert();
lineNum ++;
inventJournal.NumOfLines = lineNum;
inventJournal.update();

journalTableData.updateBlock(JournalBlockLevel::InUse,JournalBlockLevel::None);
if(!infolog.num(Exception::Error))
{
infolog.clear(0);
//journalCheckPost = InventJournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post,inventJournal);
//journalCheckPost.parmAutoBlock(true);
//journalCheckPost.run();
}
ttscommit;

}

Leave Comment

Your email address will not be published. Required fields are marked *