Tuesday, January 8, 2019

Product Master Dim Variant Creation


static void OGSProductMastersDimVariantCreate(Args _args)
{
    EcoResProductMaster                 ecoResProductMaster;
    EcoResProductDimensionGroupProduct  ecoResProductDimensionGroupProduct;
    EcoResConfiguration                 ecoResConfiguration;
    EcoResProductMasterConfiguration    ecoResProductMasterConfiguration,ecoResProductMasterConfiguration2;
    EcoResStyle                         ecoResStyle;
    EcoResProductMasterStyle            ecoResProductMasterStyle;
    EcoResSize                          ecoResSize;
    EcoResProductMasterSize             ecoResProductMasterSize;
    EcoResColor                         ecoResColor;
    EcoResProductMasterColor            ecoResProductMasterColor;
    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantConfiguration   ecoResProductVariantConfiguration;

    EcoResProductVariantDimensionValue  ecoResProductVariantDimensionValue;
    RefRecId                            ecoResDistinctProductVariantRecId;
    EcoResProductReleaseManagerBase     eleaseManager;
    container                           productDimensions;
    int                                 success = 0, failed = 0;

    while select ecoResProductMaster notexists join ecoResProductMasterConfiguration2
    where ecoResProductMasterConfiguration2.ConfigProductMaster == ecoResProductMaster.RecId
        //where ecoResProductMaster.DisplayProductNumber == '73-88381-ISP'

    {
        try
        {



            //Configuration
            ecoResConfiguration = EcoResConfiguration::findByName("default");

            //Configuration assigned to product master
            ecoResProductMasterConfiguration.clear();
            ecoResProductMasterConfiguration.initValue();
            ecoResProductMasterConfiguration.Configuration = ecoResConfiguration.RecId;
            ecoResProductMasterConfiguration.ConfigProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, ConfigId));
            ecoResProductMasterConfiguration.ConfigProductMaster = ecoResProductMaster.RecId;
            try
            {
                ecoResProductMasterConfiguration.insert();
            }
            catch
            {
                failed++;
                continue;
            }

            //Style
            ecoResStyle = EcoResStyle::findByName("default");

            //Style assigned to product master
            ecoResProductMasterStyle.clear();
            ecoResProductMasterStyle.initValue();
            ecoResProductMasterStyle.Style = ecoResStyle.RecId;
            ecoResProductMasterStyle.StyleProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventStyleId));
            ecoResProductMasterStyle.StyleProductMaster = ecoResProductMaster.RecId;
            try
            {
                ecoResProductMasterStyle.insert();
            }
            catch
            {
                failed++;
                continue;
            }

            //Color
            ecoResColor = EcoResColor::findByName("default");

            //Color assigned to product master
            ecoResProductMasterColor.clear();
            ecoResProductMasterColor.initValue();
            ecoResProductMasterColor.Color = ecoResColor.RecId;
            ecoResProductMasterColor.ColorProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventColorId));
            ecoResProductMasterColor.ColorProductMaster = ecoResProductMaster.RecId;
            try
            {
                ecoResProductMasterColor.insert();
            }
            catch
            {
                failed++;
                continue;
            }

            //Size
            ecoResSize = EcoResSize::findByName("default");

            //Size assigned to product master
            ecoResProductMasterSize.clear();
            ecoResProductMasterSize.initValue();
            ecoResProductMasterSize.Size = ecoResSize.RecId;
            ecoResProductMasterSize.SizeProductDimensionAttribute = EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(fieldNum(InventDim, InventSizeId));
            ecoResProductMasterSize.SizeProductMaster = ecoResProductMaster.RecId;
            try
            {
                ecoResProductMasterSize.insert();
            }
            catch
            {
                failed++;
                continue;
            }

            //Create a container to hold dimension values
            productDimensions = EcoResProductVariantDimValue::getDimensionValuesContainer(ecoResConfiguration.Name,
                                                                                                    ecoResSize.Name,
                                                                                                    ecoResColor.Name,
                                                                                                    ecoResStyle.Name);
            ////Create Product search name. If variant name is different from product name
            //ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
            //                                                                   EcoResProduct::find(InventTable.Product).productNumber(),
            //                                                                    productDimensions);

            //Create Product variant with Product and dimensions provided
            ecoResDistinctProductVariantRecId = EcoResProductVariantManager::createProductVariant(ecoResProductMaster.RecId,ecoResProductMaster.SearchName,productDimensions);
            success++;
        }
        catch
        {
            failed++;
            error("Error!");
            return;
        }
    }
    info(strFmt("Done! %1 success,%2 skipped",success,failed));
}

No comments:

Post a Comment