Tuesday, 29 December 2015

 Basic Select Statements 

static void CON_Select_Staements(Args _args)
{
    CustTable       custTable;
    CustTrans       custTrans;
    //container       con = ['DAT','RURT'];
    ;
    select sum(AmountMST) from custTrans group by custTrans.AccountNum ;
    print custTrans.AmountMST,custTrans.AccountNum;
    pause;
 
    /*while select reverse firstOnly10   custTable
    {
        info(strFmt('%1',custTable.AccountNum));
    }*/
 
    /*while select custTable
    {
     
    info('%1',custTable.AccountNum);
    }*/
    /*changeCompany('RURT')
    {
        custTable = null;
        while select custTable
        {
            info(strFmt("%1 - %2",custTable.AccountNum,custtable.CustGroup));
        }
    }  
    changeCompany('INMF')
    {
        custTable = null;
        while select custTable
        {
            info(strFmt("%1 - %2",custTable.AccountNum,custtable.CustGroup));
        }
    } */
     
         
 
    /*while select custTable notexists  join custTrans
        where custTable.AccountNum == custTrans.AccountNum
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custtrans.AmountMST));
    }*/
 
     /* while select custTable exists  join custTrans
        where custTable.AccountNum == custTrans.AccountNum
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custtrans.AmountMST));
    }*/
 
    /*while select custTable outer join custTrans
        where custTable.AccountNum == custTrans.AccountNum
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custtrans.AmountMST));
    }*/
 
    /*while select custTable join custTrans
        where custTable.AccountNum == custTrans.AccountNum
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custtrans.AmountMST));
    }*/
         
 
 
    /*while select AccountNum,CustGroup from custTable
        index hint accountidx
     
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custTable.CustGroup));
    }*/
 
    /*while select custTable
        where custTable.CustGroup=="10"
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custTable.CustGroup));
    } */
     
 
    /*while select AccountNum,CustGroup from custTable
        index party
    {
        info(strFmt("%1 - %2",custTable.AccountNum,custTable.CustGroup));
    }*/
     
    /*while select custTable
        order by AccountNum asc //desc
    {
        info(strFmt("%1",custTable.AccountNum));
    }*/
 
    /*while select minOf(AmountMST) from custTrans
        where custTrans.AccountNum == "US-002"
        //group by AccountNum
    {
        info(strFmt("%1 - %2",custTrans.AccountNum,custTrans.AmountMST));
    }*/
 
    /*while select maxOf(AmountMST) from custTrans
        group by AccountNum
    {
        info(strFmt("%1 - %2",custTrans.AccountNum,custTrans.AmountMST));
    }*/
    /*while select count(RecId) from custTrans where custTrans.AccountNum=="US-006"
    {
        info(strFmt("%1",custTrans.RecId,custTrans.AmountMST));
    }*/    
 
    /*while select avg(AmountMST) from custTrans
        group by AccountNum
    {
        info(strFmt("%1,' ',%2",custTrans.AccountNum,custTrans.AmountMST));
    }*/
 
    /*while select sum(AmountMST) from custTrans
        group by AccountNum
    {
        info(strFmt("%1,' ',%2",custTrans.AccountNum,custTrans.AmountMST));
    }*/
 
 
    /*ttsBegin;

    while select forUpdate custTable
        where custTable.AccountNum == "drtdthyugf"
    {
        custTable.AccountNum ='CH_006';
        custTable.update();
        info("update");
    }
    ttsCommit;*/

    /*while select firstOnly10 custTrans
    {
        info(strFmt("%1,%2",custTrans.AccountNum,custTrans.AmountMST));
    }*/

    /*while select firstFast custTable
    {
        info(strFmt("%1,%2",custTable.name(),custTable.nameAlias()));
    }*/

    /*while select firstOnly custTable
    {
        info(strFmt("%1,%2",custTable.name(),custTable.nameAlias()));
    }*/

    /*select firstOnly custTable;
    info(strFmt("%1,%2",custTable.CustGroup,custTable.RecId));*/

    /*select reverse custTable;
    info(strFmt("%1,%2",custTable.AccountNum,custTable.name()));*/

    /*select crossCompany:con custTable;
    info(strFmt("%1,%2",custTable.AccountNum,custTable.Currency));*/

    /*select * from custTable;
    info(strFmt("%1,%2",custTable.AccountNum,custTable.Currency));*/

   /*while select CustAccount from salesTable
        group by SalesId,CustAccount
        where salesTable.CustAccount == "us-001"
        && salesTable.SalesStatus   == SalesStatus::Backorder
        join sum(LineAmount),SalesId from salesLine      
        where salesLine.SalesId  == salesTable.SalesId
   {
    info(strFmt("%1--%2--%3",salesTable.CustAccount,salesTable.SalesId,SalesLine.LineAmount));
       
    }*/

/*while select ct group by ct.CustGroup  join sum(AmountMST) from ctr
        where ct.AccountNum == ctr.AccountNum
        {
        info(strFmt("%1   %2",ct.CustGroup,ctr.AmountMST));
       }*/

}

Monday, 14 December 2015

Import the ProductAndProductmaster Through x++
static void ImportProductAndProductmaster(Args _args)
{
    #AviFiles

    SysOperationProgress progress       = new SysOperationProgress();
    SysExcelApplication                 application;
    SysExcelWorkbooks                   workbooks;
    SysExcelWorkbook                    workbook;
    SysExcelWorksheets                  worksheets;
    SysExcelWorksheet                   worksheet;
    SysExcelWorkSheet                   workSheetInventTableModule;
    SysExcelCells                       cellsInventTableModule;
    SysExcelCells                       cells;
    COMVariantType                      type;
    COMVariantType                      typeModule;
    EcoResProduct                       ecoResProduct;
    EcoResProductMaster                 ecoResProductMaster;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;
    EcoResProductMasterModelingPolicy   ecoResProductMasterModelingPolicy;
    EcoResDistinctProduct               ecoResDistinctProduct;
    EcoResColor                         ecoResColor;
    EcoResProductMasterColor            ecoResProductMasterColor;
    EcoResProductVariantColor           ecoResProductVariantColor;
    EcoResColorName                     ecoResColorName;
    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration;
    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;
    //EcoResStorageDimensionGroupName     ecoResStorageDimensionGroupName;
    EcoResProductDimensionGroupName     ecoResProductDimensionGroupName;
    EcoResStorageDimensionGroupName         storageDimensionGroupName;
    EcoResTrackingDimensionGroupName        trackingDimensionGroupName;
    EcoResProductDimensionGroupName         productDimensionGroupName;
    UnitOfMeasureSymbol                     unitOfMeasureSymbol1,unitOfMeasureSymbol2,unitOfMeasureSymbol3;
    TaxItemGroup                            taxItemGroup1,taxItemGroup2;
    ItemProdGroupId                         prodGroupId;
    EcoResItemColorName                     itemColorName;
    ItemBuyerGroupId                        buyerGroupId;
    IntrastatItemCodeId                     intrastatItemCodeId;
    ItemOrigCountryRegionId                 countryRegionId;
    InventNumGroupId                        inventNumGroupId;
    PdsLeadTimeAdvice                       pdsLeadTimeAdvice;
    PmfProductType                          pmfProductType;
    ReqGroupId                              reqGroupId;
    InventTable                         inventTable;
    InventTableModule                   inventTableModule;
    InventItemSetupSupplyType           inventItemSetupSupplyType;
    EcoResStorageDimensionGroupItem     ecoResStorageDimensionGroupItem;
    EcoResTrackingDimensionGroupItem    ecoResTrackingDimensionGroupItem;
    InventModelGroupItem                inventModelGroupItem;
    InventItemGroupItem                 inventItemGroupItem;
    InventDim                           inventDim;
    InventDimCombination                inventDimCombination;
    EcoResCategory                      ecoResCategory;
    EcoResProductSubtype                productSubtype;
    EcoResProductType                                   productType;
    EcoResVariantConfigurationTechnologyType            ecoResVariantConfigurationTechnologyType;
    EcoResProductDimensionGroup                         ecoResProductDimensionGroup;
    //PmfProductType                                      pmfProductType;
    EcoResStorageDimensionGroup                         ecoResStorageDimensionGroup;
    EcoResEcoResProduct_Product_Master      productMaster;
    EcoResEcoResProduct_Product_Distinct    distMaster;
    EcoResProductDisplayProductNumber       productNumber;
    EcoResEcoResProduct                     ecoResProd;
    ItemId                                  itemid;
    RecId                                   recid;
    Name                                    name;
    EcoResProductSearchName                 searchName;
    EcoResCategoryName                      categoryName;
    InventModelGroupId                      inventModelGroupId;
    ItemGroupId                             itemGroupId;
    EcoResStorageDimensionGroupRecId        storageDimensionGroupRecId;
  //  TrackingDimensionGroup                  trackingDimensionGroup;
    UnitOfMeasureSymbol                     unitOfMeasureSymbol;
    boolean                                     isMaster = false;
    container                               Item1, offsetaccount1;
    str                                     ProductDimensionGroup,StorageDimensionGroup,TrackingDimensionGroup;
    Struct                                  struct = new Struct();
    container                               ledgerDimension;
    DimensionDefault DimensionDefault;
    int row = 1;
    FileIoPermission perm;
    #define.Filename(@'D:\Released Product.xlsx')
    #define.FileMode('W')

    ;
    perm = new FileIOPermission(#FileName, #FileMode);

    perm.assert();

    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();
    progress.setAnimation(#AviTransfer);

    try

    {

        ttsbegin;

        do

        {

            row++;

            if (row >= 1)

            {

                productType                 = str2enum(productType, any2str(cells.item(row, 1).value().bStr()));

                productSubtype              = str2enum(productSubtype, any2str(cells.item(row, 2).value().bStr()));

                productNumber               = any2str(cells.item(row, 3).value().bStr());

                itemid                      = any2str(cells.item(row, 4).value().bStr());

                name                        = any2str(cells.item(row, 5).value().bStr());
                SearchName                  = any2str(cells.item(row, 6).value().bStr());
                categoryName                = any2str(cells.item(row, 7).value().bStr());
                inventModelGroupId          = any2str(cells.item(row, 8).value().bStr());
                itemGroupId                 = any2str(cells.item(row, 9).value().bStr());
                storageDimensionGroupName   = any2str(cells.item(row, 10).value().bStr());
                trackingDimensionGroupName  = any2str(cells.item(row, 11).value().bStr());
                productDimensionGroupName   = any2str(cells.item(row, 12).value().bStr());
                unitOfMeasureSymbol1        = any2str(cells.item(row, 13).value().bStr());
                unitOfMeasureSymbol2        = any2str(cells.item(row, 14).value().bStr());
                unitOfMeasureSymbol3        = any2str(cells.item(row, 15).value().bStr());
                taxItemGroup1               = any2str(cells.item(row, 16).value().bStr());
                taxItemGroup2               = any2str(cells.item(row, 17).value().bStr());
                prodGroupId                 = any2str(cells.item(row, 18).value().bStr());
                itemColorName               = any2str(cells.item(row, 21).value().bStr());
                buyerGroupId                = any2str(cells.item(row, 22).value().bStr());
                intrastatItemCodeId         = any2str(cells.item(row, 26).value().bStr());
                countryRegionId             = any2str(cells.item(row, 27).value().bStr());
                inventNumGroupId            = any2str(cells.item(row, 28).value().bStr());
                pdsLeadTimeAdvice           = any2int(cells.item(row, 29).value().bStr());
                pmfProductType              = str2enum(pmfProductType, any2str(cells.item(row, 30).value().bStr()));
                reqGroupId                  = any2str(cells.item(row, 32).value().bStr());


                if(productType == EcoResProductType::Item || productType == EcoResProductType::Service)

                {

                    if(productSubtype == EcoResProductSubtype::Product)

                    {
                        ecoResDistinctProduct.clear();
                        ecoResDistinctProduct.initValue();
                        ecoResDistinctProduct.ProductType = EcoResProductType::Item;
                        ecoResDistinctProduct.DisplayProductNumber = productNumber;
                        ecoResDistinctProduct.SearchName = Name;
                        if (ecoResDistinctProduct.validateWrite())
                        {
                            ecoResDistinctProduct.insert();
                            ecoResProductIdentifier.clear();
                            ecoResProductIdentifier.initValue();
                            ecoResProductIdentifier.ProductNumber = productNumber;
                            ecoResProductIdentifier.Product = ecoResDistinctProduct.RecId;
                            ecoResProductIdentifier.insert();

                            //Storage dimension group
                            ecoResStorageDimensionGroupProduct.clear();
                            ecoResStorageDimensionGroupProduct.initValue();
                            ecoResStorageDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                            ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(storageDimensionGroupName).RecId;
                            if (ecoResStorageDimensionGroupProduct.validateWrite())
                            {
                                ecoResStorageDimensionGroupProduct.insert();
                            }
                                //Tracking dimension group
                            ecoResTrackingDimensionGroupProduct.clear();
                            ecoResTrackingDimensionGroupProduct.initValue();
                            ecoResTrackingDimensionGroupProduct.Product = ecoResDistinctProduct.RecId;
                            ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(trackingDimensionGroupName).RecId;
                            if (ecoResTrackingDimensionGroupProduct.validateWrite())
                            {
                                ecoResTrackingDimensionGroupProduct.insert();
                            }
                            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProduct.RecId, Name,Name);
                            //Released product
                            inventTable.clear();
                            inventTable.initValue();
                            inventTable.initFromEcoResProduct(ecoResDistinctProduct);
                            inventTable.ItemId = itemid;
                            inventTable.NameAlias = Name;
                            inventTable.ItemBuyerGroupId                = buyerGroupId;
                            inventTable.ProdGroupId                     = prodGroupId;
                            inventTable.ReqGroupId                      = reqGroupId;
                            inventTable.PmfProductType                  = pmfProductType;
                            inventTable.OrigCountryRegionId             = countryRegionId;
                            inventTable.BatchNumGroupId                 = inventNumGroupId;
                            inventTable.StandardInventColorId           = itemColorName;
                            inventTable.Intracode                       = intrastatItemCodeId;
                            inventTable.PdsShelfAdvice                  = any2int(cells.item(row, 29).value().bStr());
                            //inventTable.editTMSInventEnabled = any2str(cells.item(row, 34).value().bStr());
                            if (inventTable.validateWrite())
                            {
                                inventTable.insert();
                                //Inventory model group
                                inventModelGroupItem.clear();
                                inventModelGroupItem.initValue();
                                inventModelGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                                inventModelGroupItem.ItemId = inventTable.ItemId;
                                inventModelGroupItem.ModelGroupId = inventModelGroupId;
                                inventModelGroupItem.ModelGroupDataAreaId = curext();
                                inventModelGroupItem.insert();
                                //Item group
                                inventItemGroupItem.clear();
                                inventItemGroupItem.initValue();
                                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                                inventItemGroupItem.ItemId = inventTable.ItemId;
                                inventItemGroupItem.ItemGroupId = itemGroupId;
                                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(ecoResDistinctProduct.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(ecoResDistinctProduct.RecId);
                                if (ecoResTrackingDimensionGroupProduct.RecId)
                                {
                                    ecoResTrackingDimensionGroupItem.clear();
                                    ecoResTrackingDimensionGroupItem.initValue();
                                    ecoResTrackingDimensionGroupItem.ItemDataAreaId = inventTable.DataAreaId;
                                    ecoResTrackingDimensionGroupItem.ItemId = inventTable.ItemId;
                                    ecoResTrackingDimensionGroupItem.TrackingDimensionGroup = ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup;
                                    ecoResTrackingDimensionGroupItem.insert();
                                }
                            }
                        }
                    }
                    else if(productSubtype == EcoResProductSubtype::ProductMaster || productSubtype == EcoResProductSubtype::ProductVariant)
                    {
                        ecoResProductMaster.clear();
                        ecoResProductMaster.initValue();

                        ecoResProductMaster.ProductType = EcoResProductType::Item;
                        ecoResProductMaster.DisplayProductNumber = productNumber;
                        ecoResProductMaster.SearchName = Name;
                        ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;
                        if (ecoResProductMaster.validateWrite())
                        {
                            ecoResProductMaster.insert();

                            ecoResProductIdentifier.clear();
                            ecoResProductIdentifier.initValue();

                            ecoResProductIdentifier.ProductNumber = productNumber;
                            ecoResProductIdentifier.Product = ecoResProductMaster.RecId;

                            ecoResProductIdentifier.insert();

                            //Product dimension group
                            ecoResProductDimensionGroupProduct.clear();
                            ecoResProductDimensionGroupProduct.initValue();
                            ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);

                            ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName(productDimensionGroupName).RecId;

                            if (ecoResProductDimensionGroupProduct.validateWrite())
                            {
                                ecoResProductDimensionGroupProduct.insert();
                            }
                             //Storage dimension group
                            ecoResStorageDimensionGroupProduct.clear();
                            ecoResStorageDimensionGroupProduct.initValue();
                            ecoResStorageDimensionGroupProduct.Product = ecoResProductMaster.RecId;
                            ecoResStorageDimensionGroupProduct.StorageDimensionGroup = EcoResStorageDimensionGroup::findByDimensionGroupName(storageDimensionGroupName).RecId;
                            if (ecoResStorageDimensionGroupProduct.validateWrite())
                            {
                                ecoResStorageDimensionGroupProduct.insert();
                            }
                                //Tracking dimension group
                            ecoResTrackingDimensionGroupProduct.clear();
                            ecoResTrackingDimensionGroupProduct.initValue();
                            ecoResTrackingDimensionGroupProduct.Product = ecoResProductMaster.RecId;
                            ecoResTrackingDimensionGroupProduct.TrackingDimensionGroup = EcoResTrackingDimensionGroup::findByDimensionGroupName(trackingDimensionGroupName).RecId;
                            if (ecoResTrackingDimensionGroupProduct.validateWrite())
                            {
                                ecoResTrackingDimensionGroupProduct.insert();
                            }
                            ecoResProductMasterModelingPolicy.clear();
                            ecoResProductMasterModelingPolicy.initValue();

                            ecoResProductMasterModelingPolicy.ProductMaster = ecoResProductMaster.RecId;

                            if (ecoResProductMasterModelingPolicy.validateWrite())
                            {
                                ecoResProductMasterModelingPolicy.insert();
                            }

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

                            //Color
                            ecoResColor = EcoResColor::findByName(itemColorName);
                            if(!ecoResColor)
                            {
                                ecoResColor.clear();
                                ecoResColor.initvalue();
                                ecoResColor.name = itemColorName;
                                ecoResColor.insert();
                            }
                            //Color assigned to product master
                            ecoResProductMasterColor.clear();
                            ecoResProductMasterColor.initValue();
                            ecoResProductMasterColor.Color = ecoResColor.RecId;
                            ecoResProductMasterColor.ColorProductDimensionAttribute =EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
                            ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;
                            ecoResProductMasterColor.insert();

                            ecoResDistinctProductVariant.clear();
                            ecoResDistinctProductVariant.initValue();
                            ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
                            ecoResProductMaster.productNumber(),
                            EcoResProductVariantDimValue::getDimensionValuesContainer("", "", itemColorName));
                            ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName + itemColorName/*ColorId*/;
                            ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
                            ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
                            ecoResDistinctProductVariant.insert();

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

                            //Released product
                            inventTable.clear();
                            inventTable.initValue();

                            inventTable.initFromEcoResProduct(ecoResProductMaster);

                            inventTable.ItemId = itemid;
                            inventTable.NameAlias = name;
                            inventTable.ItemBuyerGroupId                = buyerGroupId;
                            inventTable.ProdGroupId                     = prodGroupId;
                            inventTable.ReqGroupId                      = reqGroupId;
                            inventTable.PmfProductType                  = pmfProductType;
                            inventTable.OrigCountryRegionId             = countryRegionId;
                            inventTable.BatchNumGroupId                 = inventNumGroupId;
                            inventTable.StandardInventColorId           = itemColorName;
                            inventTable.Intracode                       = intrastatItemCodeId;
                            inventTable.PdsShelfAdvice                  = any2int(cells.item(row, 29).value().bStr());
                            if (inventTable.validateWrite())
                            {
                                inventTable.insert();

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

                                //Item group
                                inventItemGroupItem.clear();
                                inventItemGroupItem.initValue();
                                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                                inventItemGroupItem.ItemId = inventTable.ItemId;
                                inventItemGroupItem.ItemGroupId = itemGroupId;
                                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();
                                }
                                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();
                                }
                            }
                            inventDim.clear();
                            inventDim.InventColorId = itemColorName;/*ColorId*/
                            inventDim = InventDim::findOrCreate(inventDim);

                            //Released product variant
                            inventDimCombination.clear();
                            inventDimCombination.initValue();
                            inventDimCombination.DistinctProductVariant = ecoResDistinctProductVariant.RecId;
                            inventDimCombination.ItemId = inventTable.ItemId;
                            inventDimCombination.InventDimId = inventDim.InventDimId;
                            inventDimCombination.insert();


                        }
                    }
                }
            }
            type = cells.item(row+1, 1).value().variantType();


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

        ttscommit;
    }
    catch(Exception::Error)

    {

        workbooks.close();

        CodeAccessPermission::revertAssert();

        application.quit();

        ttsabort;

    }

    workbooks.close();

    CodeAccessPermission::revertAssert();

    application.quit();



}

CreatandReleaseProductMaster Through X++
static void CreatandReleaseProductMaster(Args _args)
{
    EcoResProductMaster                 ecoResProductMaster;
    EcoResProductIdentifier             ecoResProductIdentifier;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;
    EcoResProductMasterModelingPolicy   ecoResProductMasterModelingPolicy;

    EcoResStorageDimensionGroupProduct  ecoResStorageDimensionGroupProduct;
    EcoResTrackingDimensionGroupProduct ecoResTrackingDimensionGroupProduct;
   
    EcoResColor                         ecoResColor;
    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration;
    EcoResProductMasterColor            ecoResProductMasterColor;

    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;
    EcoResProductVariantColor           ecoResProductVariantColor;

    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 = "SCKRTesting";
        ecoResProductMaster.SearchName = "SCKRTesting";
        ecoResProductMaster.VariantConfigurationTechnology = EcoResVariantConfigurationTechnologyType::PredefinedVariants;

        if (ecoResProductMaster.validateWrite())
        {
            ecoResProductMaster.insert();

            ecoResProductIdentifier.clear();
            ecoResProductIdentifier.initValue();

            ecoResProductIdentifier.ProductNumber = "SCKRTesting";
            ecoResProductIdentifier.Product = ecoResProductMaster.RecId;

            ecoResProductIdentifier.insert();

            //Product dimension group
            ecoResProductDimensionGroupProduct.clear();
            ecoResProductDimensionGroupProduct.initValue();
            ecoResProductDimensionGroupProduct.initFromProduct(ecoResProductMaster);

            ecoResProductDimensionGroupProduct.ProductDimensionGroup = EcoResProductDimensionGroup::findByDimensionGroupName("Color").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("BatchSeria").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, "SCKRTesting", "SCKRTesting");

            //Color
            //ecoResConfiguration = EcoResConfiguration::findByName("STest-1");
            ecoResColor = EcoResColor::findByName("NA");
            if(!ecoResColor)
            {
                ecoResColor.clear();
                ecoResColor.initvalue();
                ecoResColor.name = "NA";
                ecoResColor.insert();
            }
            /*if (!ecoResConfiguration)
            {
                ecoResConfiguration.clear();
                ecoResConfiguration.initValue();
                ecoResConfiguration.Name = "STest-1";
                ecoResConfiguration.insert();
            }*/

            //Configuration assigned to product master
            ecoResProductMasterColor.clear();
            ecoResProductMasterColor.initValue();
            ecoResProductMasterColor.Color = ecoResColor.RecId;
            ecoResProductMasterColor.ColorProductDimensionAttribute =EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
            ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;
            ecoResProductMasterColor.insert();
            /*ecoResProductMasterConfiguration.clear();
            ecoResProductMasterConfiguration.initValue();
            ecoResProductMasterConfiguration.Configuration = ecoResConfiguration.RecId;
            //ecoResProductMasterConfiguration.Description = "STest-1";
            ecoResProductMasterConfiguration.ConfigProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
            ecoResProductMasterConfiguration.ConfigProductMaster = ecoResProductMaster.RecId;
            ecoResProductMasterConfiguration.insert();*/

            //Product variant
            ecoResDistinctProductVariant.clear();
            ecoResDistinctProductVariant.initValue();
            ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
                ecoResProductMaster.productNumber(),
                EcoResProductVariantDimValue::getDimensionValuesContainer("", "", "NA"));
            ecoResDistinctProductVariant.SearchName = ecoResProductMaster.SearchName + "NA"/*ColorId*/;
            ecoResDistinctProductVariant.ProductType = ecoResProductMaster.ProductType;
            ecoResDistinctProductVariant.ProductMaster = ecoResProductMaster.RecId;
            ecoResDistinctProductVariant.insert();

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

            //Product variant translation
            EcoResProductTranslation::createOrUpdateTranslation(ecoResDistinctProductVariant.RecId, "STestingcKR", "STestingcKR");

            //Released product
            inventTable.clear();
            inventTable.initValue();

            inventTable.initFromEcoResProduct(ecoResProductMaster);

            inventTable.ItemId = "S00CKR";
            inventTable.NameAlias = "STestingcKR";
            //inventTable.editTMSInventEnabled(true,NoYes::Yes);

            if (inventTable.validateWrite())
            {
                inventTable.insert();

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

                //Item group
                inventItemGroupItem.clear();
                inventItemGroupItem.initValue();
                inventItemGroupItem.ItemDataAreaId = inventTable.dataAreaId;
                inventItemGroupItem.ItemId = inventTable.ItemId;
                inventItemGroupItem.ItemGroupId = "Audio";
                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();
                }
            }

            inventDim.clear();
            inventDim.InventColorId = "NA";/*ColorId*/
            inventDim = InventDim::findOrCreate(inventDim);

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

    info("Done!");
}