Create Inventory Journal through Code in D365FO X++
Create Inventory Journal through Code in D365FO X++
Code:
internal final class Cls_FPS_MOVJRNL
{
/// <summary>
/// Class entry point. The system will call this method when a designated menu
/// is selected or when execution starts and this class is set as the startup class.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
CBLFPS_StkAdjTbl CBLFPS_StkAdjTbl;
ttsbegin;
// Create journal table
InventJournalTable inventJournalTable = Cls_FPS_MOVJRNL::createJournalTable();
// Initialize journal trans
InventJournalTrans inventJournalTrans = Cls_FPS_MOVJRNL::initJournalTrans(inventJournalTable);
info(strFmt("INV MOV JOURNAL CREATED %1", INVENTJOURNALTABLE.JournalId));
// Post Inventory journal
Cls_FPS_MOVJRNL::postInventTableJournal(inventJournalTable);
Cls_FPS_MOVJRNL::updateInventJournalTableInfo(inventJournalTable);
// ------- Buffer Table Status Updation -------
update_recordset CBLFPS_StkAdjTbl
setting Status = "Y";
ttscommit;
info("@SYS9265");
}
public static InventJournalTable createJournalTable()
{
INVENTJOURNALTABLE INVENTJOURNALTABLE;
CBLFPS_StkAdjTbl CBLFPS_StkAdjTbl;
// Create INV JOURNAL HEADER
ttsbegin;
INVENTJOURNALTABLE.clear();
INVENTJOURNALTABLE.initValue();
numberSeq = NumberSeq::newGetNum(InventParameters::numRefInventJournalId());
numberSeq.used();
INVENTJOURNALTABLE.initFromInventJournalName( InventJournalName::find(InventParameters::find().MovementJournalNameId));
INVENTJOURNALTABLE.Description = "Inventory Movement Journal";
INVENTJOURNALTABLE.bfpJournalType = bfpJournalType::Garment ;
INVENTJOURNALTABLE.SystemBlocked = false;
INVENTJOURNALTABLE.insert();
ttscommit;
return inventJournalTable;
}
public static InventJournalTrans initJournalTrans(InventJournalTable _inventJournalTable)
{
INVENTJOURNALTRANS INVENTJOURNALTRANS;
InventDim inventDim;
CBLFPS_StkAdjTbl CBLFPS_StkAdjTbl;
InventLocation InventLocation;
NumberSeq num;
num = NumberSeq::newGetNum(InventParameters::bfpNumRefInventTransLineGroupId());
while
select ItemNo , sum(Qty) from CBLFPS_StkAdjTbl
group by ItemNo
where CBLFPS_StkAdjTbl.Status =="N"
{
ttsbegin;
int line = 0;
line = line+1;
inventDim.InventSiteId = "CBL-Plant";
inventDim.InventLocationId = "Fair_Price Shop";
inventDim.configId = "SP23";
inventDim.InventSizeId = "32 30";
inventDim = InventDim::findOrCreate(inventDim);
INVENTJOURNALTRANS.initFromInventJournalTable(INVENTJOURNALTABLE);
INVENTJOURNALTRANS.JournalId = INVENTJOURNALTABLE.JournalId;
INVENTJOURNALTRANS.LineNum = line;
INVENTJOURNALTRANS.JournalType = InventJournalType::Movement;
INVENTJOURNALTRANS.ItemId = CBLFPS_StkAdjTbl.ItemNo;
INVENTJOURNALTRANS.initFromInventTable(InventTable::find(CBLFPS_StkAdjTbl.ItemNo));
INVENTJOURNALTRANS.Qty = (-1) * CBLFPS_StkAdjTbl.Qty ;
INVENTJOURNALTRANS.InventDimId = inventDim.inventDimId;
INVENTJOURNALTRANS.TransDate = SystemDateget();
inventJournalTrans.bfpInventJournalTransLineGroupId = num.num();
INVENTJOURNALTRANS.insert();
ttscommit;
}
return inventJournalTrans;
}
public static void postInventTableJournal(InventJournalTable _inventJournalTable)
{
JournalCheckPost journalCheckPost;
journalCheckPost = inventJournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post ,_inventJournalTable);
journalCheckPost.parmThrowCheckFailed(true);
journalCheckPost.parmShowInfoResult(true);
journalCheckPost.run();
}
public static void updateInventJournalTableInfo(InventJournalTable _inventJournalTable)
{
InventJournalTable updateInventJournalTable;
updateInventJournalTable = InventJournalTable::find(_inventJournalTable.JournalId, true);
updateInventJournalTable.SystemBlocked = false;
InventJournalTable::initTotal(updateInventJournalTable);
updateInventJournalTable.update();
}
}
Comments
Post a Comment