web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)
Answered

Registration for return order line x++

(0) ShareShare
ReportReport
Posted on by

Hi I need to do the registration for Return order lines, I provide the following link is how the final user does the registration for the Return Order Line (From step 17 to 22):

community.dynamics.com/.../return-order-in-ax-2012-r3

I need to do the same thing but by code

Some know how I can do it???

*This post is locked for comments

I have the same question (0)
  • Suggested answer
    Ajit Profile Picture
    8,788 on at

    You can refer below link -

    community.dynamics.com/.../529922

  • Community Member Profile Picture
    on at

    Thank you for your answer, I can create a return order but I can't generate the lines for packing slip

  • Verified answer
    Community Member Profile Picture
    on at

    I did this code to registers the Return Order Line, this is the answer to my question, I posted it, if someone has the same issue like me, you only need to set the SalesId and the ReturnDispositionCodeId:

    TradeNonStockedRegisterForm     tradeNonStockedRegisterForm;

    TradeNonStockedRegisterTmp      tradeNonStockedRegisterTmpUpdated;

    SalesLine                                        salesline;

    str                                                   errorMsg = "";

    System.Exception                           error;

    try

    {

       while select forUpdate salesline

           where salesline.SalesId == //SalesId

            && salesline.ReturnStatus == ReturnStatusLine::Awaiting

       {

           salesline.ReturnDispositionCodeId = //ReturnDispositionCodeId;

           ttsBegin;

           salesline.doUpdate();

           ttsCommit;

           tradeNonStockedRegisterForm = TradeNonStockedRegisterForm::newFromSalesPurchLine(salesline);

           tradeNonStockedRegisterForm.populatePendingQuantityRows(tradeNonStockedRegisterTmpUpdated);

           tradeNonStockedRegisterForm.insertFromTradeNonStockedRegisterTmp(tradeNonStockedRegisterTmpUpdated,

               tradeNonStockedRegisterTmpUpdated,

               tradeNonStockedRegisterTmpUpdated.StatusReceipt == StatusReceipt::Ordered?

               tradeNonStockedRegisterTmpUpdated.Quantity : -tradeNonStockedRegisterTmpUpdated.Quantity, true);

          tradeNonStockedRegisterForm.parmSelectedToRegisterNow().in(tradeNonStockedRegisterTmpUpdated.RecId);

          tradeNonStockedRegisterForm.register(tradeNonStockedRegisterTmpUpdated);

       }

    }

    catch (Exception::CLRError)

    {

       error = CLRInterop::getLastException();

       errorMsg = error.ToString();

    }

    tradeNonStockedRegisterForm.populatePendingQuantityRows(tradeNonStockedRegisterTmpUpdated);

    return errorMsg;

  • davut Profile Picture
    4 on at

    Hi Eduardo

    I've tried this code in a job but nothing happened.

    I am curious about how can I update Qty in this code?

    Thanks

  • Community Member Profile Picture
    on at

    Hi David, I have created a new class because the previous code has an error for the user.

  • DynAx90 Profile Picture
    867 on at

    Can you share your code, because the code you provided is not working 

  • Sachin Chandrashekar Profile Picture
    23 on at

    Hi Eduardo Cabrera,

    I need to register return order through X++ code so can you please share your working code.

    Thanks in advance 

  • davut Profile Picture
    4 on at

    hello 

    try this code.

    SalesLine salesLine = SalesLine::findRecId(00000000000);
    InventTransWMS_Register inventTransWMS_register;
    InventTrans inventTrans;
    TmpInventTransWMS tmpInventTransWMS;
    InventDim inventDim;
    InventTransOriginId salesLineInventTransOriginId;
    InventTransOriginId reservationLineInventTransOriginId;
    SalesLine reservationLine;
    ReturnDispositionCode returnDispositionCode;
    SalesReturnOrderLineRegister SalesReturnOrderLineRegister;
    Args args ;
    ;



    if(salesLine)
    {
    if (salesLine.ReturnStatus == ReturnStatusLine::None || salesLine.ReturnStatus == ReturnStatusLine::Awaiting)
    {
    args = new Args();
    args.record(salesLine);
    SalesReturnOrderLineRegister = SalesReturnOrderLineRegister::construct();
    SalesReturnOrderLineRegister.parmArgs(args);
    SalesReturnOrderLineRegister.init();
    SalesReturnOrderLineRegister.runPreSuper();


    salesLine.ReturnDispositionCodeId = "Return";
    salesLine.update();

    }
    inventTrans = InventTrans::findTransId(salesLine.InventTransId);
    inventDim = inventTrans.inventDim();
    inventTransWMS_register = inventTransWMS_register::newStandard(tmpInventTransWMS);

    tmpInventTransWMS.clear();
    tmpInventTransWMS.initFromInventTrans(inventTrans);
    tmpInventTransWMS.InventQty = abs(5);

    //tmpInventTransWMS.InventDimId = inventDim::findOrCreate(inventDim).inventDimId;
    tmpInventTransWMS.InventDimId = salesLine.InventDimId;
    tmpInventTransWMS.ItemId = salesLine.ItemId;
    tmpInventTransWMS.LineNum = salesLine.LineNum;
    //tmpInventTransWMS.insert();
    inventTransWMS_register.writeTmpInventTransWMS(tmpInventTransWMS,
    inventTrans,
    inventTrans.inventDim());
    inventTransWMS_register.updateInvent(inventTrans);

    select forupdate firstonly reservationLine where reservationLine.InventRefTransId == salesLine.InventTransId;

    if (reservationLine
    || salesLine.qtyMarked())
    {
    if ((salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReplaceScrap
    || salesLine.returnDispositionCode().DispositionAction == DispositionAction::ReturnToCust
    || salesLine.returnDispositionCode().DispositionAction == DispositionAction::Scrap))
    {
    if (reservationLine.SalesQty == reservationLine.RemainSalesPhysical)
    {
    reservationLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(reservationLine.DataAreaId, reservationLine.InventTransId);
    salesLineInventTransOriginId = InventTransOriginSalesLine::findInventTransOriginId(salesLine.DataAreaId, salesLine.InventTransId);
    InventTransOrigin::deleteMarking(salesLineInventTransOriginId, reservationLineInventTransOriginId, -salesLine.QtyOrdered);
    reservationLine.delete();
    }
    }
    else
    {
    throw error("@SYS332911");
    }
    }
    }

  • Suggested answer
    Sachin Chandrashekar Profile Picture
    23 on at

    Hi Davut,

    Thank you very much for your reply, I got the solution. below is the method I have used and it is working fine.

    public void createRegisterline(SalesTable _salestable)

    {

       Integer                                 lastRec = 0;

       SalesId                                 oldSalesId;

       inventTrans                             inventTrans;

       SalesFormLetter                         salesFormLetter;

       inventTransOrigin                       inventTransOrigin;

       TradeOrderLineRegister                  tradeOrderlineRegister;

        autoRegistrationSBC           salesReturnOrderLineRegister;

       InventTransWMS_Register                 inventTransWMS_register;

       TmpInventTransWMS                       TmpInventTransWMS;

       ReturnDispositionCode                   returnDispositionCode;

       Description255                          errorMsg;

       Args _args = new Args();

       try

       {

           ttsBegin;

           select firstOnly * from returnDispositionCode

               where returnDispositionCode.DispositionAction == DispositionAction::Credit;

           while  select forUpdate salesLine

               where _salestable.SalesId  == salesLine.SalesId

               && _salestable.SalesType == SalesType::ReturnItem

           {

               try

               {

                   _args.record(salesLine);

                   tradeOrderLineRegister = autoRegistrationSBC::construct();

                   tradeOrderLineRegister.parmArgs(_args);

                   tradeOrderLineRegister.init();

                   salesReturnOrderLineRegister = tradeOrderLineRegister;

                   salesReturnOrderLineRegister.runPreSuper();

                   //update returnDisposioncode

                   salesLine.ReturnDispositionCodeId = returnDispositionCode.DispositionCodeId;

                   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.InventDimId = inventTrans.InventDimId;

                   tmpInventTransWMS.insert();

                   inventTransWMS_register.writeTmpInventTransWMS(tmpInventTransWMS,

                                                                  inventTrans,

                                                                  inventTrans.inventDim());

                   inventTransWMS_register.updateInvent(salesLine);

               }

               catch

               {

                   continue;

               }

           }

           ttsCommit;

       }

       catch

       {

           throw error("@SYS332911");

       }

    }

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the April Top 10 Community Leaders

These are the community rock stars!

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
CP04-islander Profile Picture

CP04-islander 21

#2
Harisgillani Profile Picture

Harisgillani 4

#2
dekion Profile Picture

dekion 4

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans