X++ Set One Of Financial Dimension Value to Empty

 [ExtensionOf(TableStr(TrvCashAdvance))]

final class TrvCashAdvance_Extension
{
    public void modifiedField(fieldId _fieldId)
    {
        next modifiedField(_fieldId);

        switch (_fieldId)
        {
            case(fieldnum(TrvCashAdvance, Worker)):
                this.updateDefaultDimension();
                break;
        }
    }

    private void updateDefaultDimension()
    {
        HcmPersonnelNumberId      hcmPersonnelNumberId;        
        DimensionAttributeValueSetStorage   dimStorage = new DimensionAttributeValueSetStorage();
        DimensionAttribute                  dimAttribute;
        DimensionAttributeValue             dimAttributeValue;
        DimensionDefault                    defaultDimension;
        
        #define.Worker('Worker')

        hcmPersonnelNumberId     =  this.Worker;
        defaultDimension    = this.DefaultDimension;

        ttsBegin;
        dimStorage          = DimensionAttributeValueSetStorage::find(defaultDimension);
        dimAttribute        = DimensionAttribute::findByName(#Worker);
        if(hcmPersonnelNumberId)
        {
            dimAttributeValue   = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute, hcmPersonnelNumberId, true, true);
    
            dimStorage.addItem(dimAttributeValue);
        }
        else
        {
            dimStorage.removeDimensionAttribute(dimAttribute.RecId);
        }
        // Dimension modified or updated including Worker as well.
        defaultDimension = dimStorage.save();
        this.DefaultDimension = defaultDimension;  
        ttsCommit;
    }
}

Comments

Popular posts from this blog

How to Bypass Next in COC in D365 X++

create movement journal through code in d365 FO x++