Saturday, May 18, 2019

Updating Vendor legal entity


static void updateLegalEntityVendor(Args _args)
{
    //Item , vendor, customer, fixed assets and bank
    VendTable vendTable;

    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;
    }

    while select crossCompany vendTable
    {
        changeCompany(vendTable.dataAreaId)
        {
            // Get current value
            oldDimensionValue = getDimensionValue(vendTable.DefaultDimension);
            newDimensionValue = vendTable.dataAreaId;

            // Build DimensionAttributeValueSetStorage
            dimensionAttributeValueSetStorage = DimensionAttributeValueSetStorage::find(vendTable.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;
            vendTable.selectForUpdate(true);
            vendTable.DefaultDimension = newDimensionDefault;
            vendTable.update();
            ttscommit;
        }
    }
    info("Finished processing");
}

No comments:

Post a Comment