You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2007/03/29 00:34:36 UTC
svn commit: r523483 - in /ofbiz/trunk/applications/accounting: entitydef/
servicedef/ src/org/ofbiz/accounting/finaccount/
Author: jaz
Date: Wed Mar 28 15:34:35 2007
New Revision: 523483
URL: http://svn.apache.org/viewvc?view=rev&rev=523483
Log:
fixed financount status service, now does the right compareTo; removed code to mark frozen accounts in auth, now accounts are only frozen during withdraws (not auths) and moved the trigger to the eeca
Modified:
ofbiz/trunk/applications/accounting/entitydef/eecas.xml
ofbiz/trunk/applications/accounting/servicedef/secas.xml
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountProductServices.java
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java
Modified: ofbiz/trunk/applications/accounting/entitydef/eecas.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/entitydef/eecas.xml?view=diff&rev=523483&r1=523482&r2=523483
==============================================================================
--- ofbiz/trunk/applications/accounting/entitydef/eecas.xml (original)
+++ ofbiz/trunk/applications/accounting/entitydef/eecas.xml Wed Mar 28 15:34:35 2007
@@ -24,6 +24,7 @@
<!-- To maintain FinAccount.actualBalance and FinAccount.availableBalance -->
<eca entity="FinAccountTrans" operation="create-store" event="return">
<action service="updateFinAccountBalancesFromTrans" mode="sync"/>
+ <action service="checkFinAccountStatus" mode="sync"/>
</eca>
<!-- To maintain FinAccount.availableBalance -->
<eca entity="FinAccountAuth" operation="create-store" event="return">
Modified: ofbiz/trunk/applications/accounting/servicedef/secas.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/secas.xml?view=diff&rev=523483&r1=523482&r2=523483
==============================================================================
--- ofbiz/trunk/applications/accounting/servicedef/secas.xml (original)
+++ ofbiz/trunk/applications/accounting/servicedef/secas.xml Wed Mar 28 15:34:35 2007
@@ -109,24 +109,13 @@
<condition field-name="productStoreId" operator="is-not-empty"/>
<action service="finAccountReplenish" mode="async" run-as-user="system"/>
</eca>
- <eca service="finAccountWithdraw" event="commit">
- <action service="checkFinAccountStatus" mode="sync" run-as-user="system"/>
- </eca>
- <eca service="finAccountDeposit" event="commit">
- <action service="checkFinAccountStatus" mode="sync" run-as-user="system"/>
- </eca>
-
+
<!--
<eca service="createFinAccountTrans" event="commit">
<action service="postFinAccountTransToGl" mode="sync"/>
</eca>
-->
- <!-- financial account AUTH ecas -->
- <eca service="expireFinAccountAuth" event="commit">
- <action service="checkFinAccountStatus" mode="sync" run-as-user="system"/>
- </eca>
-
<!-- sample ECA rules for the sampleInvoiceAffiliateCommission service triggering
<eca service="createPayment" event="commit">
<condition field-name="statusId" operator="equals" value="PMNT_RECEIVED"/>
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java?view=diff&rev=523483&r1=523482&r2=523483
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java Wed Mar 28 15:34:35 2007
@@ -158,6 +158,10 @@
// check the amount to authorize against the available balance of fin account, which includes active authorizations as well as transactions
BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance");
+ if (availableBalance == null) {
+ availableBalance = FinAccountHelper.ZERO;
+ }
+
Map result = ServiceUtil.returnSuccess();
String authMessage = null;
Boolean processResult;
@@ -188,20 +192,8 @@
processResult = Boolean.TRUE;
}
- // mark the account as frozen if we have gone negative
+ // refresh the account
finAccount.refresh();
- BigDecimal newBalance = finAccount.getBigDecimal("availableBalance");
- if (newBalance.compareTo(FinAccountHelper.ZERO) == -1) {
- Debug.logInfo("Financal account [" + finAccountId + "] now frozen: " + newBalance, module);
- finAccount.set("isFrozen", "Y");
- try {
- finAccount.store();
- } catch (GenericEntityException e) {
- Debug.logError(e, module);
- return ServiceUtil.returnError(e.getMessage());
- }
- }
-
} else {
Debug.logError("Attempted to authorize [" + amount + "] against a balance of only [" + availableBalance + "]", module);
refNum = "0"; // a refNum is always required from authorization
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountProductServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountProductServices.java?view=diff&rev=523483&r1=523482&r2=523483
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountProductServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountProductServices.java Wed Mar 28 15:34:35 2007
@@ -138,6 +138,7 @@
createCtx.put("productStoreId", productStoreId);
createCtx.put("ownerPartyId", partyId);
createCtx.put("currencyUomId", currency);
+ createCtx.put("isFrozen", "N");
createCtx.put("userLogin", userLogin);
// if we auto-replenish this type; set the level to the initial deposit
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java?view=diff&rev=523483&r1=523482&r2=523483
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java Wed Mar 28 15:34:35 2007
@@ -135,8 +135,8 @@
balance = FinAccountHelper.ZERO;
}
- Debug.log("FinAccount Balance [" + balance + "] Available [" + availableBalance + "]", module);
Boolean isFrozen = Boolean.valueOf("Y".equals(finAccount.getString("isFrozen")));
+ Debug.log("FinAccount Balance [" + balance + "] Available [" + availableBalance + "] - Frozen: " + isFrozen, module);
Map result = ServiceUtil.returnSuccess();
result.put("availableBalance", new Double(availableBalance.doubleValue()));
@@ -147,21 +147,8 @@
public static Map checkFinAccountStatus(DispatchContext dctx, Map context) {
GenericDelegator delegator = dctx.getDelegator();
- String finAccountAuthId = (String) context.get("finAccountAuthId");
String finAccountId = (String) context.get("finAccountId");
- if (finAccountId == null && finAccountAuthId != null) {
- GenericValue auth;
- try {
- auth = delegator.findByPrimaryKey("FinAccountAuth", UtilMisc.toMap("finAccountAuthId", finAccountAuthId));
- } catch (GenericEntityException e) {
- return ServiceUtil.returnError(e.getMessage());
- }
- if (auth != null) {
- finAccountId = auth.getString("finAccountId");
- }
- }
-
if (finAccountId == null) {
return ServiceUtil.returnError("Financial account ID is required for this service!");
}
@@ -177,17 +164,19 @@
String frozen = finAccount.getString("isFrozen");
if (frozen == null) frozen = "N";
- BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance");
- if (availableBalance == null) {
- availableBalance = FinAccountHelper.ZERO;
+ BigDecimal balance = finAccount.getBigDecimal("actualBalance");
+ if (balance == null) {
+ balance = FinAccountHelper.ZERO;
}
-
- if ("N".equals(frozen) && FinAccountHelper.ZERO.compareTo(availableBalance) < 1) {
+
+ Debug.log("Account #" + finAccountId + " Balance: " + balance + " Frozen: " + frozen, module);
+
+ if ("N".equals(frozen) && balance.compareTo(FinAccountHelper.ZERO) < 1) {
finAccount.set("isFrozen", "Y");
- Debug.logInfo("Financial account [" + finAccountId + "] has passed its threshold [" + availableBalance + "] (Frozen)", module);
- } else if ("Y".equals(frozen) && FinAccountHelper.ZERO.compareTo(availableBalance) > 0) {
+ Debug.logInfo("Financial account [" + finAccountId + "] has passed its threshold [" + balance + "] (Frozen)", module);
+ } else if ("Y".equals(frozen) && balance.compareTo(FinAccountHelper.ZERO) > 0) {
finAccount.set("isFrozen", "N");
- Debug.logInfo("Financial account [" + finAccountId + "] has been made current [" + availableBalance + "] (Un-Frozen)", module);
+ Debug.logInfo("Financial account [" + finAccountId + "] has been made current [" + balance + "] (Un-Frozen)", module);
}
try {
finAccount.store();