Keyser_Soze
2 years agoContributor
Get Account Type as Integer From String
Hello There,
Is there a way to get the 'Integer' behind each Account Type based on a 'String' ?
Context: I am trying to create new Account Members with pre-defined properties, all properties were straightforward except for the account type. Below a code portion for modifying a property & a hardcoded solution:
myaccountMember = BRApi.Finance.Metadata.GetMember(si, DimTypeId, accountID, True)	
						
Dim AccProperties As AccountVMProperties = myaccountMember.GetAccountProperties()
'Add AccountProperties
    '*** Text123 ***							 
    AccProperties.Text1.SetStoredValue(ScenarioType.Unknown.Id,DimConstants.Unknown, mytxt1)
							 
    AccProperties.Text2.SetStoredValue(ScenarioType.Unknown.Id,DimConstants.Unknown, mytxt2)
							 
    AccProperties.Text3.SetStoredValue(ScenarioType.Unknown.Id,DimConstants.Unknown, mytxt3)
    
    '*** AllowInput ***							 
    AccProperties.AllowInput.SetStoredValue(Boolean.Parse(isAllowInput))
    
    '*** Account Type ***
    Dim accTypeInt As Integer = GetAccountType(si, accountType)	' Since the 'SetStoredValue() only takes integers, I had to create a separate function that retrieves it						 
    AccProperties.AccountType.SetStoredValue(accTypeInt) Here is the hardcoded function 'GetAccountType'() :
Public Function GetAccountType(ByVal si As SessionInfo, ByVal AccountType As String) As Integer
			Try
				Select Case AccountType 'Revenue, Expense, Asset, Liability, Flow, Balance, BalanceRecurring, NonFinancial, DynamicCalc, Group
					Case = "Revenue"
						Return 1
					Case = "Expense"
						Return 2
					Case = "Asset"
						Return 3
					Case = "Liability"
						Return 4
					Case = "Flow"
						Return 5
					Case = "Balance"
						Return 6
					Case = "BalanceRecurring"
						Return 7
					Case = "NonFinancial"
						Return 8
					Case = "DynamicCalc"
						Return 9
					Case Else
						Return 0
				End Select			
				
			Catch ex As Exception
				Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
			End Try
		End Function
Off the top of my head:
Function GetAccountTypeByName(ByRef accTypeName as String) try: return AccountType.GetItem(accTypeName) catch ex as Exception: throw ErrorHandler.LogWrite(si, new XFException(si, ex)) end try end functionThat gives you back an AccountType object, which is a bit more flexible. Then in your main code you can use it like this:
AccProperties.AccountType.SetStoredValue( GetAccountTypeByName("Flow").Id )