Tuesday, January 8, 2019

Updating Legal Entity for Customer Master

static void updateLegalEntityCustomer(Args _args)
{
    //Item , vendor, customer, fixed assets and bank
    CustTable custTable;
    InventTable  inventTable;
    VendTable vendTable;
    BankAccountTable bankAccountTable;
    AssetTable assetTable;

    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 custTable
    {
        changeCompany(custTable.dataAreaId)
        {
            // Get current value
            oldDimensionValue = getDimensionValue(custTable.DefaultDimension);
            newDimensionValue = custTable.dataAreaId;

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

No comments:

Post a Comment