DAXSPOT

Tuesday, June 16, 2020

Import from excel and create Multiple Sales Order with Multiple Lines in ax 2012

Hi,
Below code will help to Import and create Multiple Sales Order with Multiple Lines in ax 2012.
This has some reference from other blogs.
SalesTable salesTable;
SalesLine salesLine; InventDim inventDim; NumberSeq num; SysExcelApplication application; SysExcelWorkbooks workbooks; SysExcelWorkbook workbook; SysExcelWorksheets worksheets; SysExcelWorksheet worksheet,worksheet1; SysExcelCells cells,cells1; COMVariantType type,type1; int row=1,row1=1; ; application = SysExcelApplication::construct(); workbooks = application.workbooks(); workbooks.open('File Path \\SalesOrderCreate.xlsx'); workbook = workbooks.item(1); worksheets = workbook.worksheets(); worksheet = worksheets.itemFromName("Header"); //Worksheet with name "Header" worksheet1 = worksheets.itemFromName("Lines"); cells = worksheet.cells(); cells1 = worksheet1.cells(); ttsBegin; do { row1++; salesTable.clear(); num = NumberSeq::newGetNum(SalesParameters::numRefSalesId()); salesTable.SalesId = num.num(); salesTable.CustAccount = cells.item(row1,1).value().bStr(); salesTable.initValue(SalesType::Sales); salesTable.initFromCustTable(); salesTable.insert(); do { row++; if( salesTable.CustAccount == cells1.item(row, 1).value().bStr()) { inventDim.clear(); inventDim.InventSiteId = cells1.item(row,5).value().bStr();//int2str(real2int(cells1.item(row,5).value().double())); inventDim.InventLocationId = cells1.item(row,6).value().bstr();//int2str(real2int(cells1.item(row,6).value().double())); salesLine.clear(); salesLine.initValue(salesTable.SalesType); salesLine.initFromSalesTable(salesTable); salesLine.ItemId = cells1.item(row, 2).value().bStr(); salesLine.initFromInventTable(InventTable::find(cells1.item(row, 2).value().bStr())); salesLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId; salesLine.SalesQty = any2int(cells1.item(row,3).value().toString()); salesLine.RemainSalesPhysical = salesLine.SalesQty; salesLine.SalesUnit = cells1.item(row,4).value().bStr(); salesLine.DlvMode = cells1.item(row,7).value().bStr(); salesLine.QtyOrdered = salesLine.calcQtyOrdered(); salesLine.RemainInventPhysical = salesLine.QtyOrdered; salesLine.setPriceDisc(InventDim::find(salesLine.InventDimId)); if (salesLine.validateWrite()) { salesLine.insert(); } } type = cells1.item(row+1, 1).value().variantType(); } while (type != COMVariantType::VT_EMPTY); row = 0; type1 = cells.item(row1+1, 1).value().variantType(); } while(type1 != COMVariantType::VT_EMPTY); workbooks.close(); application.quit(); info("Done!"); ttsCommit;

No comments:

Post a Comment

How to execute SQL directly form Dynamics AX X++

How to execute Sql directly form Dynamics AX X++ Reference by : alirazazaidi Dynamics Ax provide many other ways to communicate with databas...