Friday, April 3, 2015

AX2012 R3 Creating product variants using X++

static void DSCreateVarientforAllproducts(Args _args)
{
EcoResProductVariantCreationMgr ecoResProductVariantCreationMgr;
EcoResProductMaster             EcoResProductMaster;
EcoResDistinctProductVariant ecoResDistinctProductVariant;
EcoResProductReleaseManagerBase releaseManager;
args                            args;
int                             i;
    while select EcoResProductMaster 
    {
        i++;
        args = new args();
        args.record(EcoResProductMaster);

        EcoResProductVariantCreationMgr = null;

        EcoResProductVariantCreationMgr =  ecoResProductVariantCreationMgr::newFromArgs(args);
        ecoResProductVariantCreationMgr.parmCalledfromjob(true); // Added in ecoResProductVariantCreationMgr class to select all varients to release
        ecoResProductVariantCreationMgr.buildVariantSuggestions();
        ecoResProductVariantCreationMgr.run();
        EcoResProductMaster::updateVariantDescriptions(EcoResProductMaster.RecId); // To Generate Varient Descritoin of all varients
        
        select ecoResDistinctProductVariant where ecoResDistinctProductVariant.ProductMaster == EcoResProductMaster.RecId;
        if (ecoResDistinctProductVariant && !ecoResDistinctProductVariant.isReleased())
        {
            releaseManager = EcoResProductReleaseManagerBase::newFromProduct(ecoResDistinctProductVariant);
            releaseManager.release();
        }

        print i;
    }
}