Updating Entity Relationship for Percent Ownership

ccage
New Contributor II

Can any one provide me with a rule snippet for updating Entity Percent Ownership. I have tried a few things using the SaveRelationshipInfo but it is not working.

2 ACCEPTED SOLUTIONS

JackLacava
Honored Contributor

This should work, but please make sure you understand what it does before dropping it into production code. You might want to surround the SaveRelationshipInfo call with a try/catch to be on the safe side. As for anything posted on these forums, we make no guarantees in terms of support, you're on your own.

' coordinates
Dim myScenarioID As Integer = brapi.Finance.Members.GetMemberId(si, DimType.Scenario.Id, "Actual")
Dim myScenarioType As ScenarioType = BRApi.Finance.Scenario.GetScenarioType(si, myScenarioID)
Dim myTimeID As Integer = BRApi.Finance.Time.GetIdFromName(si, "2020M3")
Dim myEntityID As Integer = BRApi.Finance.Members.GetMemberId(si, DimType.Entity.Id, "Frankfurt")
Dim myParentID As Integer = BRApi.Finance.Members.GetMemberId(si, DimType.Entity.Id, "Europe")

' fetch relationship. 
Dim relationship As Relationship = BRApi.Finance.members.ReadRelationshipNoCache(si, _
		DimType.Entity.Id, myEntityID, myParentID)
' create new properties
' this should leave other properties alone and just merge with existing values, but check; worst case, repro other props before saving
Dim newProperties As New VaryingMemberProperties( DimType.Entity.Id, myEntityID, myParentID )
newProperties.GetEntityRelationshipProperties().PercentOwnership.SetStoredValue( _ 
		myScenarioType.Id, myTimeID, 40.0)
' we only save properties in this case
brapi.Finance.MemberAdmin.SaveRelationshipInfo(si, _
	False, relationship, _
	True, newProperties, _
	Nothing)

 

View solution in original post

ccage
New Contributor II

Thanks Jack! I want to also thank Nick Kroppe who provided me with the following code as well.

'retrieve rel info for parent child relationship
Dim myRelInfo As RelationshipInfo = BRApi.Finance.Members.GetRelationshipInfo(si, _
    dimTypeId.Entity, "Houston Heights", "Houston")

'retrieve entity properties
Dim entityRelationProps As EntityRelationshipVMProperties = myRelInfo.GetEntityRelationshipProperties()

'set the percent ownership property
entityRelationProps.PercentOwnership.SetStoredValue( _
    scenarioTypeId.Unknown, SharedConstants.Unknown, 90)

'retain the current relationship hierarchy position
Dim relationPosOpts As New RelationshipPositionOptions()
relationPosOpts.SiblingId = SharedConstants.Unknown
relationPosOpts.MovementType = RelationshipMovementType.RetainCurrentPosition

'save the relationship info and update the ownership property
BRApi.Finance.MemberAdmin.SaveRelationshipInfo(si, _
    True, myRelInfo.Relationship, _
    True, entityRelationProps.VMProperties, _
    relationPosOpts)

View solution in original post

2 REPLIES 2

JackLacava
Honored Contributor

This should work, but please make sure you understand what it does before dropping it into production code. You might want to surround the SaveRelationshipInfo call with a try/catch to be on the safe side. As for anything posted on these forums, we make no guarantees in terms of support, you're on your own.

' coordinates
Dim myScenarioID As Integer = brapi.Finance.Members.GetMemberId(si, DimType.Scenario.Id, "Actual")
Dim myScenarioType As ScenarioType = BRApi.Finance.Scenario.GetScenarioType(si, myScenarioID)
Dim myTimeID As Integer = BRApi.Finance.Time.GetIdFromName(si, "2020M3")
Dim myEntityID As Integer = BRApi.Finance.Members.GetMemberId(si, DimType.Entity.Id, "Frankfurt")
Dim myParentID As Integer = BRApi.Finance.Members.GetMemberId(si, DimType.Entity.Id, "Europe")

' fetch relationship. 
Dim relationship As Relationship = BRApi.Finance.members.ReadRelationshipNoCache(si, _
		DimType.Entity.Id, myEntityID, myParentID)
' create new properties
' this should leave other properties alone and just merge with existing values, but check; worst case, repro other props before saving
Dim newProperties As New VaryingMemberProperties( DimType.Entity.Id, myEntityID, myParentID )
newProperties.GetEntityRelationshipProperties().PercentOwnership.SetStoredValue( _ 
		myScenarioType.Id, myTimeID, 40.0)
' we only save properties in this case
brapi.Finance.MemberAdmin.SaveRelationshipInfo(si, _
	False, relationship, _
	True, newProperties, _
	Nothing)

 

ccage
New Contributor II

Thanks Jack! I want to also thank Nick Kroppe who provided me with the following code as well.

'retrieve rel info for parent child relationship
Dim myRelInfo As RelationshipInfo = BRApi.Finance.Members.GetRelationshipInfo(si, _
    dimTypeId.Entity, "Houston Heights", "Houston")

'retrieve entity properties
Dim entityRelationProps As EntityRelationshipVMProperties = myRelInfo.GetEntityRelationshipProperties()

'set the percent ownership property
entityRelationProps.PercentOwnership.SetStoredValue( _
    scenarioTypeId.Unknown, SharedConstants.Unknown, 90)

'retain the current relationship hierarchy position
Dim relationPosOpts As New RelationshipPositionOptions()
relationPosOpts.SiblingId = SharedConstants.Unknown
relationPosOpts.MovementType = RelationshipMovementType.RetainCurrentPosition

'save the relationship info and update the ownership property
BRApi.Finance.MemberAdmin.SaveRelationshipInfo(si, _
    True, myRelInfo.Relationship, _
    True, entityRelationProps.VMProperties, _
    relationPosOpts)