Monday, November 17, 2025

Dimension remove and replace

 [ExtensionOf(tableStr(LedgerJournalTrans))] 

final class LedgerJournalTrans_Extension 

{ 

    /// <summary> 

    /// This method is used to modify the businessunit field. 

    /// </summary> 

    /// <param name = "_fieldId">fieldId</param> 

     

    public void modifiedField(fieldId _fieldId) 

    { 

        LedgerJournalTrans  ledgerJournalTrans; 

        RecId               dimension1,dimension2; 

  

        next modifiedField(_fieldId); 

  

        switch(_fieldId) 

        { 

            case fieldnum(LedgerJournalTrans, BusinessUnit): 

  

                dimension1  = this.createDefaultDimension(this.BusinessUnit); 

                dimension2  = LedgerDimensionFacade::getDefaultDimensionFromLedgerDimension(this.LedgerDimension); 

  

                if (!dimension1) 

                { 

                    dimension2 = this.removeValueDefaultDimension(dimension2); 

                } 

                this.LedgerDimension    = LedgerDimensionFacade::serviceCreateLedgerDimension( 

                LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountRecId( 

                LedgerDimensionFacade::getMainAccountRecIdFromLedgerDimension(this.LedgerDimension)), 

                dimension1, 

                    dimension2); 

                break; 

            default: 

        } 

  

    } 

  

    /// <summary> 

    /// This method is used to create the defaultdimension . 

    /// </summary> 

    /// <param name = "businessUnit">String</param> 

    /// <returns>result</returns> 

    public DimensionDefault createDefaultDimension(str businessUnit) 

    { 

        DimensionAttributeValueSetStorage   valueSetStorage = new DimensionAttributeValueSetStorage(); 

        DimensionDefault                    result; 

        int                     i; 

        DimensionAttribute      dimensionAttribute; 

        DimensionAttributeValue dimensionAttributeValue; 

        container               conAttr     = ["BusinessUnit"]; 

        container               conValue    = [businessUnit]; 

        str                     dimValue; 

     

        for (i = 1; i <= conLen(conAttr); i++) 

        { 

            dimensionAttribute = dimensionAttribute::findByName(conPeek(conAttr,i)); 

            if (dimensionAttribute.RecId == 0) 

            { 

                continue; 

            } 

            dimValue = conPeek(conValue,i); 

            if (dimValue != "") 

            { 

                dimensionAttributeValue = dimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,dimValue,false,true); 

                valueSetStorage.addItem(dimensionAttributeValue); 

            } 

        } 

     

        result = valueSetStorage.save(); 

        return result; 

    } 

  

    /// <summary> 

    /// Used to remove the dimesion. 

    /// </summary> 

    /// <param name = "dimension">int64</param> 

    /// <returns>Dimension</returns> 

    public int64  removeValueDefaultDimension(int64 dimension) 

    { 

        DimensionAttributeValueSetStorage   dimStorage; 

        DimensionAttribute                  dimAttr; 

        DimensionAttributeValue             dimAttributeValue; 

        DimensionDefault                    defaultDimension; 

        str value; 

        

        dimStorage          = DimensionAttributeValueSetStorage::find(dimension); 

        dimAttr             = DimensionAttribute::findByName("BusinessUnit"); 

        value               = dimStorage.getDisplayValueByDimensionAttribute(dimAttr.RecId); 

        dimAttributeValue   = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttr, value, true, true); 

        dimStorage.removeDimensionAttributeValue(dimAttributeValue.RecId); 

  

        dimension    = dimStorage.save(); 

        return dimension; 

    } 

  

} 

No comments:

Post a Comment