Skip to main content

D365 : Upload Via Excell Code

/// <summary>

///            Modification : Added NoYes dialog box and export template feature for Changing PO

/// </summary>

/// <remarks>

///         Class for updating Department in PO.

/// </remarks>

using System.IO;

using OfficeOpenXml;

class LT_Supp_UploadDepPO

{

    public static void main(Args args)

    {

        LT_Supp_UploadDepPO updateCoverRes = new LT_Supp_UploadDepPO();

        DialogButton diagBut;

        ;

        diagBut = Box::yesNoCancel('Do you wish to upload ->"Yes" or Export template ->"No" or Abort->"Cancel"', DialogButton::Yes, 'Click');

        

        if(diagBut == DialogButton::Yes)

        {

            updateCoverRes.run();

            info("Processing completed");

        }

        else if(diagBut == DialogButton::No)

        {

            updateCoverRes.exportTemplate();

        }

    }


    /// <summary>

    /// Export template for this job

    /// </summary>

    public void exportTemplate()

    {

        int i = 1;

        MemoryStream memoryStream = new MemoryStream();


        using (var package = new ExcelPackage(memoryStream))

        {

            var currentRow = 1;

            var worksheets = package.get_Workbook().get_Worksheets();

            var CustTableWorksheet = worksheets.Add("Export");

            var cells = CustTableWorksheet.get_Cells();

            ;

            OfficeOpenXml.ExcelRange cell = cells.get_Item(currentRow, i);

            System.String value = "Purchase order number";

            cell.set_Value(value);

            i++;


            cell = null;

            value = "From Department";

            cell = cells.get_Item(currentRow, i);

            cell.set_Value(value);

            i++;


            cell = null;

            value = "To Department";

            cell = cells.get_Item(currentRow, i);

            cell.set_Value(value);

            i++;


            package.Save();

            file::SendFileToUser(memoryStream, 'Update_Purchase_Order_Department.xlsx');

        }

    }


    /// <summary>

    /// Get the values from file and Upload Purchase Order Department Through Excell

    /// </summary>

    public void run()

    {

        FileUploadTemporaryStorageResult fileUploadResult;

        OfficeOpenXml.ExcelRange range;

        System.IO.Stream stream;

        ExcelWorksheet worksheet;

        ExcelSpreadsheetName sheeet;


        FormBuildControl formBuildControl;

        FileUploadBuild fileUpload, fileUploadBuild;

        DialogGroup dlgUploadGroup;

        FileUpload fileUploadControl;

        Dialog dialog = new Dialog('Upload Purchase Order Department Through Excell');

        int rowCount, row, i = 1;


        PayrollLeaveRequestId_GCC leaveRequestId;

        PurchTable                  purchTable,purchtableloc;

        str legalCompany;

        PurchIdBase                         PurchId;

        OMOperatingUnitNumber               toDept,fromdept;


        ;

        

        dlgUploadGroup = dialog.addGroup('@SYS54759');

        formBuildControl = dialog.formBuildDesign().control(dlgUploadGroup.name());

        fileUploadBuild = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');

        fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);

        fileUploadBuild.fileTypesAccepted('.xlsx');

    

        if (dialog.run() && dialog.closedOk())

        {

            fileUploadControl   = dialog.formRun().control(dialog.formRun().controlId('Upload'));

            fileUploadResult = fileUploadControl.getFileUploadResult();

            if (fileUploadResult != null && fileUploadResult.getUploadStatus())

            {

                stream = fileUploadResult.openResult();

                using (ExcelPackage package = new ExcelPackage(stream))

                {

                    package.Load(stream);

                    worksheet   = package.get_Workbook().get_Worksheets().get_Item(1);

                    range       = worksheet.Cells;

                    rowCount    = worksheet.Dimension.End.Row - worksheet.Dimension.Start.Row + 1;

                    for (row = 2; row <= rowCount ; row++)

                    {

                        PurchId = range.get_Item(row, 1).value;

                        toDept = range.get_Item(row, 2).value;

                        fromdept    = range.get_Item(row, 3).value;


                        purchtableloc = PurchTable::find(PurchId);

                        

                       /* select purchtableloc

                            where(purchtableloc.PurchStatus == PurchStatus::None

                            ||  purchtableloc.PurchStatus == PurchStatus::Received);*/

                                    

      

                        if(purchtableloc)

                        {

                            //i = 3;

                            ttsbegin;

                            purchtableloc.selectForUpdate(true);

                            purchtableloc.LTDepartment = fromdept;

                            purchtableloc.modifiedField(fieldNum(purchTable, LTDepartment));

                            purchtableloc.doupdate();


                            info(strFmt("PO No -- %1, Before Departement -- %2 ,After Department ---%3",purchtableloc.PurchId,toDept,purchtableloc.LTDepartment));

                            ttscommit;

                        }


                    }

                }

            }

            else

            {

                error('Error: Uploading failed');

            }

        }

    }


Comments

Popular posts from this blog

D365 : ENABLE AND DISABLE IN LIST PAGE

 here i have added 4 button in salesQuotationlistpage. now i need to enable/disable button according status. so i have Extensionof  of class SalesQuotationListPageInteraction and modify setButtonEnabled method by Chain of Command //list page button enable and diable in listpage interation class [ExtensionOf(classStr(SalesQuotationListPageInteraction))] final class SQTableinimathod_Extension {     protected void setButtonEnabled()     {                SalesQuotationTable SalesQuotationTable;         CustQuotationJour   CustQuotationJour;         CustQuotationConfirmJour  CustQuotationConfirmJour;               next setButtonEnabled();         SalesQuotationTable SalesQuotationTable1 = this.listPage().activeRecord(queryDataSourceStr(SalesQuotationListPage, SalesQuotationTable));         selec...

An error occurred during report data sets execution D365 For finance and operations

  Hi all, small tip. I faced this issue, when I extend the custom report in D365 for finance and operations. During development on onebox     Solution was simple, restart IIS services Restart Reporting Services. Happy Daxing.

CODE TO PDF IN AX 2012

static void Job1(Args _args) {         PurchPackingSlipController      ssrsController = new SrsReportRunController();         TradeDocumentReportContract     purchPackingSlipContract = new TradeDocumentReportContract();         SRSPrintDestinationSettings     printerSettings;         VendPackingSlipJour             VendPackingSlipJour;         Args                            args;         //select the latest record based on create date         while select VendPackingSlipJour             order by VendPackingSlipJour.createdDateTime DESC             where VendPackingSlipJour.PackingSlipId == 'LJ-01'         ...