Tuesday, January 8, 2019

Updating Legal Entity for Item Master

static void updateLegalEntityItem(Args _args)
{
    //Item , vendor, customer, fixed assets and bank
    InventTable  inventTable;

    DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
    DimensionAttribute dimensionAttribute;
    DimensionValue oldDimensionValue;
    DimensionValue newDimensionValue;
    DimensionDefault newDimensionDefault;

    #define.dimensionName("LegalEntity")

    DimensionValue getDimensionValue(DimensionDefault _dimensionDefault)
    {
        DefaultDimensionView defaultDimensionView;
        select firstonly DisplayValue
        from defaultDimensionView
        where defaultDimensionView.Name == #dimensionName
            && defaultDimensionView.DefaultDimension == _dimensionDefault;

        return defaultDimensionView.DisplayValue;
    }
//where inventTable.ItemId=='TESTBATCH01'
    //while select crossCompany inventTable
    while select  inventTable
    {
        changeCompany(inventTable.dataAreaId)
        {
            // Get current value
            oldDimensionValue = getDimensionValue(inventTable.DefaultDimension);
            newDimensionValue = inventTable.dataAreaId;

            // Build DimensionAttributeValueSetStorage
            dimensionAttributeValueSetStorage = DimensionAttributeValueSetStorage::find(inventTable.DefaultDimension);

            // Remove old dimension value
            if(oldDimensionValue != "")
            {
                dimensionAttribute = DimensionAttribute::findByName(#dimensionName);
                dimensionAttributeValueSetStorage.removeDimensionAttributeValue(
                    DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, oldDimensionValue).RecId);
            }

            // Set new dimension value
            if(newDimensionValue != "")
            {
                dimensionAttribute = DimensionAttribute::findByName(#dimensionName);
                dimensionAttributeValueSetStorage.addItem(
                    DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, newDimensionValue));
            }

            newDimensionDefault = dimensionAttributeValueSetStorage.save();

            ttsbegin;
            inventTable.selectForUpdate(true);
            inventTable.DefaultDimension = newDimensionDefault;
            inventTable.update();
            ttscommit;
        }
    }
    info("Finished processing");
}

No comments:

Post a Comment