March 15, 2023

File Import and Export - D365 FO

using System.IO;

using OfficeOpenXml;

using OfficeOpenXml.ExcelPackage;

using OfficeOpenXml.ExcelRange;

using OfficeOpenXml.Style;

using OfficeOpenXml.Table;

class Export_And_Import extends RunBase

{

    //Export Template

    public void ExportData()

    {

        MemoryStream    memoryStream = new MemoryStream();

        using (var package = new ExcelPackage(memoryStream))

        {

            var                         currentRow          = 1;

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

            var                         Worksheet           = worksheets.Add("Other Pay Elements");

            var                         cells               = Worksheet.get_Cells();

            OfficeOpenXml.ExcelRange    cell;                

            System.String               value;               

            

            cell    = cells.get_Item(currentRow, 1);

            cell.set_Value("Employee Id");

            

            cell    = cells.get_Item(currentRow, 2);

            cell.set_Value("Month");

            

            cell    = cells.get_Item(currentRow, 3);

            cell.set_Value("Year");


            cell    = cells.get_Item(currentRow, 4);

            cell.set_Value("Date");


            cell    = cells.get_Item(currentRow, 5);

            cell.set_Value("Addition / Deduction");


            cell    = cells.get_Item(currentRow, 6);

            cell.set_Value("Pay Element Code");

            

            cell    = cells.get_Item(currentRow, 7);

            cell.set_Value("Payroll Amount");

            package.Save();

            file::SendFileToUser(memoryStream, "Other Pay Elements Import.xlsx");

        }

    }


    //Import Data

    public void ImportData()

    {

        System.IO.Stream            stream;

        ExcelSpreadsheetName        sheeet;

        FileUploadBuild             fileUpload;

        DialogGroup                 dlgUploadGroup;

        FileUploadBuild             fileUploadBuild;

        FormBuildControl            formBuildControl;

        Dialog                      dialog = new Dialog("Import Pay Elements");

        str                         ctrl = "Import";

        PayElements                 payElements;

        AddDeduct                   addDeduct;


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

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

        fileUploadBuild         = formBuildControl.addControlEx(classstr(FileUpload), ctrl);

        fileUploadBuild.fileTypesAccepted('.xlsx');


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

        {

            FileUpload                       fileUploadControl     = dialog.formRun().control(dialog.formRun().controlId(ctrl));

            FileUploadTemporaryStorageResult fileUploadResult      = fileUploadControl.getFileUploadResult();


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

            {

                stream = fileUploadResult.openResult();


                using (ExcelPackage Package = new ExcelPackage(stream))

                {

                    int                         rowCount, i;

                    Package.Load(stream);

                        

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

                    OfficeOpenXml.ExcelRange    range       = worksheet.Cells;

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


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

                    {

                        select payElements where payElements.EmplId           == range.get_Item(i, 1).value

                                                   && payElements .PayElementCode   == range.get_Item(i, 6).value

                                                   && payElements .EffectiveDate    == DateTimeUtil::date(range.get_Item(i, 4).value);

                        if(!payElements )

                        {

                            payElements .EmplId         = range.get_Item(i, 1).value;

                            payElements .PayslipMonth   = str2Int(range.get_Item(i, 2).value);

                            payElements .PayslipYear    = str2Int(range.get_Item(i, 3).value);

                            payElements .EffectiveDate  = DateTimeUtil::date(range.get_Item(i, 4).value);

                            payElements .AddDeduct      = str2Enum(addDeduct,range.get_Item(i, 5).value);

                            payElements .PayElementCode = range.get_Item(i, 6).value;

                            payElements .Amount         = any2Real(range.get_Item(i, 7).value);

                            payElements .insert();

                        }

                        else

                        {

                            continue;

                        }

                    }

                    info("Pay Elements Imported");

                }

            }

            else

            {

                error("File was not Loaded Properly");

            }

        }

    }


    public static void main(Args args)

    {

        PayElementsImport objimport = new PayElementsImport ();


        DialogButton         dialogButton;


        dialogButton   =    Box::yesNo("Create Empty Excel",DialogButton::Yes,"Empty Excel","Yes OR No");


        if(dialogButton == DialogButton::Yes)

        {

            objimport.ExportData();

        }

        objimport.ImportData();

    }

}

No comments:

Post a Comment