X++ code to create and post Inventory Adjustment Journal By Posting Packing Slip From Sales Order
Following is the sample job to show how we can create and post Adjustment journal by x++
To Create and Post Journal From Sales Packing Slip ,Create a COC for class SalesFormLetter_PackingSlip and use Run method .
[ExtensionOf(classStr(SalesFormLetter_PackingSlip))]
final class Inventoryadjustmentjournal_Extension
{
public void run()
{
next run();
CustPackingSlipJour custPackingSlipJour;
custPackingSlipJour = this.parmJournalRecord();
InventjournalHelper::invAdjJour(CustPackingSlipJour);
}
}
Creating Helper Class for creation of Header and Line creation and passing helper class method in COC.
public class InventjournalHelper
{
public static void invAdjJour(CustPackingSlipJour custPackingSlipJour)
{
InventJournalTable inventJournalTable;
InventJournalTrans inventJournalTrans;
InventJournalNameId inventJournalName;
InventDim journalTransInventDim,saleslineInventDim;
JournalCheckPost JournalCheckPost;
SalesLine salesLine;
CustPackingSlipTrans custPackingSlipTrans;
InventParameters inventParameters;
// Creation of journal header.
ttsbegin;
inventJournalTable.clear();
inventJournalName = InventJournalName::standardJournalName(InventJournalType::LossProfit);
inventJournalTable.initFromInventJournalName(InventJournalName::find(inventJournalName));
inventJournalTable.SystemBlocked = true;
inventJournalTable.insert();
// Creation of journal Line.
while select PackingSlipId from CustPackingSlipTrans
where CustPackingSlipTrans.PackingSlipId == custPackingSlipJour.PackingSlipId
join ItemId,SalesQty,SalesId from salesLine
where salesLine.InventTransId == custPackingSlipTrans.InventTransId
join InventLocationId,InventSiteId from saleslineInventDim
where saleslineInventDim.inventDimId == salesLine.InventDimId
{
inventJournalTrans.clear();
inventJournalTrans.initFromInventJournalTable(inventJournalTable);
inventJournalTrans.TransDate = systemDateGet();
inventJournalTrans.ItemId = salesLine.ItemId;
inventJournalTrans.initFromInventTable(InventTable::find(salesLine.ItemId));
inventJournalTrans.Qty = salesLine.SalesQty;
inventJournalTrans.Qty = salesLine.SalesQty;
inventJournalTrans.SalesId = salesLine.SalesId;
inventJournalTrans.PackingSlipId = custPackingSlipJour.PackingSlipId;
journalTransInventDim.InventSiteId = saleslineInventDim.InventSiteId ;
journalTransInventDim.InventLocationId = saleslineInventDim.InventLocationId;
// inventory dimensions
inventJournalTrans.InventDimId = InventDim::findOrCreate(journalTransInventDim).inventDimId;
inventJournalTrans.insert();
//Post Journal.
journalCheckPost =InventJournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post, inventJournalTable);
journalCheckPost.run();
}
ttscommit;
}
If you find that something is missing or can be improved, don't hesitate to leave a comment.
Comments
Post a Comment