X++ code to create and post trade agreement journal for sales

 OnClikced():-

class BAS_TradeAgreementJournals

{

    public static void main(Args _args)

    {

        //BAS_TradeAgreementJournalTable tradeAgreement = _args.record();

        BAS_TradeAgreementJournalTable tradeAgreement;

        MultiSelectionHelper selectHelper = MultiSelectionHelper::createFromCaller(_args.caller());

        

        InventTrans             inventTrans;

        InventDim               inventDim;

        InventDimId             inventDimId;

        PriceDiscAdmTable       priceDiscAdmTable;

        PriceDiscAdmTrans       priceDiscAdmTrans;

        PriceDiscAdmCheckPost   priceDiscAdmCheckPost = new PriceDiscAdmCheckPost(false);

        PriceDiscAdmName  priceDiscAdmName = PriceDiscAdmName::find('Retail');

        try

        {

            // Create Journal number

            ttsbegin;

            priceDiscAdmTable.clear();

            priceDiscAdmTable.initFromPriceDiscAdmName(priceDiscAdmName);

            priceDiscAdmTable.insert();

            ttscommit;

        

            tradeAgreement = selectHelper.getFirst();

            while(tradeAgreement)

            {

                // Create Journal line

                ttsbegin;

                priceDiscAdmTrans.clear();

                priceDiscAdmTrans.JournalNum = priceDiscAdmTable.JournalNum;

                priceDiscAdmTrans.AccountCode = PriceDiscPartyCodeType::All;

                priceDiscAdmTrans.ItemCode = PriceDiscProductCodeType::Table;

                priceDiscAdmTrans.ItemRelation = tradeAgreement.ItemId;


                select firstonly inventDimId from inventTrans

                join  InventDim

                where inventDim.inventDimId == inventTrans.inventDimId

                && inventTrans.ItemId == tradeAgreement.ItemId

                && inventDim.InventSiteId == tradeAgreement.InventSiteId

                && inventDim.InventLocationId == tradeAgreement.InventLocationId;

              

                priceDiscAdmTrans.LineNum = 1;

                priceDiscAdmTrans.Currency = "USD";

                priceDiscAdmTrans.UnitId = tradeAgreement.UnitId;

                priceDiscAdmTrans.InventDimId = inventTrans.inventDimId;

                priceDiscAdmTrans.Amount = tradeAgreement.Price;

                priceDiscAdmTrans.PriceUnit = 1;

                priceDiscAdmTrans.relation = PriceType::PriceSales;

                priceDiscAdmTrans.FromDate = tradeAgreement.FromDate;

                priceDiscAdmTrans.ToDate = tradeAgreement.ToDate;

                priceDiscAdmTrans.insert();

                ttscommit;

                tradeAgreement = selectHelper.getNext();

            }

            

                //Check if journal created

                if(priceDiscAdmTable && priceDiscAdmTrans)

                {

                    Info(strFmt('Created Journal number %1', priceDiscAdmTable.JournalNum));

                    if(!priceDiscAdmCheckPost.checkJournal()) //Determines whether the price and discount agreement journal contains warnings.

                    {

                        priceDiscAdmCheckPost.initJournalNum(priceDiscAdmTrans.JournalNum);

                        priceDiscAdmCheckPost.run(); //Checks and posts the price and discount agreement journal.

                        Info(strFmt('Posted Journal number %1', priceDiscAdmTable.JournalNum));

                    }

                }

            

        }


        catch(Exception::CLRError)

        {

            error(enum2Str(Exception::CLRError));

        }

        

    }


}

Comments

Popular posts from this blog

How to Create a wizard in x++ d365

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

X++ code to CREATE AND POST A TRADE AGREEMENT IN MICROSOFT DYNAMICS 365 in D365 F & O