/*RTPS: {BonusMultiplier} */ def BonusMultiplier = rtps.BonusMultiplier; def mbUs = messageBundle(["validation.invalidbonusmultiplier":"Bonus multiplier must be between 0 and 8: {0}"]) def mbl = messageBundleLoader(["en" : mbUs]); //Validate the RTP values validateRtp(rtps.BonusMultiplier, {(0..8).contains(it.enteredValue as int) }, mbl, "validation.invalidbonusmultiplier", rtps.BonusMultiplier); // Capture the edited employees Set employees = [] operation.grid.dataCellIterator("Salary").each { DataCell cell -> if(cell.edited) { employees << cell.getMemberName("Employee") } } if(employees.size() == 0) { println("No employee's bonus has been updated") return } // Generate the calc script to calculate bonuses for employees whose salaries were edited List povMemberNames = operation.grid.pov*.essbaseMbrName String calcScript = """ Fix("${povMemberNames.join('", "')}", "${employees.join('", "')}") "Bonus" = "Salary" * (${BonusMultiplier}/100); EndFix;""" println("The following calc script was executed by $operation.user.fullName: \n $calcScript") return calcScript.toString()