<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

  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.
  -->

<entity-eca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entity-eca.xsd">

    <!-- To maintain FinAccount.actualBalance and FinAccount.availableBalance -->
    <eca entity="FinAccountTrans" operation="create-store" event="return">
        <condition  field-name="statusId" operator="equals" value="FINACT_TRNS_APPROVED"/>
        <action service="updateFinAccountBalancesFromTrans" mode="sync"/>
    </eca>
    <!-- To maintain FinAccount.availableBalance -->
    <eca entity="FinAccountAuth" operation="create-store" event="return">
        <action service="updateFinAccountBalancesFromAuth" mode="sync"/>
    </eca>

    <!-- an example of how to use the watchEntity service to watch the actualBalance field
    <eca entity="FinAccount" operation="create-store" event="run">
        <set field-name="fieldName" value="actualBalance"/>
        <action service="watchEntity" mode="sync" value-attr="newValue"/>
    </eca>
    -->
</entity-eca>
