Saturday, May 18, 2019

Release Item Variants


static void OGSReleaseItemVariants(Args _args)
{
    InventTable                         inventTable;
    EcoResDistinctProductVariant        ecoResDistinctProductVariant;
    EcoResProductVariantDimensionValue  ecoResProductVariantDimensionValue;
    RefRecId                            ecoResDistinctProductVariantRecId;
    EcoResProductReleaseManagerBase     releaseManager;
    InventDimCombination                inventDimCombination;
    container productDimensions;
    int success, errors;

    //Create a container to hold dimension values
    productDimensions = EcoResProductVariantDimValue::getDimensionValuesContainer("Default","default","default","default");

    while select inventTable
        notExists join inventDimCombination
        where inventTable.ItemId == inventDimCombination.ItemId
    {
        //Check if variant exist
        ecoResDistinctProductVariant = EcoResProductVariantManager::findDistinctProductVariant(inventTable.Product,productDimensions);
        if(ecoResDistinctProductVariant.RecId == 0)
        {
            //Create Product search name
            ecoResDistinctProductVariant.DisplayProductNumber = EcoResProductNumberBuilderVariant::buildFromProductNumberAndDimensions(
                                                                               EcoResProduct::find(inventTable.Product).productNumber(),
                                                                               productDimensions);

            //Create Product variant with Product and dimensions provided
            ecoResDistinctProductVariantRecId = EcoResProductVariantManager::createProductVariant(InventTable.Product,ecoResDistinctProductVariant.DisplayProductNumber,productDimensions);

            //Find newly created Product Variant
            ecoResDistinctProductVariant = ecoResDistinctProductVariant::find(ecoResDistinctProductVariantRecId);
        }

        //Now release the Product variant
        try
        {
            releaseManager = EcoResProductReleaseManagerBase::newFromProduct(ecoResDistinctProductVariant);
            releaseManager.release();
            success++;
        }
        catch
        {
            errors++;
            continue;
        }
    }
    info(strFmt("Complete: %1 records success, %2 errors/skipped",success,errors));
}

No comments:

Post a Comment