Sales return registration through code

   public boolean createSalesReturnRegistration(SalesTable _salesTable)

    {

        SalesLine                           salesLine;

        SalesReturnOrderLineRegister        salesReturnOrderLineRegister;

        TradeOrderLineRegister              tradeOrderlineRegister;

        InventTrans                         inventTrans;

        inventTransOrigin                   inventTransOrigin;

        TmpInventTransWMS                   TmpInventTransWMS;

        InventTransWMS_Register             inventTransWMS_register;

        boolean                             retValue = false;

        WMSParameters                       wmsParameters = WMSParameters::find();



        Args args = new Args();

          

        try

        {

            while select forUpdate salesLine

            where salesLine.SalesId  == _salesTable.SalesId &&

                    salesLine.SalesType == SalesType::ReturnItem &&

                    (salesLine.ReturnStatus == ReturnStatusLine::Awaiting)

            {

                args.record(salesLine);

                tradeOrderLineRegister = SalesReturnOrderLineRegister::construct();

                tradeOrderLineRegister.parmArgs(args);

                tradeOrderLineRegister.init();

                salesReturnOrderLineRegister = tradeOrderLineRegister;

                salesReturnOrderLineRegister.runPreSuper();


                salesLine.ReturnDispositionCodeId = dispositionCode;

                salesLine.update();


                select firstOnly crossCompany inventTrans

                join RecId, InventTransId from inventTransOrigin

                where inventTransOrigin.InventTransId == salesLine.InventTransId

                && inventTrans.InventTransOrigin == inventTransOrigin.RecId;

                inventTransWMS_register = inventTransWMS_register::newStandard(tmpInventTransWMS);

                tmpInventTransWMS.clear();

                tmpInventTransWMS.initFromInventTrans(inventTrans);

                tmpInventTransWMS.ItemId = salesLine.ItemId;


                tmpInventTransWMS.insert();


                inventTransWMS_register.writeTmpInventTransWMS(tmpInventTransWMS,

                                                                inventTrans,

                                                                inventTrans.inventDim());


                if (inventTransWMS_register.updateInvent(salesLine))

                {

                    salesLine.reread();

               

                    if (salesLine.ReturnStatus != ReturnStatusLine::Registered)

                    {

                        retValue = false;

                        break;

                    }

                    retValue = true;

                }

                else

                {

                    retValue = false;

                }

                

            }

        }

        catch

        {

            retValue = false;

        }


        return retValue;

    }

Comments

Popular posts from this blog

On clicked event of form button in D365 X++

Finding unit price of item from trade agreement through code AX X++

Create Sales Line Through Code AX X++ D365 Finance & Operations