First I'm new to drools and secondly where I'm working we're using version 4.0.7.
I have a list of accounts and each account contains a list of transactions. I wish to accumulate charge transactions and compare them to an accumulation of payment transactions for a given time period (such as the last month). And it gets slightly more awkward in that if a payment transaction is of a certain type it needs to be converted from a 4 weekly figure to a monthly figure ( using / 4 / 7 * 365 / 12). I've tried to use structures as follows but they are causing the then part of the rule never to fire.
rule "Account in arrears"
salience 10
no-loop
when
$acc : Account( // balance between £500 and £1000
accountBalanceInPence >= 50000 &&
accountBalanceInPence <= 100000
)
$s : MessageInfo( accountNumber == $acc.accountNumber )
Number($charges : intValue) from
accumulate(
(Transaction(
transactionDate > oneMonthAgo &&
amountInPence > 0 &&
$value : amountInPence)
from $acc.transactions),
sum($value)
)
Number($adjustment : intValue) from
accumulate(
(Transaction(
transactionDate > oneMonthAgo &&
amountInPence < 0 &&
transactionCode == "Type 1" &&
$value : amountInPence)
from $acc.transactions),
sum(($value / 4 / 7 * 365 / 12) - $value)
)
Number( intValue > ($charges + $adjustment)) from
accumulate(
(RentTransaction
(transactionDate > oneMonthAgo
$value : amountInPence)
from $acc.transactions),
sum($value)
)
then
$s.setMessage( "Account in arrears" );
update($s); // flag update
end
Thanks
Richard
Beyond Hotmail - see what else you can do with Windows Live. Find out more.