01-04-2023 06:00 PM - last edited on 05-02-2023 10:39 AM by JackLacava
Hello,
I am looking to write a confirmation rule which pulls a value for a flow member across each account. An example would be we have a calculated opening balance and a loaded opening balance. There is a flow members which calculates the variance between the loaded and the calculated beginning balance.
If the absolute value within the validation flow member <> 0 I want the rule to return which accounts are causing the outage within the info1.
I'm looking forward to seeing if if anyone else has come across something like this.
Cheers!
01-05-2023 08:43 AM - edited 01-06-2023 09:00 AM
This sounds like "do my homework" eh 😏 I'd suggest starting with this old ppt... But here's some untested code to give you an idea for a possible technique.
' F#YourBalanceFlow is probably too generic, you should add as many other dimensions as you can
Dim BadAccounts as new List(Of Integer)
Dim dbuf As DataBuffer = api.Data.GetDataBufferUsingFormula( _
"FilterMembers(F#YourBalanceFlow, A#Account1, A#Account2, A#Account3)") ' etc etc, or use expansions
For Each myCell As DataCell In dbuf.DataBufferCells.Values
If Not BadAccounts.Contains(myCell.DataCellPk.AccountId) Then
If myCell.CellAmount <> 0 Then
BadAccounts.Add(myCell.DataCellPk.AccountId)
End If
End If
Next
If BadAccounts.Count > 0 Then
Dim message As String = $"The following accounts failed validation: {VbCrLf}"
For Each accountId As Integer In BadAccounts
' turn that ID into a readable account name
message &= api.Members.GetMemberName(dimtype.Account.Id, accountId) & $" {VbCrLf}"
Next
args.ConfirmationRuleArgs.Info1 = message
Return False
End If
args.ConfirmationRuleArgs.Info1 = "All good, surf up dude"
Return True