To Import Data from Excel to D365 FO tables through JOB
Scenario: Too add additional data into invoice journal form based on invoice id , which is actually stored in custinvoicejour table
Steps:
Create excel file with data
Create JOB
Format:
Using System.IO;
Using OfficeOpenXml;
Using OfficeOpenXml.ExcelPackage;
Using OfficeOpenXml.ExcelRange;
class TestImportdatajob
{
public static void main(Args _args)
{
System.IO.Stream stream;
ExcelSpreadsheetName sheet;
FileUploadBuild fileUpload,fileUploadBuild;
DialogGroup dialogUploadGroup;
Name name;
CustInvoiceJour custInvoiceJour;
real Softex;
String30 softexNumber;
CustInvoiceId invoiceId;
CurrencyCode softexCurrency;
AmountCur softexAmtCur;
AmountMST softexAmtMST;
TransDate softexDate;
FormBuildControl formBuildControl;
Dialog dialog=new Dialog("Excel Import Example");
dialogUploadGroup=dialog.addGroup("@SYS54759");
formBuildControl=dialog.formBuildDesign().control(dialogUploadGroup.name());
fileUploadBuild=formBuildControl.addControlEx(classStr(fileUpload),"UploadExcel");
fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
fileUploadBuild.fileTypesAccepted(".xlsx");
if(dialog.run() && dialog.closedOk())
{
FileUpload fileUploadControl=dialog.formRun().control(dialog.formRun().controlId("Upload"));
FileUploadTemporaryStorageResult
fileUploadResult=file::GetFileFromUser(classStr(FileUploadTemporaryStorageStrategy));
//fileUploadResult=fileUploadControl.getFileUploadResult();
if(fileUploadResult!= null && fileUploadResult.getUploadStatus())
{
stream=fileUploadResult.openResult();
using(ExcelPackage package= new ExcelPackage(stream))
{
int rowCount, iterator;
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;
ttsbegin;
for(iterator=2;iterator<=rowCount;iterator++)
{
invoiceId = range.get_Item(iterator, 1).Value;
softexNumber = range.get_Item(iterator, 2).Value;
softexDate = range.get_Item(iterator, 3).Value;
softexCurrency = range.get_Item(iterator, 4).Value;
softexAmtMST = range.get_Item(iterator, 5).Value;
if(!softexNumber)
{
Softex = range.get_Item(iterator, 2).value;
softexNumber = int2str(real2int(Softex));
}
select forUpdate custInvoiceJour
where custInvoiceJour.InvoiceId == invoiceId;
if(!custInvoiceJour.InvoiceId)
{
throw error (strFmt("This %1 InvoiceId does not exist",invoiceId));
}
select softexNumber, invoiceId from custInvoiceJour where custInvoiceJour.SoftexNumber == softexNumber;
if(custInvoiceJour.SoftexNumber)
{
throw error (strFmt("Softex no already exists on Invoice id %1 ",custInvoiceJour.InvoiceId));
}
if(!softexNumber)
{
throw error(strFmt("Please enter softex no for invoice id %1 in line %2", invoiceid, iterator-1));
}
custInvoiceJour.SoftexNumber = softexNumber;
custInvoiceJour.SoftexDate = softexDate;
custInvoiceJour.SoftexCur = softexCurrency;
custInvoiceJour.SoftexAmount = softexAmtMST;
custInvoiceJour.Update();
}
ttscommit;
}
}
}
}
}
Comments
Post a Comment