Import customer list from ExcelFile using Job

static void importCustomersFromExcel(Args _args)
{
    SysExcelApplication             application;
    SysExcelWorkbooks               workbooks;
    SysExcelWorkbook                workbook;
    SysExcelWorksheets              worksheets;
    SysExcelWorksheet               worksheet;
    SysExcelCells                   cells;
    COMVariantType                  type;
    System.DateTime                 ShlefDate;
    FilenameOpen                    filename;
    dialogField                     dialogFilename;
    Dialog                          dialog;

    //Table Declarations Starts
    CustTable                       _CustTable;
    DirPartyTable                   dirPartyTab;
    Address                         addTab;

    //Table Declartions Ends

    CustAccount AccNum;
    //CustAccount CustGruopId;
    int iAccNum;
    int row=1;
    int cnt;
    CustName        custSearchName;
    CustName        CustName;
    //Addressing      adress;
    //Phone     phone;
    //TeleFax teleFax;
    CustGroupId GroupId;
    Str         currencyData;
    smmSegmentId segmentId;
    CommissSalesGroup SalesGroup;

    VendCurrencyCode currency;
    AddressCity city;
    AddressStreet street;
    CustTableAlias nameAlias;

    #Excel
    // convert into str from excel cell value
    str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
    {
    switch (_cv.variantType())
    {
    case (COMVariantType::VT_BSTR):
    return _cv.bStr();
    case (COMVariantType::VT_R4):
    return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
    case (COMVariantType::VT_R8):
    return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
    case (COMVariantType::VT_DECIMAL):
    return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
    case (COMVariantType::VT_DATE):
    return date2str(_cv.date(),123,2,1,2,1,4);
    case (COMVariantType::VT_EMPTY):
    return "";
    default:
    throw error(strfmt("@SYS26908", _cv.variantType()));
    }
    return "";
    }
    ;
    dialog              =   new Dialog("Excel Upoad");
    dialogFilename      =   dialog.addField(typeId(FilenameOpen));
    dialog.filenameLookupFilter(["@SYS28576",#XLSX,"@SYS28576",#XLS]);
    dialog.filenameLookupTitle("Upload from Excel");
    dialog.caption("Excel Upload");
    dialogFilename.value(filename);
    if(!dialog.run())
    return;
    filename            =   dialogFilename.value();
    application         =   SysExcelApplication::construct();
    workbooks           =   application.workbooks();
    try
    {
    workbooks.open(filename);
    }
    catch (Exception::Error)
    {
    throw error("File cannot be opened.");
    }
    workbook            =   workbooks.item(1);
    worksheets          =   workbook.worksheets();
    worksheet           =   worksheets.itemFromNum(1);
    cells               =   worksheet.cells();

    do
    {
        try
        {
            row++;
            AccNum                 =   COMVariant2Str(cells.item(row, 1).value());
            CustName               =   COMVariant2Str(cells.item(row, 2).value());
            GroupId                =   COMVariant2Str(cells.item(row,3).value());
            currencyData           =   COMVariant2Str(cells.item(row,4).value());
            custSearchName         =   COMVariant2Str(cells.item(row,5).value());
            if(row > 1)
            {
                //Insert into _CustTable Table
               select firstonly _CustTable where _CustTable.AccountNum == AccNum;
               if(!_CustTable)
               {
                   _CustTable.initValue();
                   _CustTable.AccountNum        =   AccNum;
                   _CustTable.Name              =   CustName;
                   _CustTable.nameAlias         =   custSearchName;
                   _CustTable.CustGroup         =   GroupId;//"COMPANY";
                   _CustTable.LanguageId        =   "EN-US";
                   _CustTable.PartyType         =   DirPartyType::Organization;
                   _CustTable.Currency          =   currencyData;//"SAR";
                    _CustTable.insert();
   cnt++;
                  info(strfmt("Customer uploaded successfully",_CustTable.Name));
               }
               else
               {
                   warning(strfmt("Customer already exists %1 : ",_CustTable.Name));
               }
     }
        }
        catch
        {
            info(strfmt("Upload Failed in row %1", row));
        }

        type = cells.item(row+1, 1).value().variantType();
    }while (type != COMVariantType::VT_EMPTY);

    info(strfmt("%1 Customers uploaded successfully",cnt));
    application.quit();
}

Comments

Popular posts from this blog

Getting Workflow Approvers In Dynamics AX (AX 2012)

To find details individually for ledgerjournaltrans default dimensions

Creating a numbersequence in form level in ax 2012