Author: jonesde
Date: Tue Mar 27 18:17:00 2007 New Revision: 523131 URL: http://svn.apache.org/viewvc?view=rev&rev=523131 Log: Changed code in a bunch of places to use the FinAccount.availableBalance and actualBalance fields; this involved removing the method in FinAccountHelper to get the available and actual balances without a date specified, ie the most current values Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/GiftCertificateServices.java ofbiz/trunk/applications/accounting/widget/FinAccountForms.xml ofbiz/trunk/applications/order/src/org/ofbiz/order/finaccount/FinAccountHelper.java ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java 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=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java (original) +++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountPaymentServices.java Tue Mar 27 18:17:00 2007 @@ -133,7 +133,7 @@ } // check the amount to authorize against the available balance of fin account, which includes active authorizations as well as transactions - BigDecimal availableBalance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); + BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance"); Map result = ServiceUtil.returnSuccess(); Boolean processResult; String refNum; @@ -164,7 +164,8 @@ } // mark the account as frozen if we have gone negative - BigDecimal newBalance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); + 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"); @@ -455,13 +456,7 @@ } // check the actual balance (excluding authorized amounts) and create the transaction if it is sufficient - BigDecimal previousBalance; - try { - previousBalance = FinAccountHelper.getBalance(finAccountId, delegator); - } catch (GeneralException e) { - Debug.logError(e, module); - return ServiceUtil.returnError(e.getMessage()); - } + BigDecimal previousBalance = finAccount.getBigDecimal("actualBalance"); BigDecimal balance; String refNum; @@ -474,8 +469,9 @@ try { refNum = FinAccountPaymentServices.createFinAcctPaymentTransaction(delegator, dispatcher, userLogin, amount, productStoreId, partyId, currencyUom, WITHDRAWAL, finAccountId); - balance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); - procResult = Boolean.TRUE; + finAccount.refresh(); + balance = finAccount.getBigDecimal("actualBalance"); + procResult = Boolean.TRUE; } catch (GeneralException e) { Debug.logError(e, module); return ServiceUtil.returnError(e.getMessage()); @@ -533,13 +529,7 @@ Debug.log("Deposit into financial account #" + finAccountId + " [" + amount + "]", module); // get the previous balance - BigDecimal previousBalance; - try { - previousBalance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); - } catch (GeneralException e) { - Debug.logError(e, module); - return ServiceUtil.returnError(e.getMessage()); - } + BigDecimal previousBalance = finAccount.getBigDecimal("actualBalance"); // create the transaction BigDecimal balance; @@ -547,7 +537,8 @@ try { refNum = FinAccountPaymentServices.createFinAcctPaymentTransaction(delegator, dispatcher, userLogin, amount, productStoreId, partyId, currencyUom, DEPOSIT, finAccountId); - balance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); + finAccount.refresh(); + balance = finAccount.getBigDecimal("actualBalance"); } catch (GeneralException e) { Debug.logError(e, module); return ServiceUtil.returnError(e.getMessage()); @@ -626,13 +617,7 @@ } // get the current balance - BigDecimal balance; - try { - balance = FinAccountHelper.getBalance(finAccountId, delegator); - } catch (GenericEntityException e) { - Debug.logError(e, module); - return ServiceUtil.returnError(e.getMessage()); - } + BigDecimal balance = finAccount.getBigDecimal("actualBalance"); // see if we are within the threshold for replenishment if (balance.compareTo(replenishThreshold) > -1) { 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=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java (original) +++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/finaccount/FinAccountServices.java Tue Mar 27 18:17:00 2007 @@ -127,14 +127,8 @@ } // get the balance - BigDecimal availableBalance; - BigDecimal balance; - try { - availableBalance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); - balance = FinAccountHelper.getBalance(finAccountId, delegator); - } catch (GenericEntityException e) { - return ServiceUtil.returnError(e.getMessage()); - } + BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance"); + BigDecimal balance= finAccount.getBigDecimal("actualBalance"); Debug.log("FinAccount Balance [" + balance + "] Available [" + availableBalance + "]", module); Boolean isFrozen = Boolean.valueOf("Y".equals(finAccount.getString("isFrozen"))); @@ -178,19 +172,14 @@ String frozen = finAccount.getString("isFrozen"); if (frozen == null) frozen = "N"; - BigDecimal balance; - try { - balance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); - } catch (GenericEntityException e) { - return ServiceUtil.returnError(e.getMessage()); - } + BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance"); - if ("N".equals(frozen) && balance.compareTo(FinAccountHelper.ZERO) < 1) { + if ("N".equals(frozen) && FinAccountHelper.ZERO.compareTo(availableBalance) < 1) { finAccount.set("isFrozen", "Y"); - Debug.logInfo("Financial account [" + finAccountId + "] has passed its threshold [" + balance + "] (Frozen)", module); - } else if ("Y".equals(frozen) && balance.compareTo(FinAccountHelper.ZERO) > 0) { + Debug.logInfo("Financial account [" + finAccountId + "] has passed its threshold [" + availableBalance + "] (Frozen)", module); + } else if ("Y".equals(frozen) && FinAccountHelper.ZERO.compareTo(availableBalance) > 0) { finAccount.set("isFrozen", "N"); - Debug.logInfo("Financial account [" + finAccountId + "] has been made current [" + balance + "] (Un-Frozen)", module); + Debug.logInfo("Financial account [" + finAccountId + "] has been made current [" + availableBalance + "] (Un-Frozen)", module); } try { finAccount.store(); Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/GiftCertificateServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/GiftCertificateServices.java?view=diff&rev=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/GiftCertificateServices.java (original) +++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/GiftCertificateServices.java Tue Mar 27 18:17:00 2007 @@ -170,35 +170,41 @@ } String finAccountId = null; + GenericValue finAccount = null; // validate the pin if the store requires it and figure out the finAccountId from card number try { GenericValue giftCertSettings = delegator.findByPrimaryKeyCache("ProductStoreFinActSetting", UtilMisc.toMap("productStoreId", productStoreId, "finAccountTypeId", FinAccountHelper.giftCertFinAccountTypeId)); - if ("Y".equals(giftCertSettings.getString("requirePinCode"))) { - if (!validatePin(delegator, cardNumber, pinNumber)) { - return ServiceUtil.returnError("PIN number is not valid!"); - } - finAccountId = cardNumber; - } else { - GenericValue finAccount = FinAccountHelper.getFinAccountFromCode(cardNumber, delegator); - if (finAccount != null) { - finAccountId = finAccount.getString("finAccountId"); - } - } - } catch (GenericEntityException ex) { - return ServiceUtil.returnError("Cannot get store fin account settings " + ex.getMessage()); + if ("Y".equals(giftCertSettings.getString("requirePinCode"))) { + if (!validatePin(delegator, cardNumber, pinNumber)) { + return ServiceUtil.returnError("PIN number is not valid!"); + } + finAccountId = cardNumber; + } else { + finAccount = FinAccountHelper.getFinAccountFromCode(cardNumber, delegator); + if (finAccount != null) { + finAccountId = finAccount.getString("finAccountId"); + } + } + } catch (GenericEntityException e) { + return ServiceUtil.returnError("Cannot get store financial account settings " + e.getMessage()); } if (finAccountId == null) { return ServiceUtil.returnError("Cannot get fin account for adding to balance"); } + + if (finAccount == null) { + try { + finAccount = delegator.findByPrimaryKey("FinAccount", UtilMisc.toMap("finAccountId", finAccountId)); + } catch (GenericEntityException e) { + return ServiceUtil.returnError("Cannot get financial account settings " + e.getMessage()); + } + } // get the previous balance BigDecimal previousBalance = ZERO; - try { - previousBalance = FinAccountHelper.getAvailableBalance(cardNumber, delegator); - } catch (GeneralException e) { - Debug.logError(e, module); - return ServiceUtil.returnError(e.getMessage()); + if (finAccount.get("availableBalance") != null) { + previousBalance = finAccount.getBigDecimal("availableBalance"); } // create the transaction @@ -207,7 +213,8 @@ try { refNum = GiftCertificateServices.createTransaction(delegator, dispatcher, userLogin, amount, productStoreId, partyId, currencyUom, deposit, finAccountId); - balance = FinAccountHelper.getAvailableBalance(cardNumber, delegator); + finAccount.refresh(); + balance = finAccount.getBigDecimal("availableBalance"); } catch (GeneralException e) { Debug.logError(e, module); return ServiceUtil.returnError(e.getMessage()); @@ -260,14 +267,15 @@ } Debug.logInfo("Attempting to redeem GC for " + amount, module); - // check the actual balance (excluding authorized amounts) and create the transaction if it is sufficient - double previousBalance = 0.00; + GenericValue finAccount = null; try { - previousBalance = FinAccountHelper.getBalance(cardNumber, delegator).doubleValue(); - } catch (GeneralException e) { - Debug.logError(e, module); - return ServiceUtil.returnError(e.getMessage()); + finAccount = delegator.findByPrimaryKey("FinAccount", UtilMisc.toMap("finAccountId", cardNumber)); + } catch (GenericEntityException e) { + return ServiceUtil.returnError("Cannot get financial account settings " + e.getMessage()); } + + // check the actual balance (excluding authorized amounts) and create the transaction if it is sufficient + double previousBalance = finAccount.get("actualBalance") == null ? 0.0 : finAccount.getDouble("actualBalance").doubleValue(); double balance = 0.00; String refNum = null; @@ -276,7 +284,8 @@ try { refNum = GiftCertificateServices.createTransaction(delegator, dispatcher, userLogin, amount, productStoreId, partyId, currencyUom, withdrawl, cardNumber); - balance = FinAccountHelper.getAvailableBalance(cardNumber, delegator).doubleValue(); + finAccount.refresh(); + balance = finAccount.get("availableBalance") == null ? 0.0 : finAccount.getDouble("availableBalance").doubleValue(); procResult = Boolean.TRUE; } catch (GeneralException e) { Debug.logError(e, module); @@ -309,15 +318,17 @@ return ServiceUtil.returnError("PIN number is not valid!"); } - // TODO: get the real currency from context - String currencyUom = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD"); - // get the balance - double balance = 0.00; + GenericValue finAccount = null; try { - balance = FinAccountHelper.getAvailableBalance(cardNumber, delegator).doubleValue(); - } catch (GeneralException e) { - return ServiceUtil.returnError(e.getMessage()); + finAccount = delegator.findByPrimaryKey("FinAccount", UtilMisc.toMap("finAccountId", cardNumber)); + } catch (GenericEntityException e) { + return ServiceUtil.returnError("Cannot get financial account settings " + e.getMessage()); } + + // TODO: get the real currency from context + //String currencyUom = UtilProperties.getPropertyValue("general.properties", "currency.uom.id.default", "USD"); + // get the balance + double balance = finAccount.get("availableBalance") == null ? 0.0 : finAccount.getDouble("availableBalance").doubleValue(); Map result = ServiceUtil.returnSuccess(); result.put("balance", new Double(balance)); @@ -455,7 +466,7 @@ } // check the amount to authorize against the available balance of fin account, which includes active authorizations as well as transactions - BigDecimal availableBalance = FinAccountHelper.getAvailableBalance(finAccountId, delegator); + BigDecimal availableBalance = finAccount.getBigDecimal("availableBalance"); Boolean processResult = null; String refNum = null; Map result = ServiceUtil.returnSuccess(); Modified: ofbiz/trunk/applications/accounting/widget/FinAccountForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/FinAccountForms.xml?view=diff&rev=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/accounting/widget/FinAccountForms.xml (original) +++ ofbiz/trunk/applications/accounting/widget/FinAccountForms.xml Tue Mar 27 18:17:00 2007 @@ -45,15 +45,11 @@ <field-map field-name="orderBy" value="fromDate"/> </service> </actions> + <auto-fields-entity entity-name="FinAccount" default-field-type="display"/> <field name="finAccountId"> <hyperlink description="${finAccountId}" target="EditFinAccount?finAccountId=${finAccountId}"/> </field> <field name="finAccountTypeId"><display-entity entity-name="FinAccountType" description="${description}"/></field> - <field name="finAccountName"><display/></field> - <field name="finAccountCode"><display/></field> - <field name="fromdate"><display/></field> - <field name="thrudate"><display/></field> <field name="deleteLink" title="" widget-style="buttontext"> - <hyperlink target="deleteFinAccount?finAccountId=${finAccountId}" - description="${uiLabelMap.CommonDelete}" also-hidden="false"/> + <hyperlink target="deleteFinAccount?finAccountId=${finAccountId}" description="${uiLabelMap.CommonDelete}" also-hidden="false"/> </field> </form> Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/finaccount/FinAccountHelper.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/finaccount/FinAccountHelper.java?view=diff&rev=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/finaccount/FinAccountHelper.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/finaccount/FinAccountHelper.java Tue Mar 27 18:17:00 2007 @@ -175,6 +175,8 @@ * @throws GenericEntityException */ public static BigDecimal getBalance(String finAccountId, Timestamp asOfDateTime, GenericDelegator delegator) throws GenericEntityException { + if (asOfDateTime == null) asOfDateTime = UtilDateTime.nowTimestamp(); + BigDecimal incrementTotal = ZERO; // total amount of transactions which increase balance BigDecimal decrementTotal = ZERO; // decrease balance @@ -209,17 +211,6 @@ } /** - * Same as above for the current instant - * @param finAccountId - * @param delegator - * @return - * @throws GenericEntityException - */ - public static BigDecimal getBalance(String finAccountId, GenericDelegator delegator) throws GenericEntityException { - return getBalance(finAccountId, UtilDateTime.nowTimestamp(), delegator); - } - - /** * Returns the net balance (see above) minus the sum of all authorization amounts which are not expired and were authorized by the as of date * @param finAccountId * @param asOfDateTime @@ -228,6 +219,8 @@ * @throws GenericEntityException */ public static BigDecimal getAvailableBalance(String finAccountId, Timestamp asOfDateTime, GenericDelegator delegator) throws GenericEntityException { + if (asOfDateTime == null) asOfDateTime = UtilDateTime.nowTimestamp(); + BigDecimal netBalance = getBalance(finAccountId, asOfDateTime, delegator); // find sum of all authorizations which are not expired and which were authorized before as of time @@ -244,17 +237,6 @@ // the total available balance is transactions total minus authorizations total return netBalance.subtract(authorizationsTotal).setScale(decimals, rounding); } - - /** - * Same as above for the current instant - * @param finAccountId - * @param delegator - * @return - * @throws GenericEntityException - */ - public static BigDecimal getAvailableBalance(String finAccountId, GenericDelegator delegator) throws GenericEntityException { - return getAvailableBalance(finAccountId, UtilDateTime.nowTimestamp(), delegator); - } public static boolean validateFinAccount(GenericValue finAccount) { return false; Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?view=diff&rev=523131&r1=523130&r2=523131 ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java Tue Mar 27 18:17:00 2007 @@ -416,8 +416,8 @@ errMsg = UtilProperties.getMessage(resource,"checkhelper.gift_card_does_not_exist", (cart != null ? cart.getLocale() : Locale.getDefault())); errorMessages.add(errMsg); gcFieldsOkay = false; - } else if ((FinAccountHelper.getAvailableBalance(finAccount.getString("finAccountId"), delegator) == null) || - !(FinAccountHelper.getAvailableBalance(finAccount.getString("finAccountId"), delegator).compareTo(FinAccountHelper.ZERO) == 1)) { + } else if ((finAccount.getBigDecimal("availableBalance") == null) || + !((finAccount.getBigDecimal("availableBalance")).compareTo(FinAccountHelper.ZERO) > 0)) { // if account's available balance (including authorizations) is not greater than zero, then return an error errMsg = UtilProperties.getMessage(resource,"checkhelper.gift_card_has_no_value", (cart != null ? cart.getLocale() : Locale.getDefault())); errorMessages.add(errMsg); |
Free forum by Nabble | Edit this page |