Because so many methods in PBCS require parameters that are maps and lists, it is very important to your productivity and effectiveness to understand, use, and be able to manipulate collections. Collections include lists, maps, and ranges. These are based on Java collection types and include a ton of useful methods. This article will cover lists and maps. Read more
Tag Archive for: epbcs
Building on the previous post and in the spirit of reusing code, this will expand on the concept by walking through the creation and use of functions in Groovy calculations. Functions have huge value in reducing your Groovy calculations and streamlining development. Read more
Now that you are knee deep in Groovy, help yourself out and reuse common code. The more you learn, the more efficient you will be and will laugh at some of your initial attempts at your Groovy calculations. If you are like me, you get excited about all the possibilities and learn as you go. When you find better ways to do something, or even preferable ways, you end up with an application with inconsistent representations of the same logic. You are too busy to go back and update all the snippets you have improved, so it stays in a somewhat messy state.
Do yourself a favor and start reusing some of the things you need in every script. Read more
I am really excited about the breakout sessions this year. I was asked to be involved in two additional sessions and one of my sessions has been moved. I really hope to see you all in Orlando! Read more
There are a lot of reasons one might loop through children in a Groovy Calculation. On my journeys with Groovy, I have run into a few roadblocks where this has been helpful. Some of these were related to limits in PBCS. Looping through sets of members allowed us to get around some of the limitations. Read more
Introduction
Before we jump in, there are a number of questions you are going to have at the conclusion of this article. Please post comments and I will answer them, but keep in mind, this is an example. Are there different ways to accomplish this? You bet. Should the data sync directly to the rFin database? Probably not, as there are calculations in the fin database that likely need to happen. This could be so complicated that nobody would follow it, so some liberties have been taken to simplify the explanation. The hope is that you can take this, as it has all the pieces required, and modify, add pieces, alter others, and be able to create something that meets your needs. This is a continuation of Part 18. Please read that before you continue.
Introduction
Chris Hull has been kind enough to partner with us to present how the methods available in Groovy calculations have made a huge impact in their budgeting and reporting process using PBCS. Read more
Introduction
One of the challenges with Hyperion Planning is the ability to move data between applications in real time. A classic example of this is a P&L application with other modules that have greater detail. The following is an example. Read more
No, But Can It Solve Yours?
I received a lot of positive feedback on the Groovy Series and have been asked a many great questions. People are excited about the improvements but are still a little hesitant to buy in to the hype. They question, and rightfully so, Read more
Challenge Accepted
When I asked visitors to try to come up with a situation that Groovy Calculation might be able to solve, this was a good one. One visitor asked if they could require a cell comment if certain parameters were not met. It is actually relatively easy.
The following requirement exist in this example. If any month holds more than 30% of the full year, that cell requires the user to enter a cell comment. If no comment exists, the user won’t be able to save the form.
The User Experience
If any month is more than 30% of the full year, and the user doesn’t add a comment to a cell, the form will not save. The following shows what happens when the above fails, and what happens after the user enters a comment into the cell.
The Code
def backErrColor = 16755370 //Red def caseTotal = 0 def accountName = "" // Loop through the months operation.grid.dataCellIterator('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec').each { // Get a total for all 12 months every time the row changes if(it.getAccountName() != accountName) { accountName = it.getAccountName(); caseTotal = it.data + it.crossDimCell('Feb').data + it.crossDimCell('Mar').data + it.crossDimCell('Apr').data + it.crossDimCell('May').data + it.crossDimCell('Jun').data + it.crossDimCell('Jul').data + it.crossDimCell('Aug').data + it.crossDimCell('Sep').data + it.crossDimCell('Oct').data + it.crossDimCell('Nov').data + it.crossDimCell('Dec').data } // If the value is greater than 30% of the total and the cell does NOT have a cell comment, interrupt the form save if(it.data > 0 && it.data / caseTotal > 0.3 && !it.hasCellNote() ) { it.addValidationError(backErrColor, "Cases for a single month can't be more than 30% of the total year without an assumption.", false) } }
Conclusion
Challenge accepted. This one goes in the win column for Groovy Calculations!