Restore deleted Sales order from the void salesorder

class TECRestoreDeletedSOBatchCls 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;

          SalesTable          salesTable;

          SalesLine           salesLine;

          Map                 Map = new Map(Types::Int64, Types::Record);

        

          SalesTableDelete = SalesTableDelete::find(salesID, true); // provide the sales order

       

          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();


                              // this code is needed if the refenrce invet transaction is missing on particular case

                              //  InventTransOriginSalesLine originSalesLine;

                              //{

                              //    select * from originSalesLine where

                              //            originSalesLine.InventTransOrigin == InventTransOrigin::findByInventTransId(salesLine.InventTransId).RecId;


                              //    if (!originSalesLine.InventTransOrigin)

                              //    {

                              //        originSalesLine.InventTransOrigin = InventTransOrigin::findByInventTransId(salesLine.InventTransId).RecId;

                              //        originSalesLine.SalesLineDataAreaId = salesLine.DataAreaId;

                              //        originSalesLine.SalesLineInventTransId = salesLine.InventTransId;

                              //        originSalesLine.doInsert();

                              //     }

                              //}


                              salesLineDelete.delete();

                         }


                         salesTableDelete.delete();

                    }

                    break;


               case Voided::linesVoided :


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

                    {

                         salesLine = conpeek(salesLineDelete.SalesLine, 1);

                         salesLine.insert();

                   

                         Map.insert(salesLine.RecId, salesLine);

                   

                         salesLineDelete.delete();

                    }

                    salesTableDelete.delete();

                    break;

          }


          ttscommit;



     }


     public static void main(Args _args)

     {


          TECRestoreDeletedSOBatchCls tecRestoreDeletedSOBatch = new TECRestoreDeletedSOBatchCls();


          // 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