How to import from text file and create sales order D365FO

        #File;


        System.IO.Stream                        stream;

        FileUploadBuild                         fileUpload;

        DialogGroup                             dlgUploadGroup;

        FileUploadBuild                         fileUploadBuild;

        FormBuildControl                        formBuildControl;

        Dialog                                  dialog = new Dialog("Import the data from File");

        container                               lineParts;

        int                                     i;

        container                               currentLine;

        SalesTable                              salesTable;

        SalesLine                               salesLine;

        InventDim                               inventDim;

        CustTable                               custTable;

        NumberSeq                               numberSeq;

        SalesId                                 salesID;

        CustAccount                             custAccount;

        CustTable                               _CustTable;


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

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

        fileUploadBuild = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');

        fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);

        fileUploadBuild.fileTypesAccepted('.txt');


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

        {

            FileUpload fileUploadControl = dialog.formRun().control(dialog.formRun().controlId('Upload'));

            FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();


            if (fileUploadResult && fileUploadResult.getUploadStatus())

            {

                CommaTextStreamIo textStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(fileUploadResult.getDownloadUrl()));


                textStream.inFieldDelimiter('\t');


                // Skip the first line (header)

                currentLine = textStream.read();


                // Read and process subsequent lines

                currentLine = textStream.read(); // Assign the second line for processing

                while (currentLine)

                {

                    lineParts = currentLine;


                    str OrgcustAccount = conPeek(lineParts,1);

                    str inputDate = conPeek(lineParts, 3);

                    str itemCode = conPeek(lineParts, 4);

                    real qty = conPeek(lineParts, 5);


                    select _CustTable

                        where _CustTable.OriginalAccountNum == OrgcustAccount;


                    if(_CustTable)

                    {

                        custAccount = _CustTable.AccountNum;


                        date shippingDate;

                        int day, month, year;

                        List dateParts = new List(Types::String); // Initialize a List to hold parts

                        ListEnumerator enumerator;

                        str part;

                        int num = 1;


                        // Split the date string into parts using List

                        dateParts = strSplit(inputDate, ".");

                        if (dateParts && dateParts.elements() == 3)

                        {

                            // Extract parts from the List

                            enumerator = dateParts.getEnumerator();

                            while (enumerator.moveNext())

                            {

                                part = enumerator.current();

                                switch (num)

                                {

                                    case 1:

                                        day = any2Int(part);

                                        break;

                                    case 2:

                                        month = any2Int(part);

                                        break;

                                    case 3:

                                        year = any2Int(part);

                                        break;

                                }

                                num++;

                            }  

                        }

                        else

                        {

                            error("Invalid date format.");

                        }


                        shippingDate = mkDate(day, month, year);


                        if(qty <= 0)

                        {

                            info(strFmt("Quantity for Customer:- %1 And Item %2 is Zero",custAccount, itemCode));

                        }

                        else

                        {

                            try

                            {

                                ttsbegin;

                                salesTable.clear();

                                numberSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId());

                                numberSeq.used();

                                salesTable.SalesId = numberSeq.num();

                                salesID = salesTable.SalesId;

                                salesTable.ShippingDateConfirmed = shippingDate;

                                salesTable.ShippingDateRequested = shippingDate;

                                salesTable.initValue();

                                salesTable.CustAccount = custAccount;


                                salesTable.initFromCustTable();

                                salesTable.InventSiteId = InventLocation::find("11").InventSiteId;

                                salesTable.InventLocationId = inventlocation::find("11").InventLocationId;

                                salesTable.insert();



                                inventDim.clear();

                                salesLine.clear();

                                salesLine.SalesId = salesID;

                                salesLine.ItemId = itemCode;

                                salesLine.itemIdChanged();


                                salesLine.initFromInventTable(InventTable::find(salesLine.ItemId));

                                inventdim.InventSiteId = InventLocation::find("11").InventSiteId;

                                inventdim.InventLocationId = Inventlocation::find("11").InventLocationId;


                                salesLine.InventDimId = InventdIm::findOrCreate(inventDim).inventDimId;


                                salesLine.createLine(NoYes::Yes, NoYes::Yes, NoYes::No, NoYes::Yes,NoYes::Yes,NoYes::Yes);


                                //salesLine.SalesPrice = 250;

                                salesLine.SalesQty = qty;

                                //salesLine.LineDisc = 10;

                                salesLine.LineAmount= salesLine.calcLineAmount();

                                salesLine.update();

                                ttscommit;


                            }

                            catch(Exception::Error)

                            {

                                ttsabort;

                            }

                        }

                    }

                    else

                    {

                        info(strFmt("Can't find customer for original customer %1",OrgcustAccount));

                    }

                    // Read the next line

                    currentLine = textStream.read();

                }

            }

        }

Comments