Restore deleted Sales order from the void salesorder

 class TECRestoreDeletedSOBatch extends RunBaseBatch

{

     // User Input fields

    DialogField     fieldSalesid;

    DialogField     fieldName;

     

     // Variables to store user input

    SalesTable   salesTable;

    Name salesID;


     // pack() and unpack() methods are used to load the last value from user

    // for our simple example we are not going to use them.

    public container pack()

    {

        return conNull();

    }


    public boolean unpack(container packedClass)

    {

        return true;

    }



    // Dialog method to capture runtime user inputs for customer details

    public Object dialog()

    {

        Dialog dialog = super();


        // Set a title for dialog

        dialog.caption( 'Restored deleted Sales order');


        // Add a new field to Dialog

        fieldSalesid = dialog.addField(extendedTypeStr(name), 'Sales order number'); //SalesIdDelete


        return dialog;

    }


     // Retrieve values from Dialog

     public boolean getFromDialog()

     {

          salesid = fieldSalesid.value();

          return super();

     }


     public void run()

          {

          SalesTableDelete    salesTableDelete;

          SalesLineDelete     salesLineDelete;

          SalesLine           salesLine;

          // Set Dialog field value to find CustTable

        

           SalesTableDelete = SalesTableDelete::find(salesid, true);


        ttsbegin;

         switch (salesTableDelete.Cancelled)

         {

             case Voided::Voided :

                 salesTable  = conpeek(salesTableDelete.SalesTable, 1);

                 salesTable.insert();

                 while select forupdate salesLineDelete where salesLineDelete.SalesId == salesTableDelete.SalesId

                 {

                     salesLine = conpeek(salesLineDelete.SalesLine, 1);

                     salesLine.insert();

                 }

                 salesTableDelete.delete();

                 break;

             case Voided::linesVoided :

                 while select forupdate salesLineDelete where salesLineDelete.SalesId == salesTableDelete.SalesId

                 {

                     salesLine = conpeek(salesLineDelete.SalesLine, 1);

                     salesLine.insert();

                     salesLineDelete.delete();

                 }

                 salesTableDelete.delete();

                 break;

        }

        ttscommit;

    }


     public static void main(Args _args)

    {

        TECRestoreDeletedSOBatch tecRestoreDeletedSOBatch = new TECRestoreDeletedSOBatch();


        // Prompt the dialog, if user clicks OK it returns true

        if (tecRestoreDeletedSOBatch.prompt())

        {

            tecRestoreDeletedSOBatch.run();

        }

    }



}


Comments

Popular posts from this blog

Customization on Sales invoice Report in D365 F&O

46) D365 FO: SHAREPOINT FILE UPLOAD USING X++

75) COC - Create a coc of the table modified method