/*
 * Copyright 2015 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/

package org.drools.examples.cashflow;
dialect  "mvel"

rule "Increase balance for AccountPeriod Credits"
when
   ap : AccountPeriod( )
   $acc : Account( )
   cf : CashFlow( type == CashFlowType.CREDIT,
             accountNo == $acc.accountNo,
             date >= ap.start && <= ap.end )
then
   $acc.balance = $acc.balance + cf.amount;
end

rule "Decrease balance for AccountPeriod Debits"
when
   ap : AccountPeriod( )
   $acc : Account( )
   cf : CashFlow( type == CashFlowType.DEBIT, accountNo == $acc.accountNo, date >= ap.start && <= ap.end )
then
   $acc.balance = $acc.balance - cf.amount;
end

rule "Print blance for AccountPeriod" salience -50
when
       ap : AccountPeriod()
       $acc : Account( )
then
       System.out.println( "Account Number " + $acc.accountNo + " balance " + $acc.balance );
end