Creation of multiple PO and posting invoices for the same through X++

 Upon a clicking a button POs will be creating and posting invoices by using data which are stored in custom table (Mandatory data have been stored in data source)

On Clicked():-

 [Control("Button")]

    class BASPostButton

    {

        /// <summary>

        ///

        /// </summary>

        public void clicked()

        {

            BASPurchaseOrderEntity purchOrder;

            while  select * from purchOrder

            {

            //Data entity declaration  

            PurchPurchaseOrderHeaderV2Entity  purchTable;     

            PurchPurchaseOrderLineV2Entity    purchLine;      

            //Create Purchase header     

            purchTable.initValue();     

            purchTable.OrderVendorAccountNumber    = purchOrder.VendorAccount;     

            purchTable.insert();   

 


            //Fetching PurchId to create lines    

            PurchId purchid = purchTable.PurchaseOrderNumber;     

            //Create Purchase lines        purchLine.initValue();    

            purchLine.PurchaseOrderNumber         = purchid;      

            purchLine.ItemNumber                  = purchOrder.ItemNumber;    

            purchLine.OrderedPurchaseQuantity     = purchOrder.Qty;  

            purchLine.PurchasePrice               = purchOrder.UnitPrice;

            purchLine.ReceivingSiteId             = purchOrder.Site;     

            purchLine.ReceivingWarehouseId        = purchOrder.Warehouse;     

            purchLine.insert();          

            Info(strFmt("Purchase order %1 has been created.",purchTable.PurchaseOrderNumber));     

            //Update PO by using PurchFormLetter class      

            PurchFormLetter   purchFormLetter;

     

            // Get Purchase Order      

            PurchTable PurchUpdate   = PurchTable::find(purchId);  

   

            //Posting PO Confirmation  

            purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);    

            purchFormLetter.update(PurchUpdate, strFmt("PO_%1", purchTable.PurchaseOrderNumber));  

            info(strFmt("Purch Order %1",purchTable.PurchaseOrderNumber));

            ;        

            //Posting Product receipt    

            purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);     

            purchFormLetter.update(PurchUpdate, strFmt(purchOrder.ProductReceiptNumber));

            info(strFmt("Product receipt  Posted for %1",purchOrder.ProductReceiptNumber));  

               

            ;    

            //Posting PO Invoice      

            purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);     

            purchFormLetter.update(PurchUpdate, strFmt(purchOrder.InvoiceNumber),

            DateTimeUtil::date(purchOrder.InvoiceDate));     

            info(strFmt("Invoice posted for %1",purchOrder.InvoiceNumber)); 

            info(strFmt("Invoice Date for %1", purchOrder.InvoiceDate));

           //Updating created PO Ids as well 

               ttsbegin;

                purchOrder.selectForUpdate(true);

            purchOrder.PurchaseOrder = purchid;

            purchOrder.update();

                ttscommit;


                BAS_CreatePurchaseOrder_ds.research();

                BAS_CreatePurchaseOrder_ds.refresh();


         

            }


          

            super();


        }

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