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