Import CSV file using file upload


 

public class discountCodeImportEventHandle

{
    [FormControlEventHandler(formControlStr(Discount, Discount), FormControlEventType::Clicked)]
    public static void CouponUpload_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        #File


        str              availableTypes  = ".csv";
        DialogGroup      dialogGroup;
        Filename         textFile;
        FileUpload       fileUploadControl, fileUpload;
        FormBuildControl formBuildControl;
        FileUploadBuild  dialogFileUpload;
        CommaTextStreamIo localStream;
        container        currentLine;
        Counter          fileLineNumber;
        Discount     	 discount;
        FormDataSource   discount_DS;
        xxxDiscountTable xxxDiscountTable;
       
        discount    = sender.formRun().dataSource("Discount").cursor();
        discount_DS = sender.formRun().dataSource(formDataSourceStr(Discount,Discount)) as FormDataSource;


        Dialog dialog = new Dialog("Import discount");
        dialogGroup = dialog.addGroup("File path");
        formBuildControl = dialog.formBuildDesign().control(dialogGroup.name());
        dialogFileUpload = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');
        dialogFileUpload.style(FileUploadStyle::MinimalWithFilename);
        dialogFileUpload.baseFileUploadStrategyClassName(classstr(FileUploadTemporaryStorageStrategy));
        dialogFileUpload.fileTypesAccepted(availableTypes);
        
        dialog.run();
        fileUpload = dialog.formRun().control(dialog.formRun().controlId('Upload'));
        textFile = fileUpload.fileName();
        fileUploadControl = dialog.formRun().control(dialog.formRun().controlId('Upload'));
        FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
        
        if (fileUploadResult != null && fileUploadResult.getUploadStatus())
        {
            textFile = fileUploadResult.getDownloadUrl();
        }
        
        localStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(textFile));
       
        localStream.inFieldDelimiter("\,");
        localStream.inRecordDelimiter("\n");
    
        currentLine = localStream.read();
        fileLineNumber++;


        System.Globalization.CultureInfo culture = System.Globalization.CultureInfo::get_InvariantCulture();
        while (currentLine)
        {
	    // Insert imported CSV file records to table	
            xxxDiscountTable.CouponNumber   = Discount.CouponNumber;
            xxxDiscountTable.DiscountCodeId = conPeek(currentLine, 1);
            xxxDiscountTable.DiscountCode   = conPeek(currentLine, 2);
            xxxDiscountTable.ActivatedDate  = System.DateTime::ParseExact(conPeek(currentLine, 3),'MM/dd/yyyy',culture);
            if(conPeek(currentLine, 4)      == enum2Str(DiscountStatus::Inactive))
            {
                xxxDiscountTable.Status     = DiscountStatus::Inactive;
            }
            else if(conPeek(currentLine, 4) == enum2Str(DiscountStatus::Active))
            {
                xxxDiscountTable.Status     = DiscountStatus::Active;
            }
                        
            xxxDiscountTableLoc.insert();
            
            currentLine = localStream.read();
        }
        Discount_DS.refresh();
        Discount_DS.research(true);
    }
}

Comments

Popular posts from this blog

Execute D365 F&O SSRS report with parameter and upload report output on Azure blob storage using X++

Microsoft D365 F&O: Remove custom models from deployable package

Generate Text/CSV/DAT file using X++ and upload on Azure blob storage