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

Popular posts from this blog

how to post trade agreement journals automatically using x++ code

How to Create a wizard in x++ d365

x++ code to submit and approve and reject the invent movement workflow in d365 F&O