Thursday 27 April 2017

Import Vendor Postal address and Contact Info from Excel using X++

static void Na_ContactDetails(Args _args)
{
    Dialog                              dialog;
    Dialogfield                         dialogfield;
    VendTable                           vendTable;

    LogisticsElectronicAddress          logisticsElectronicAddress;
    LogisticsPostalAddress              logisticsPostalAddress;
    LogisticsLocation                   logisticsLocation,logisticsLocation1;
    LogisticsLocationRole               logisticsLocationRole;
    DirPartyTable                       dirPartyTable,dirPartyTable1;
    COMVariantType                      type;

    DirPartyLocation                    dirPartyLocation,dirPartyLocation1;
    DirPartyLocationRole                dirPartyLocationRole,dirPartyLocationRole1;
    LogisticsElectronicAddressRole      logisticsElectronicAddressRole;

    SysExcelApplication                 application;
    SysExcelWorkbooks                   workBooks;
    SysExcelWorkbook                    workBook;
    SysExcelWorksheets                  workSheets;
    SysExcelWorksheet                   workSheet;
    SysExcelCells                       cells;
    Filename                            fileName;
    int                                 row;

    AccountNum                          vendAccount;
    Name                                vendName;
    VendGroupId                         vendGroup;
    Description                         description;
    str 100                             Address,phonenum,namealiyas;
    CurrencyCode                        currency;


    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 "";
    }

    application =   SysExcelApplication::construct();
    workBooks   =   application.workbooks();
    dialog      = new Dialog("FileOpen");
    dialogfield = dialog.addField(extendedTypeStr(Filenameopen), "File Name");
    dialog.run();

    if (dialog.run())
    {
        filename = (dialogfield.value());
    }
    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();
    row =1;
    do
    {
        row++;


        vendAccount = cells.item(row,1).value().bStr();
        vendName    = cells.item(row,2).value().bStr();
        vendGroup   = COMVariant2Str(cells.item(row,3).value());
        phonenum    = COMVariant2Str(cells.item(row,4).value());
        description = COMVariant2Str(cells.item(row,5).value());
        Address     = cells.item(row,6).value().bStr();
        currency    = cells.item(row,7).value().bStr();
        namealiyas  = "working1";

        logisticsLocation.clear();
        logisticsLocation.initValue();
        logisticsLocation.Description               = description;
        logisticsLocation.insert();

        logisticsLocation1.clear();
        logisticsLocation1.initValue();
        logisticsLocation1.Description                      = namealiyas;
        logisticsLocation1.insert();

        logisticsPostalAddress.clear();
        logisticsPostalAddress.initValue();
        logisticsPostalAddress.Address                      = Address;
        logisticsPostalAddress.Location                     = LogisticsLocation.RecId;
        logisticsPostalAddress.CountryRegionId              = "IND";
        logisticsPostalAddress.State                        = "Telangana";
        logisticsPostalAddress.Street                       = "Kukatpally";
        logisticsPostalAddress.insert();

        dirPartyTable.clear();
        dirPartyTable.initValue();
        dirPartyTable.Name                                  = vendName;
        dirPartyTable.PrimaryContactPhone                   = logisticsElectronicAddress.recId;
        dirPartyTable.PrimaryAddressLocation                = logisticsLocation.RecId;
        dirPartyTable.insert();

        logisticsElectronicAddress.clear();
        logisticsElectronicAddress.initValue();
        logisticsElectronicAddress.Type                     = LogisticsElectronicAddressMethodType::Phone;
        logisticsElectronicAddress.Locator                  = phonenum;
        logisticsElectronicAddress.Description              = description;
        logisticsElectronicAddress.IsPrimary                = NoYes::No;
        logisticsElectronicAddress.Location                 = logisticsLocation1.RecId;
        logisticsElectronicAddress.PrivateForParty          = dirPartyTable.RecId;
        logisticsElectronicAddress.IsMobilePhone            = NoYes::No;
        logisticsElectronicAddress.LocatorExtension         = "+91";
        logisticsElectronicAddress.insert();

        logisticsElectronicAddressRole.clear();
        logisticsElectronicAddressRole.initValue();
        logisticsElectronicAddressRole.ElectronicAddress    = logisticsElectronicAddress.RecId;
        logisticsElectronicAddressRole.LocationRole         = LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Home).RecId;
        logisticsElectronicAddressRole.insert();

        vendTable.clear();
        vendTable.initValue();
        vendTable.AccountNum                                =  vendAccount;
        vendTable.Currency                                  =  currency;
        vendTable.VendGroup                                 =  vendGroup;
        vendTable.Party                                     =  dirPartyTable.RecId;
        vendTable.insert();

        dirPartyLocation.clear();
        dirPartyLocation.initValue();
        dirPartyLocation.Party                              =  dirPartyTable.RecId;
        dirPartyLocation.Location                           =  logisticsLocation.RecId;
        dirPartyLocation.IsPostalAddress                    =  NoYes::Yes;
        dirPartyLocation.IsPrimary                          =  NoYes::Yes;
        dirPartyLocation.IsRoleDelivery                     =  NoYes::No;
        dirPartyLocation.insert();

        dirPartyLocation1.clear();
        dirPartyLocation1.initValue();
        dirPartyLocation1.Party                             =  dirPartyTable.RecId;
        dirPartyLocation1.Location                          =  logisticsLocation1.RecId;
        dirPartyLocation1.IsPostalAddress                   =  NoYes::No;
        dirPartyLocation1.IsPrimary                         =  NoYes::Yes;
        dirPartyLocation1.IsRoleDelivery                    =  NoYes::No;
        dirPartyLocation1.insert();

        dirPartyLocationRole.clear();
        dirPartyLocationRole.initValue();
        dirPartyLocationRole.LocationRole                   =  LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Home).RecId;
        dirPartyLocationRole.PartyLocation                  =  dirPartyLocation.RecId;
        dirPartyLocationRole.insert();

        dirPartyLocationRole1.clear();
        dirPartyLocationRole1.initValue();
        dirPartyLocationRole1.LocationRole                  =  LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Home).RecId;
        dirPartyLocationRole1.PartyLocation                 =  dirPartyLocation1.RecId;
        dirPartyLocationRole1.insert();

    }
    while (type != COMVariantType::VT_EMPTY);
    application.quit();
    workbooks.close();

    info("Done");

}

Create Product Master with Product Varients Using X++

Public void Create_ProductMaster(ItemId _itemid,ItemName _itemname,Name _searchname,Name _name,ProductType _ProductType)
{
 EcoResProductMaster                    ecoResProductMaster;
 EcoResProductIdentifier                ecoResProductIdentifier;
 EcoResProductDimensionGroupProduct     ecoResProductDimensionGroupProduct;
 EcoResProductMasterModelingPolicy      ecoResProductMasterModelingPolicy;

 EcoResStorageDimensionGroupProduct     ecoResStorageDimensionGroupProduct;
 EcoResTrackingDimensionGroupProduct    ecoResTrackingDimensionGroupProduct;

 EcoResConfiguration                    ecoResConfiguration;
 EcoResProductMasterConfiguration       ecoResProductMasterConfiguration;

 EcoResSize                             ecoResSize;
 EcoResProductMasterSize                ecoResProductMasterSize;

 EcoResColor                            ecoResColor;
 EcoResProductMasterColor               ecoResProductMasterColor;

 EcoResDistinctProductVariant           ecoResDistinctProductVariant;
 EcoResProductVariantConfiguration      ecoResProductVariantConfiguration;
 EcoResProductVariantColor              ecoResProductVariantColor;
 EcoResProductVariantSize               ecoResProductVariantSize;

 InventTable                            inventTable;
 InventTableModule                      inventTableModule;
 InventItemSetupSupplyType              inventItemSetupSupplyType;

 EcoResStorageDimensionGroupItem        ecoResStorageDimensionGroupItem;
 EcoResTrackingDimensionGroupItem       ecoResTrackingDimensionGroupItem;

 InventModelGroupItem                   inventModelGroupItem;
 InventItemGroupItem                    inventItemGroupItem;

 InventDim                              inventDim;
 InventDimCombination                   inventDimCombination;

try
 {
     //ProductMaster
         ecoResProductMaster.clear();
         ecoResProductMaster.initValue();
         ecoResProductMaster.ProductType                    = EcoResProductType::Item;
         ecoResProductMaster.DisplayProductNumber           = _itemid;
         ecoResProductMaster.SearchName                     = _searchname;
         ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;
         if (ecoResProductMaster.validateWrite())
         {
            ecoResProductMaster.insert();
         }

     //Product Identifer
        ecoResProductIdentifier.clear();
        ecoResProductIdentifier.initValue();
        ecoResProductIdentifier.ProductNumber = _itemid;
        ecoResProductIdentifier.Product       = ecoResProductMaster.RecId;
        ecoResProductIdentifier.insert();

    //Product dimension group
        ecoResProductDimensionGroupProduct.clear();
        ecoResProductDimensionGroupProduct.initValue();
        ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);
        ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName("SizeColCon").RecId;
        if(ecoResProductDimensionGroupProduct.validateWrite())
        {
            ecoResProductDimensionGroupProduct.insert();
        }

    //Storage dimension group
        ecoResStorageDimensionGroupProduct.clear();
        ecoResStorageDimensionGroupProduct.initValue();
        ecoResStorageDimensionGroupProduct.Product               = ecoResProductMaster.RecId;
        ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName("Site").RecId;
        if (ecoResStorageDimensionGroupProduct.validateWrite())
        {
            ecoResStorageDimensionGroupProduct.insert();
        }

    //Tracking dimension group
        ecoResTrackingDimensionGroupProduct.clear();
        ecoResTrackingDimensionGroupProduct.initValue();
        ecoResTrackingDimensionGroupProduct.Product                = ecoResProductMaster.RecId;
        ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName("Serial").RecId;
        if (ecoResTrackingDimensionGroupProduct.validateWrite())
        {
            ecoResTrackingDimensionGroupProduct.insert();
        }

    //Product modeling policy
        ecoResProductMasterModelingPolicy.clear();
        ecoResProductMasterModelingPolicy.initValue();
        ecoResProductMasterModelingPolicy.ProductMaster = ecoResProductMaster.RecId;
        if (ecoResProductMasterModelingPolicy.validateWrite())
        {
            ecoResProductMasterModelingPolicy.insert();
        }

    //Product translation
       EcoResProductTranslation::createOrUpdateTranslation(ecoResProductMaster.RecId, _itemname, _searchname);

    //Configuration
         ecoResConfiguration = EcoResConfiguration::findByName("NoteBook");
         if (!ecoResConfiguration)
         {
             ecoResConfiguration.clear();
             ecoResConfiguration.initValue();
             ecoResConfiguration.Name = "NoteBook ";
             ecoResConfiguration.insert();
         }

    //Size
         ecoResSize = EcoResSize::findByName("1");
         if(!ecoResSize)
         {
             ecoResSize.clear();
             ecoResSize.initValue();
             ecoResSize.Name = "1 ";
             ecoResSize.insert();
         }
    //color
        ecoResColor = EcoResColor::findByName("Black");
        if(!ecoResColor)
        {
            ecoResColor.clear();
            ecoResColor.initValue();
            ecoResColor.Name = "Black";
            ecoResColor.insert();
        }

    //InventDimId Creating
        inventDim.clear();
        inventDim.ConfigId = "NoteBook";/*ConfigId*/
        inventDim.InventSizeId =  "1";  //size
        inventDim.InventColorId = "Black"; // name
        inventDim = InventDim::findOrCreate(inventDim);

    //Configuration assigned to product master
        ecoResProductMasterConfiguration.clear();
        ecoResProductMasterConfiguration.initValue();
        ecoResProductMasterConfiguration.Configuration = ecoResConfiguration.RecId;
        ecoResProductMasterConfiguration.ConfigProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
        ecoResProductMasterConfiguration.ConfigProductMaster = ecoResProductMaster.RecId;
        ecoResProductMasterConfiguration.insert();

    //Size assigned to product master
        ecoResProductMasterSize.clear();
        ecoResProductMasterSize.initValue();
        ecoResProductMasterSize.Size = ecoResSize.RecId;
        ecoResProductMasterSize.SizeProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventSizeId));
        ecoResProductMasterSize.SizeProductMaster    = ecoResProductMaster.RecId;

    //color assigned to product master
        ecoResProductMasterColor.clear();
        ecoResProductMasterColor.initValue();
        ecoResProductMasterColor.Color = ecoResColor.RecId;
        ecoResProductMasterColor.ColorProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
        ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;

    //Product variant
        ecoResDistinctProductVariant.clear();
        ecoResDistinctProductVariant.initValue();
        ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
        ecoResProductMaster.productNumber(),
        EcoResProductVariantDimValue::getDimensionValuesContainer(_itemname, "1", "Black",""));
        ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName /*ConfigId*/;
        ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
        ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
        ecoResDistinctProductVariant.insert();

    //Product variant configuration
        ecoResProductVariantConfiguration.clear();
        ecoResProductVariantConfiguration.initValue();
        ecoResProductVariantConfiguration.initFromDistinctProductVariant(ecoResDistinctProductVariant);
        ecoResProductVariantConfiguration.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
        ecoResProductVariantConfiguration.Configuration = ecoResConfiguration.RecId;
        ecoResProductVariantConfiguration.insert();

    //product variant size
        ecoResProductVariantSize.clear();
        ecoResProductVariantSize.initValue();
        ecoResProductVariantSize.initFromDistinctProductVariant(ecoResDistinctProductVariant);
        ecoResProductVariantSize.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventSizeId));
        ecoResProductVariantSize.Size                      = ecoResSize.RecId;
        ecoResProductVariantSize.insert();

    //product variant color
        ecoResProductVariantColor.clear();
        ecoResProductVariantColor.initValue();
        ecoResProductVariantColor.initFromDistinctProductVariant(ecoResDistinctProductVariant);
        ecoResProductVariantColor.ProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
        ecoResProductVariantColor.Color                     = ecoResColor.RecId;
        ecoResProductVariantColor.insert();


    //Product variant translation
         EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProductVariant.RecId, _itemname, _searchname);

    //Released product
        inventTable.clear();
        inventTable.initValue();
        inventTable.initFromEcoResProduct(ecoResProductMaster);
        inventTable.ItemId    =_itemid;
        inventTable.NameAlias =_searchname;
        if(inventTable.validateWrite())
        {
            inventTable.insert();
        }

    //Inventory model group
        inventModelGroupItem.clear();
        inventModelGroupItem.initValue();
        inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
        inventModelGroupItem.ItemId         = inventTable.ItemId;
        inventModelGroupItem.ModelGroupId   = "FIFO";
        inventModelGroupItem.ModelGroupDataAreaId = curext();
        inventModelGroupItem.insert();

    //Item group
        inventItemGroupItem.clear();
        inventItemGroupItem.initValue();
        inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
        inventItemGroupItem.ItemId         = inventTable.ItemId;
        inventItemGroupItem.ItemGroupId    = "Parts";
        inventItemGroupItem.ItemGroupDataAreaId = curext();
        inventItemGroupItem.insert();

    //Extended product details – Inventory
        inventTableModule.clear();
        inventTableModule.initValue();
        inventTableModule.ItemId     = inventTable.ItemId;
        inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
        inventTableModule.insert();

    //Extended product details – Purchase
        inventTableModule.clear();
        inventTableModule.initValue();
        inventTableModule.ItemId     = inventTable.ItemId;
        inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
        inventTableModule.insert();

    //Extended product details – Sales
        inventTableModule.clear();
        inventTableModule.initValue();
        inventTableModule.ItemId     = inventTable.ItemId;
        inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
        inventTableModule.insert();

    //Warehouse items
        InventItemLocation::createDefault(inventTable.ItemId);

    //Supply type setup
        inventItemSetupSupplyType.clear();
        inventItemSetupSupplyType.initValue();
        inventItemSetupSupplyType.ItemId         = inventTable.ItemId;
        inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
        inventItemSetupSupplyType.insert();

    //Product storage dimension group
        ecoResStorageDimensionGroupProduct = EcoResStorageDimensionGroupProduct::findByProduct(ecoResProductMaster.RecId);
        if (ecoResStorageDimensionGroupProduct.RecId)
        {
            ecoResStorageDimensionGroupItem.clear();
            ecoResStorageDimensionGroupItem.initValue();
            ecoResStorageDimensionGroupItem.ItemDataAreaId        = inventTable.DataAreaId;
            ecoResStorageDimensionGroupItem.ItemId                = inventTable.ItemId;
            ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
            ecoResStorageDimensionGroupItem.insert();
        }

    //Product tracking dimension group
        ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResProductMaster.RecId);
        if (ecoResTrackingDimensionGroupProduct.RecId)
        {
            ecoResTrackingDimensionGroupItem.clear();
            ecoResTrackingDimensionGroupItem.initValue();
            ecoResTrackingDimensionGroupItem.ItemDataAreaId         = inventTable.DataAreaId;
            ecoResTrackingDimensionGroupItem.ItemId                 = inventTable.ItemId;
            ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
            ecoResTrackingDimensionGroupItem.insert();
        }

    //Released product variant
        inventDimCombination.clear();
        inventDimCombination.initValue();
        inventDimCombination.DistinctProductVariant = ecoResDistinctProductVariant.RecId;
        inventDimCombination.ItemId                 = inventTable.ItemId;
        inventDimCombination.InventDimId            = inventDim.InventDimId;
        inventDimCombination.insert();
        info("Done!");
    }
   catch
   {
      error("Error!");
      return;
   }
}

Product Creation Using X++

public void Create_Product(ItemId _itemid,ItemName _itemname,Name _searchname,Name _name,ProductType _ProductType)
{
  //Classes
    EcoResProductService                            ecoResProdService;
    EcoResEcoResProduct                             ecoResEcoResProduct;
    EcoResEcoResProduct_Product_Distinct            ecoResEcoResProduct_Product_Distinct;
    EcoResEcoResProduct_Translation                 ecoResEcoResProduct_Translation;
    EcoResEcoResProduct_Identifier                  ecoResEcoResProduct_Identifier;

 //Tables
    InventTable                                     inventTable;
    InventTableModule                               inventTableModule;
    InventItemSetupSupplyType                       inventItemSetupSupplyType;
    InventModelGroupItem                            inventModelGroupItem;
    InventItemGroupItem                             inventItemGroupItem;
    NumberSequenceTable                             numberSequenceTable;

    EcoResProduct                                   ecoResProduct;
    EcoResStorageDimensionGroupProduct              ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct             ecoResTrackingDimensionGroupProduct;
    EcoResStorageDimensionGroupItem                 ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem                ecoResTrackingDimensionGroupItem;
    DataAreaId                                      _dataAreaId=curext();

 //Object Creating Class
    ecoResProdService                       = EcoResProductService::construct();
    ecoResEcoResProduct                     = new EcoResEcoResProduct();
    ecoResEcoResProduct_Product_Distinct    = new EcoResEcoResProduct_Product_Distinct();

//Newly created and initialize product
    ecoResEcoResProduct_Product_Distinct.parmDisplayProductNumber(_itemid);
    ecoResEcoResProduct_Product_Distinct.parmProductType(EcoResProductType::Item);
    ecoResEcoResProduct_Product_Distinct.parmSearchName(_searchname);

//Create a new translation object:
    ecoResEcoResProduct_Translation = ecoResEcoResProduct_Product_Distinct.createTranslation().addNew();
    ecoResEcoResProduct_Translation.parmDescription(_searchname);
    ecoResEcoResProduct_Translation.parmLanguageId(CompanyInfo::languageId());
    ecoResEcoResProduct_Translation.parmName(_itemname);

//Create a new Identifier object:
    ecoResEcoResProduct_Identifier = ecoResEcoResProduct_Product_Distinct.createIdentifier().addNew();
    ecoResEcoResProduct_Identifier.parmProductNumber(_itemid);

//Assign Product Class to table
    ecoResEcoResProduct.createProduct().add(ecoResEcoResProduct_Product_Distinct);
    ecoResProdService.create(ecoResEcoResProduct);
    info("Product is Creted");

 //Realsed Product
    select firstOnly ecoResProduct where EcoResProduct.DisplayProductNumber == _itemid;

//Storage dimension group
    ecoResStorageDimensionGroupProduct.clear();
    ecoResStorageDimensionGroupProduct.initValue();
    ecoResStorageDimensionGroupProduct.Product               = ecoResProduct.RecId;
    ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName("Site").RecId;
    if (ecoResStorageDimensionGroupProduct.validateWrite())
    {
        ecoResStorageDimensionGroupProduct.insert();
    }

 //Tracking dimension group
    ecoResTrackingDimensionGroupProduct.clear();
    ecoResTrackingDimensionGroupProduct.initValue();
    ecoResTrackingDimensionGroupProduct.Product                = ecoResProduct.RecId;
    ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName("Serial").RecId;
    if (ecoResTrackingDimensionGroupProduct.validateWrite())
    {
        ecoResTrackingDimensionGroupProduct.insert();
    }


    if (!numberSequenceTable.RecId || numberSequenceTable.Manual)
    {
        itemId = ecoResProduct.productNumber();
    }
    else //number sequence auto, get a number
    {
        itemId = NumberSeq::newGetNumFromId(numberSequenceTable.RecId).num();
    }
    inventTable.clear();
    inventTable.initValue();
    inventTable.initFromEcoResProduct(ecoResProduct);
    inventTable.ItemId = ItemId;
    inventTable.NameAlias = ecoResProduct.SearchName;
    inventTable.insert(true);

// Create inventTableModules
    inventTableModule.clear();
    inventTableModule.initValue();
    inventTableModule.ItemId = inventTable.ItemId;
    inventTableModule.ModuleType = ModuleInventPurchSales::Invent;
    inventTableModule.insert();

    inventTableModule.clear();
    inventTableModule.initValue();
    inventTableModule.ItemId = inventTable.ItemId;
    inventTableModule.ModuleType = ModuleInventPurchSales::Purch;
    inventTableModule.insert();

    inventTableModule.clear();
    inventTableModule.initValue();
    inventTableModule.ItemId = inventTable.ItemId;
    inventTableModule.ModuleType = ModuleInventPurchSales::Sales;
    inventTableModule.insert();

//Inventory model group
    inventModelGroupItem.clear();
    inventModelGroupItem.initValue();
    inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
    inventModelGroupItem.ItemId         = inventTable.ItemId;
    inventModelGroupItem.ModelGroupId   = "FIFO";
    inventModelGroupItem.ModelGroupDataAreaId = curext();
    inventModelGroupItem.insert();

//Item group
    inventItemGroupItem.clear();
    inventItemGroupItem.initValue();
    inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
    inventItemGroupItem.ItemId         = inventTable.ItemId;
    inventItemGroupItem.ItemGroupId    = "Sevices";
    inventItemGroupItem.ItemGroupDataAreaId = curext();
    inventItemGroupItem.insert();

//Create inventItemLocation
    InventItemLocation::createDefault(inventTable.ItemId);

// Creates a new item default order type for the product that is released.
    inventItemSetupSupplyType.clear();
    inventItemSetupSupplyType.initValue();
    inventItemSetupSupplyType.ItemId = inventTable.ItemId;
    inventItemSetupSupplyType.ItemDataAreaId = inventTable.DataAreaId;
    inventItemSetupSupplyType.insert();

//create relationship tables to dimension groups.
    ecoResStorageDimensionGroupProduct  = EcoResStorageDimensionGroupProduct::findByProduct(ecoResProduct.RecId);
    ecoResTrackingDimensionGroupProduct = EcoResTrackingDimensionGroupProduct::findByProduct(ecoResProduct.RecId);

// mandatory storage dimension group for the product
    if (ecoResStorageDimensionGroupProduct.RecId)
    {
        ecoResStorageDimensionGroupItem.clear();
        ecoResStorageDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
        ecoResStorageDimensionGroupItem.ItemId = inventTable.ItemId;
        ecoResStorageDimensionGroupItem.StorageDimensionGroup = ecoResStorageDimensionGroupProduct.StorageDimensionGroup;
        ecoResStorageDimensionGroupItem.insert();
    }
 // mandatory tracking dimension group for the product
    if (ecoResTrackingDimensionGroupProduct.RecId)
    {
        ecoResTrackingDimensionGroupItem.clear();
        ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
        ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
        ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
        ecoResTrackingDimensionGroupItem.insert();
    }
    info(strfmt("Product successfully released to UsMf legal entity"));
}

Sales Order Export to Excel Using X++

void clicked()
{
    #AviFiles
    SysOperationProgress       progress = new SysOperationProgress();
    SysExcelApplication        sysExcelApplication;
    SysExcelWorkbook           sysExcelWorkbook;
    SysExcelWorkbooks          sysExcelWorkbooks;
    SysExcelWorksheets         sysExcelWorksheets;
    SysExcelWorksheet          sysExcelWorksheet;
    SysExcelCell               sysExcelCell;
    SysExcelCells              sysExcelCells;
    SysExcelStyles             sysExcelStyles;
    SysExcelStyle              sysExcelStyle;
    SysExcelFont               sysExcelFont;


    SalesTable                 salesTable1;
    SalesLine                  salesLine1;
    InventDim                  inventDim1;
    InventTable                inventTable;
    CustTable                  custTable;
    DirPartyTable              dirPartyTable;
    int                        row;

   sysExcelApplication     = sysExcelApplication::construct();
   sysExcelWorkbooks       = sysExcelApplication.workbooks();
   sysExcelWorkbook        = sysExcelWorkbooks.add();
   sysExcelWorksheets      = sysExcelWorkbook.worksheets();
   sysExcelWorksheet       = sysExcelWorksheets.itemFromNum(1);
   sysExcelCells           = sysExcelWorksheet.cells();

   sysExcelStyles          = sysExcelWorkBook.styles();
   sysExcelStyle           = sysExcelStyles.add("Header");
   sysExcelFont            = sysExcelStyle.font();
   sysExcelFont.bold(true);
   sysExcelFont.color(WINapi::RGB2int(251,0,0));

   sysExcelCells .range('A:A').numberFormat('@');
   sysExcelCell= sysExcelCells.item(1,1);
   sysExcelCell.value("SalesOrder");
   sysExcelCell = sysExcelCells.item(1,2);
   sysExcelCell.value("Customer Account");
   sysExcelCell= sysExcelCells.item(1,3);
   sysExcelCell.value("Name");
   sysExcelCell= sysExcelCells.item(1,4);
   sysExcelCell.value("Customer Group");
   sysExcelCell= sysExcelCells.item(1,5);
   sysExcelCell.value("Currency");
   sysExcelCell= sysExcelCells.item(1,6);
   sysExcelCell.value("Item number");
   sysExcelCell= sysExcelCells.item(1,7);
   sysExcelCell.value("Product name");
   sysExcelCell= sysExcelCells.item(1,8);
   sysExcelCell.value("Quantity");
   sysExcelCell= sysExcelCells.item(1,9);
   sysExcelCell.value("Unit Price");
   sysExcelCell= sysExcelCells.item(1,10);
   sysExcelCell.value("site");
   sysExcelCell= sysExcelCells.item(1,11);
   sysExcelCell.value("Warehouse");
   sysExcelCell= sysExcelCells.item(1,12);
   sysExcelCell.value("Delivery name");
   sysExcelCell= sysExcelCells.item(1,13);
   sysExcelCell.value("Delivery address");


     row = 1;
     select salesTable1 join salesLine1 join inventDim1 where  salesTable1.SalesId == SalesTable_SalesId.valueStr()
                                                             && salesLine1.SalesId == salesTable1.SalesId
                                                             && inventDim1.inventDimId ==  salesLine1.InventDimId;
                                                            // && inventTable.ItemId == salesLine1.ItemId
        {
             progress.setCaption("Export To Excel in progress...");
             progress.setAnimation(#AviUpdate);
             progress.setText(strfmt("creating line for Item %1", row));
             row++;

                sysExcelCell         = sysExcelCells.item(row , 1);
                sysExcelCell.value(salesTable1.SalesId);
                sysExcelCell          = sysExcelCells.item(row,2);
                sysExcelCell.value(salesTable1.CustAccount);
                sysExcelCell         = sysExcelCells.item(row , 3);
                sysExcelCell.value(salesTable1.SalesName);
                sysExcelCell         = sysExcelCells.item(row , 4);
                sysExcelCell.value(salesTable1.CustGroup);
                sysExcelCell         = sysExcelCells.item(row , 5);
                sysexcelcell.value(salesTable1.CurrencyCode);
                sysExcelCell         = sysExcelCells.item(row , 6);
                sysExcelCell.value(salesLine1.ItemId);
                sysExcelCell         = sysExcelCells.item(row , 7);
                sysExcelCell.value(salesLine1.itemName());
                sysExcelCell         = sysExcelCells.item(row , 8);
                sysExcelCell.value(salesLine1.SalesQty);
                sysExcelCell         = sysExcelCells.item(row , 9);
                sysExcelCell.value(salesLine1.SalesPrice);
                sysExcelCell         = sysExcelCells.item(row , 10);
                sysExcelCell.value(inventDim1.InventSiteId);
                sysExcelCell         = sysExcelCells.item(row , 11);
                sysExcelCell.value(inventDim1.InventLocationId);
                sysExcelCell         = sysExcelCells.item(row , 12);
                sysExcelCell.value(salesLine1.DeliveryName);
                sysExcelCell         = sysExcelCells.item(row , 13);
                sysExcelCell.value(salesLine1.deliveryAddress().Address);

    }
    sysExcelApplication.visible(true);
    super();
}

Export Vendor To Excel Using X++

void clicked()
{
    SysExcelApplication             application;
    SysExcelWorkbooks               workbooks;
    SysExcelWorkbook                workbook;
    SysExcelWorksheets              worksheets;
    SysExcelWorksheet               worksheet;
    SysExcelCells                   cells;
    SysExcelCell                    cell;
    SysExcelFont                    font;
    int                             row;
    VendTable                       vendTable1;
    DirPartyTable                   dirPartyTable1;
    LogisticsElectronicAddress      logistics;
    LogisticsPostalAddress          postalAddress;
    LogisticsLocation               location;


    // intializing classes to export excel
    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    workbook = workbooks.add();
    worksheets = workbook.worksheets();
    worksheet = worksheets.itemFromNum(1);
    cells = worksheet.cells();
    cells.range('A:A').numberFormat('@');

    // Setting Header values
    cell = cells.item(1, 1);
    cell.value('Vendor Account');
    font = cell.font();
    font.bold(true);

    cell = cells.item(1, 2);
    cell.value('Vendor Name');
    font = cell.font();
    font.bold(true);
    row = 1;
     cell = cells.item(1, 3);
    cell.value('Vendor Group');
    font = cell.font();
    font.bold(true);

    cell = cells.item(1, 4);
    cell.value('Site');
    font = cell.font();
    font.bold(true);
    row = 1;

    cell = cells.item(1, 5);
    cell.value('WareHouse');
    font = cell.font();
    font.bold(true);

    cell = cells.item(1, 6);
    cell.value('Currency');
    font = cell.font();
    font.bold(true);
    row = 1;

    cell = cells.item(1, 7);
    cell.value('Terms Of payment');
    font = cell.font();
    font.bold(true);

    cell = cells.item(1, 8);
    cell.value('Methods Of Payment');
    font = cell.font();
    font.bold(true);
    row = 1;
    cell = cells.item(1, 9);
    cell.value('Address');
    font = cell.font();
    font.bold(true);
    row = 1;

    cell = cells.item(1, 10);
    cell.value('Description');
    font = cell.font();
    font.bold(true);
    row = 1;

    // inserting data row wise selecting single record----

    select vendTable1 where vendTable1.AccountNum == Identification_AccountNum.valueStr()
                join dirPartyTable1  where   vendTable1.Party == dirPartyTable1.RecId
                        join  location  where  Location.RecId == dirPartyTable1.PrimaryAddressLocation
                                join postalAddress where   postalAddress.Location == location.RecId;
     // inserting data row wise selecting Multiple record----
    //while select vendTable1
                        //join   dirPartyTable1  where   vendTable1.Party == dirPartyTable1.RecId
                            //join    location  where  Location.RecId == dirPartyTable1.PrimaryAddressLocation
                                //join postalAddress where   postalAddress.Location == location.RecId
    {
        row++;
        cell = cells.item(row, 1);
        cell.value(vendTable1.AccountNum);
        cell = cells.item(row, 2);
        cell.value(dirPartyTable1.Name);
        cell = cells.item(row, 3);
        cell.value(vendTable1.VendGroup);
        cell = cells.item(row, 4);
        cell.value(vendTable1.InventSiteId);
        cell = cells.item(row, 5);
        cell.value(vendTable1.InventLocation);
        cell = cells.item(row, 6);
        cell.value(vendTable1.Currency);
        cell = cells.item(row, 7);
        cell.value(vendTable1.PaymTermId);
        cell = cells.item(row, 8);
        cell.value(vendTable1.PaymMode);
        cell = cells.item(row, 9);
        cell.value(postalAddress.Address);
        cell = cells.item(row, 10);
        cell.value(Location.Description);
    }


    application.visible(true);
    super();
}

Vendor Import ( Insert/Update ) from Excel using X++

void clicked()
{
    SysExcelApplication         application;
    SysExcelWorkbooks           workbooks;
    SysExcelWorkbook            workbook;
    SysExcelWorksheets          worksheets;
    SysExcelWorksheet           worksheet;
    SysExcelCells               cells;
    COMVariantType              type1;
    Name                        name;
    FileName                    filename;
    VendTable                   vendorTable;
    DirPartyTable               dirPartyTable1;
    LogisticsPostalAddress      postalAddress;
    LogisticsLocation           location;
    LogisticsLocationRole       locationRole;
    DirPartyLocationRole        partyLocationRole;
    DirPartyLocation            partyLocation;


    int                         row;
    AccountNum                  VendAccount;
    str                         vendnameName,vendGroup,currency;
    str                         site,warehouse,payterid,paymode;
    str  100                    Address,Description;
    Dialog                      _dialog;
    DialogField                 _file;

     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("Please select the file to load");
    _dialog.addText("Select file:");
    _file = _dialog.addField(ExtendedTypeStr("FilenameOpen"));
    _dialog.run();

    application = SysExcelApplication::construct();
    workbooks = application.workbooks();
    filename = _file.value();
    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();
    row = 1;
    do
    {
        row++;
        VendAccount     = cells.item(row, 1).value().bStr();
        vendnameName    = cells.item(row, 2).value().bStr();
        vendGroup       = COMVariant2Str(cells.item(row, 3).value());
        site            = COMVariant2Str(cells.item(row, 4).value());
        warehouse       = COMVariant2Str(cells.item(row, 5).value());
        currency        = cells.item(row, 6).value().bStr();
        payterid        = cells.item(row, 7).value().bStr();
        paymode         = cells.item(row, 8).value().bStr();
        Address         = cells.item(row, 9).value().bStr();
        Description     = cells.item(row, 10).value().bStr();

        select vendorTable where vendorTable.AccountNum == VendAccount;


        if(vendorTable.AccountNum == VendAccount)
        {
            select forupdate dirPartyTable1 join vendorTable  where vendorTable.AccountNum == cells.item(row, 1).value().bStr()
                                                                   && dirPartyTable1.RecId == vendorTable.Party;
            if(dirPartyTable1.RecId)
            {
                ttsBegin;
                dirPartyTable1.Name        = vendnameName;
                dirPartyTable1.update();
                ttsCommit;
            }
            select forupdate postalAddress join location join dirPartyTable1 join  vendorTable where vendorTable.AccountNum == cells.item(row, 1).value().bStr()
                                                                                                        && vendorTable.Party == dirPartyTable1.RecId
                                                                                                        && Location.RecId == dirPartyTable1.PrimaryAddressLocation
                                                                                                        && postalAddress.Location == location.RecId;


            if(postalAddress.RecId)
            {
                ttsBegin;
                postalAddress.Address      = Address;
                postalAddress.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
                postalAddress.update();
                ttsCommit;
            }
             if(Location.RecId)
              {
                   ttsBegin;
                   Location.Description       = Description;
                   Location.selectForUpdate(true);
                   Location.update();
                   ttsCommit;
              }
            vendorTable.VendGroup      = vendGroup;
            vendorTable.Currency       = currency;
            vendorTable.InventSiteId   = site;
            vendorTable.InventLocation = warehouse;
            vendorTable.PaymTermId     = payterid;
            vendorTable.PaymMode       = paymode;
            ttsBegin;
            vendorTable.selectForUpdate(true);
            vendorTable.update();
            ttsCommit;
            info("Updated Successfully");
        }
        else
        {
            dirPartyTable1.clear();
            dirPartyTable1.initValue();
            dirPartyTable1.Name             = vendnameName;
            dirPartyTable1.insert();

            location.clear();
            location.initValue();
            location.Description            = Description;
            location.IsPostalAddress        = NoYes::Yes;
            location.insert();

            postalAddress.clear();
            postalAddress.initValue();
            postalAddress.Address           = Address;
            postalAddress.CountryRegionId   = "IND";
            postalAddress.Street            ="Kukatpally";
            postalAddress.State             ="Telanaga";
            postalAddress.Location          = location.RecId;
            postalAddress.insert();

            partyLocation.clear();
            partyLocation.initValue();
            partyLocation.Party             = dirPartyTable1.RecId;
            partyLocation.Location          = location.RecId;
            partyLocation.IsPostalAddress   = NoYes::Yes;
            partyLocation.IsPrimary         = NoYes::Yes;
            partyLocation.insert();

            partyLocationRole.clear();
            partyLocationRole.initValue();
            partyLocationRole.LocationRole  = LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Business).RecId;
            partyLocationRole.PartyLocation = partyLocation.RecId;
            partyLocationRole.insert();

            vendorTable.AccountNum     = VendAccount;
            vendorTable.VendGroup      = vendGroup;
            vendorTable.Currency       = currency;
            vendorTable.InventSiteId   = site;
            vendorTable.InventLocation = warehouse;
            vendorTable.PaymTermId     = payterid;
            vendorTable.PaymMode       = paymode;
            vendorTable.Party          = dirPartyTable1.RecId;
            vendorTable.insert();
            info("Record is inserted");
        }
            type1 = cells.item(row+1, 1).value().variantType();

    }
    while (type1 != COMVariantType::VT_EMPTY);

    application.quit();
    super();
}

Wednesday 26 April 2017

Sales Order Import ( insert/Update ) from excel Using X++

public void DataImport()
{
    InventDim                       inventDim;
    InventTable                     inventTable;
    EcoResProduct                   ecoResProduct;
    EcoResProductSubtype            ecoResProductSubtype;

    Na_Creatingproductitem    productitem = new Na_Creatingproductitem();


    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 "";
        }


        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();
        row = 1;


        do
        {
            row++;

            salesorderid    = cells.item(row, 1).value().bStr();
            custAccount     = cells.item(row, 2).value().bStr();
            custName        = cells.item(row, 3).value().bStr();
            custGroup       = COMVariant2Str(cells.item(row, 4).value());
            currency        = cells.item(row, 5).value().bStr();
            itemId          = COMVariant2Str(cells.item(row, 6).value());
            itemName        = cells.item(row, 7).value().bStr();
            searchname      = cells.item(row, 8).value().bStr();
            salesqty        = any2int(cells.item(row,9).value().toString());
            unitprice       = int2str(real2int(cells.item(row,10).value().double()));
            site            = int2str(real2int(cells.item(row,11).value().double()));
            warehouse       = int2str(real2int(cells.item(row,12).value().double()));
            Deliveryname    = cells.item(row, 13).value().bStr();
            Address         = cells.item(row, 14).value().bStr();
            ProductSubtype  = cells.item(row, 15).value().bStr();
            productType     = cells.item(row, 16).value().bStr();

            select salestable where salestable.SalesId  == salesorderid;
            if(salestable.SalesId  == salesorderid &&  salestable.SalesStatus == SalesStatus::Backorder)
            {
                select forupdate dirPartyTable12 join custTab  where custTab.AccountNum == custAccount
                                                               && dirPartyTable12.RecId == custTab.Party;
                if(dirPartyTable12.RecId)
                {
                    ttsBegin;
                    dirPartyTable12.Name        = custName;
                    dirPartyTable12.update();
                    ttsCommit;
                }
                select forupdate postalAddress join location join dirPartyTable12 join  custTab where custTab.AccountNum == custAccount
                                                                                                && custTab.Party == dirPartyTable12.RecId
                                                                                                && Location.RecId == dirPartyTable12.PrimaryAddressLocation
                                                                                                && postalAddress.Location == location.RecId;

                if(postalAddress.RecId)
                {
                    ttsBegin;
                    postalAddress.Address      = Address;
                    postalAddress.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
                    postalAddress.update();
                    ttsCommit;
                }
                if(Location.RecId)
                {
                    ttsBegin;
                    Location.Description       = Deliveryname;
                    Location.selectForUpdate(true);
                    Location.update();
                    ttsCommit;
                }

                custTab.CustGroup       = custGroup;
                custTab.Currency        = currency;
                custTab.InventSiteId    = site;
                custTab.InventLocation  = warehouse;
                ttsBegin;
                custTab.selectForUpdate(true);
                custTab.update();
                ttsCommit;

                salestable.CustAccount      = custTab.AccountNum;
                salestable.SalesName        = dirPartyTable12.Name;
                salestable.CustGroup        = custTab.CustGroup;
                salestable.CurrencyCode     = custTab.Currency;
                salestable.InventSiteId     = site;
                salestable.InventLocationId = warehouse;
                salestable.SalesGroup       = "01";
                salesTable.initValue(SalesType::Sales);
                salesTable.initFromCustTable();
                ttsBegin;
                salesTable.selectForUpdate(true);
                salestable.update();
                ttsCommit;

                salesLine.clear();
                salesLine.initValue(salesTable.SalesType);
                salesLine.initFromSalesTable(salesTable);
                salesLine.ItemId = itemId;
                salesLine.InventDimId       = inventDim.inventDimId;
                salesLine.SalesQty          = salesqty;
                salesLine.SalesUnit         = unitprice;
                ttsBegin;
                salesLine.selectForUpdate(true);
                salesLine.update();
                ttsCommit;

                info("Updated Successfully");
            }
        else
        {
         //num = NumberSeq::newGetNum(SalesParameters::numRefSalesId());
        //salesTable.SalesId = num.num();
            select custTab where custTab.AccountNum == custAccount;
            if( custTab.AccountNum == custAccount)
            {
                info("Record Is updated");
            }
            else
            {
                ttsBegin;
                dirPartyTable12.clear();
                dirPartyTable12.initValue();
                dirPartyTable12.Name             = custName;
                dirPartyTable12.insert();

                location.clear();
                location.initValue();
                location.Description            = Deliveryname;
                location.IsPostalAddress        = NoYes::Yes;
                location.insert();

                postalAddress.clear();
                postalAddress.initValue();

                postalAddress.Address           = Address;
                postalAddress.CountryRegionId   = "IND";
                postalAddress.Street            ="Kukatpally";
                postalAddress.State             ="Telanaga";
                postalAddress.Location          = location.RecId;
                postalAddress.insert();

                partyLocation.clear();
                partyLocation.initValue();
                partyLocation.Party             = dirPartyTable12.RecId;
                partyLocation.Location          = location.RecId;
                partyLocation.IsPostalAddress   = NoYes::Yes;
                partyLocation.IsPrimary         = NoYes::Yes;
                partyLocation.insert();

                partyLocationRole.clear();
                partyLocationRole.initValue();
                partyLocationRole.LocationRole  = LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Delivery).RecId;
                partyLocationRole.PartyLocation = partyLocation.RecId;
                partyLocationRole.insert();

                custTab.clear();
                custTab.initValue();
                custTab.AccountNum              = custAccount;
                custTab.CustGroup               = custGroup;
                custTab.Currency                = currency;
                custTab.InventSiteId            = site;
                custTab.InventLocation          = warehouse;
                custTab.Party                   = dirPartyTable12.RecId;
                custTab.insert();

                salestable.SalesId              = salesorderid;
                salestable.CustAccount          = custTab.AccountNum;
                salestable.SalesName            = dirPartyTable12.Name;
                salestable.CustGroup            = custTab.CustGroup;
                salestable.CurrencyCode         = custTab.Currency;
                salestable.InventSiteId         = site;
                salestable.InventLocationId     = warehouse;
                salestable.SalesGroup           = "01";
                salesTable.initValue(SalesType::Sales);
                salesTable.initFromCustTable();
                salesTable.insert();

                select inventTable where inventTable.ItemId == itemId;
                if(!inventTable.RecId)
                {
                    if(ecoResProductSubtype::ProductMaster == str2enum(ecoResProductSubtype,ProductSubtype))
                    {
                        this.Create_ProductMaster(itemId,itemName,searchname,name,productType);//to call the Class item master method.
                    }
                    else if(ecoResProductSubtype::Product == str2enum(ecoResProductSubtype,ProductSubtype))
                    {
                        this.Create_Product(itemId,itemName,searchname,name,productType);//to call the Class Create_Product method.
                    }
                    else
                    {
                        Box::info("Record not Exist");
                    }
                    salesLine.clear();
                    salesLine.initValue(salesTable.SalesType);
                    salesLine.initFromSalesTable(salesTable);
                    salesLine.SalesId = salestable.SalesId ;
                    salesLine.ItemId = itemId;
                    salesLine.initFromInventTable(InventTable::find(itemId));
                    salesLine.InventDimId  = InventDim::findOrCreate(inventDim).inventDimId;
                    salesLine.InventDimId  = inventDim.inventDimId;
                    salesLine.SalesQty     = salesqty;
                    salesLine.SalesUnit    = unitprice;
                    SalesLine.DeliveryName = location.Description;
                    salesLine.createLine(true,  true, true, true,true,true );
                    info("Record Is Inserted");
                }
                else
                {
                    salesLine.clear();
                    salesLine.initValue(salesTable.SalesType);
                    salesLine.initFromSalesTable(salesTable);
                    salesLine.SalesId = salestable.SalesId ;
                    salesLine.ItemId  = itemId;
                    salesLine.initFromInventTable(InventTable::find(itemId));
                    salesLine.InventDimId  = InventDim::findOrCreate(inventDim).inventDimId;
                    salesLine.InventDimId  = inventDim.inventDimId;
                    salesLine.SalesQty     = salesqty;
                    salesLine.SalesUnit    = unitprice;
                    SalesLine.DeliveryName = location.Description;
                    salesLine.createLine(true,  true, true, true,true,true );
                    info("Record Is Inserted");
                }
                ttsCommit;
            }
        }
            type = cells.item(row+1, 1).value().variantType();
     }
            while (type != COMVariantType::VT_EMPTY);
            workbooks.close();
            application.quit();
            info("Done!");
            //super();
}