+1
Create payables from receivables macro
Hi,
I'm trying to create a macro that creates a payable for every receivable in the project. The problem is that $tmSavingsFactory.createTMSavings() is always returning null. Is this the right approach? Thanks in advance.
#set($service = $utils.getService("com.radzisz.xtrf.service.ActivityService"))
#set($service2 = $utils.getService("com.radzisz.xtrf.service.TMSavingsService"))
#set($catTool = $service2.getAvailableCatTools()[0].catTool)
#set($tmSavingsFactory = $utils.createInstance("com.radzisz.xtrf.service.chargeTmSavings.TmSavingsForChargeFactory"))
#foreach( $project in $utils.unwrap(${list}) )
#foreach($task in $project.tasks)
#set($tf = $task.projectFinance)
#foreach($r in $tf.catReceivables)
#foreach($activity in $task.activities)
#set($rates = $activity.providerPriceProfile.getTmRates($catTool))
#set($tmSavings = $r.TmSavings)
#set($tmSavingPayable = $tmSavingsFactory.createTMSavings($tmSavings, $rates))
#set($payable = $service.createActivityCatPayable($activity))
$payable.updateTmSavings($tmSavingPayable)
$activity.addCATPayable($payable)
#end
#end
#end
#end
Customer support service by UserEcho
Hi Adam,
Please keep in mind that since XTRF7 using Groovy (www.groovy-lang.org) is both available and recommended way to write your macros. If it's not available on your XTRF instance, please contact our Helpdesk so they can unlock the feature for you.
You can just create TmSavings using its constructor and then just add it to your payable via UpdateTmSavings.
Kind regards,
Bartosz
Hi Bartosz,
We have Groovy on our instance, are planning to switch to it, but it's currently more convenient to reuse our legacy Velocity code.
The problem is, the constructor of TmSavings is really not straightforward because of the Map of TMSavingItem objects.
To create the map, I need to create TMSavingItem objects something like this:
But this doesn't work, just returns null objects.