Author: lektran
Date: Fri Jul 6 22:30:58 2007
New Revision: 554136
URL: http://svn.apache.org/viewvc?view=rev&rev=554136
Log:
Applied fix from trunk for revision: 543923
Modified:
ofbiz/branches/release4.0/applications/accounting/servicedef/services_paymentmethod.xml
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
ofbiz/branches/release4.0/applications/accounting/widget/BillingAccountForms.xml
ofbiz/branches/release4.0/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
ofbiz/branches/release4.0/applications/order/webapp/ordermgr/entry/billsettings.ftl
Modified:
ofbiz/branches/release4.0/applications/accounting/servicedef/services_paymentmethod.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/accounting/servicedef/services_paymentmethod.xml?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/accounting/servicedef/services_paymentmethod.xml
(original)
+++
ofbiz/branches/release4.0/applications/accounting/servicedef/services_paymentmethod.xml
Fri Jul 6 22:30:58 2007
@@ -275,6 +275,7 @@
<attribute name="processResult" type="String" mode="OUT"
optional="false"/>
</service>
+ <!-- deprecated in favour of captureBillingAccountPayments -->
<service name="captureBillingAccountPayment" engine="java"
location="org.ofbiz.accounting.payment.PaymentGatewayServices"
invoke="captureBillingAccountPayment" auth="true">
<description>Records a settlement or payment of an invoice by a
billing account for the given captureAmount</description>
@@ -284,6 +285,14 @@
<attribute name="orderId" type="String" mode="IN" optional="true"/>
<attribute name="paymentId" type="String" mode="OUT" optional="false"/>
<attribute name="paymentGatewayResponseId" type="String" mode="OUT"
optional="true"/>
+ </service>
+ <service name="captureBillingAccountPayments" engine="java"
+ location="org.ofbiz.accounting.payment.PaymentGatewayServices"
invoke="captureBillingAccountPayments" auth="true">
+ <description>Applies (part of) the unapplied payment applications
associated to the billing account to the given invoice.</description>
+ <attribute name="billingAccountId" type="String" mode="IN"
optional="false"/>
+ <attribute name="invoiceId" type="String" mode="IN" optional="false"/>
+ <attribute name="captureAmount" type="Double" mode="INOUT"
optional="false"/>
+ <attribute name="orderId" type="String" mode="IN" optional="true"/>
</service>
<service name="processCaptureSplitPayment" engine="java"
require-new-transaction="true"
Modified:
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
(original)
+++
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
Fri Jul 6 22:30:58 2007
@@ -32,6 +32,7 @@
import org.ofbiz.base.util.UtilDateTime;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilNumber;
+import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.GenericDelegator;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
@@ -123,15 +124,59 @@
}
/**
- * Calculates the "available" balance of a billing account, which is net
balance minus amount of pending (not canceled, rejected, or completed) orders.
- * Available balance will not exceed billing account's accountLimit.
- * When looking at using a billing account for a new order, you should use
this method.
- * @param delegator
+ * Calculates the "available" balance of a billing account, which is the
+ * net balance minus amount of pending (not cancelled, rejected, or
received) order payments.
+ * When looking at using a billing account for a new order, you should use
this method.
* @param billingAccountId
+ * @param delegator
* @return
* @throws GenericEntityException
*/
+ public static BigDecimal getBillingAccountBalance(GenericDelegator
delegator, String billingAccountId) throws GenericEntityException {
+ GenericValue billingAccount =
delegator.findByPrimaryKey("BillingAccount", UtilMisc.toMap("billingAccountId",
billingAccountId));
+ return getBillingAccountBalance(billingAccount);
+ }
+
public static BigDecimal getBillingAccountBalance(GenericValue
billingAccount) throws GenericEntityException {
+
+ GenericDelegator delegator = billingAccount.getDelegator();
+ String billingAccountId = billingAccount.getString("billingAccountId");
+
+ BigDecimal balance = ZERO;
+ BigDecimal accountLimit = getAccountLimit(billingAccount);
+ balance = balance.add(accountLimit);
+ // pending (not cancelled, rejected, or received) order payments
+ EntityConditionList whereConditions = new
EntityConditionList(UtilMisc.toList(
+ new EntityExpr("billingAccountId", EntityOperator.EQUALS,
billingAccountId),
+ new EntityExpr("paymentMethodTypeId", EntityOperator.EQUALS,
"EXT_BILLACT"),
+ new EntityExpr("statusId", EntityOperator.NOT_IN,
UtilMisc.toList("ORDER_CANCELLED", "ORDER_REJECTED")),
+ new EntityExpr("preferenceStatusId", EntityOperator.NOT_IN,
UtilMisc.toList("PAYMENT_SETTLED", "PAYMENT_RECEIVED", "PAYMENT_DECLINED",
"PAYMENT_CANCELLED")) // PAYMENT_NOT_AUTH
+ ), EntityOperator.AND);
+
+ GenericValue orderPaymentPreferenceSum =
EntityUtil.getFirst(delegator.findByCondition("OrderPurchasePaymentSummary",
whereConditions, null, UtilMisc.toList("maxAmount"), null, null));
+ BigDecimal ordersTotal = null;
+ if (UtilValidate.isNotEmpty(orderPaymentPreferenceSum)) {
+ ordersTotal = orderPaymentPreferenceSum.getBigDecimal("maxAmount");
+ } else {
+ ordersTotal = ZERO;
+ }
+ balance = balance.subtract(ordersTotal);
+
+ List paymentAppls = delegator.findByAnd("PaymentApplication",
UtilMisc.toMap("billingAccountId", billingAccountId));
+ // TODO: cancelled payments?
+ if (paymentAppls != null) {
+ for (Iterator pAi = paymentAppls.iterator(); pAi.hasNext(); ) {
+ GenericValue paymentAppl = (GenericValue) pAi.next();
+ if (paymentAppl.getString("invoiceId") == null) {
+ BigDecimal amountApplied =
paymentAppl.getBigDecimal("amountApplied");
+ balance = balance.add(amountApplied);
+ }
+ }
+ }
+
+ balance = balance.setScale(decimals, rounding);
+ return balance;
+ /*
GenericDelegator delegator = billingAccount.getDelegator();
String billingAccountId = billingAccount.getString("billingAccountId");
@@ -160,6 +205,7 @@
balance = balance.setScale(decimals, rounding);
}
return balance;
+ */
}
/**
@@ -172,11 +218,6 @@
new EntityExpr("statusId", EntityOperator.NOT_EQUAL,
"ORDER_CANCELLED"),
new EntityExpr("statusId", EntityOperator.NOT_EQUAL,
"ORDER_COMPLETED")));
}
-
- public static BigDecimal getBillingAccountBalance(GenericDelegator
delegator, String billingAccountId) throws GenericEntityException {
- GenericValue billingAccount =
delegator.findByPrimaryKey("BillingAccount", UtilMisc.toMap("billingAccountId",
billingAccountId));
- return getBillingAccountBalance(billingAccount);
- }
/**
* Returns the amount which could be charged to a billing account, which
is defined as the accountLimit minus account balance and minus the balance of
outstanding orders
Modified:
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
(original)
+++
ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
Fri Jul 6 22:30:58 2007
@@ -34,6 +34,7 @@
import org.ofbiz.base.util.UtilProperties;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericEntity;
import org.ofbiz.entity.GenericEntityException;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.condition.EntityCondition;
@@ -968,7 +969,7 @@
}
// get the invoice amount (amount to bill)
- double invoiceTotal = InvoiceWorker.getInvoiceTotal(invoice);
+ double invoiceTotal =
InvoiceWorker.getInvoiceNotApplied(invoice).doubleValue();
if (Debug.infoOn()) Debug.logInfo("(Capture) Invoice [#" + invoiceId +
"] total: " + invoiceTotal, module);
// now capture the order
@@ -1001,6 +1002,7 @@
// get the order header and payment preferences
GenericValue orderHeader = null;
List paymentPrefs = null;
+ List paymentPrefsBa = null;
try {
orderHeader = delegator.findByPrimaryKey("OrderHeader",
UtilMisc.toMap("orderId", orderId));
@@ -1009,6 +1011,11 @@
Map lookupMap = UtilMisc.toMap("orderId", orderId, "statusId",
"PAYMENT_AUTHORIZED");
List orderList = UtilMisc.toList("-maxAmount");
paymentPrefs = delegator.findByAnd("OrderPaymentPreference",
lookupMap, orderList);
+
+ if (UtilValidate.isNotEmpty(billingAccountId)) {
+ lookupMap = UtilMisc.toMap("orderId", orderId,
"paymentMethodTypeId", "EXT_BILLACT", "statusId", "PAYMENT_NOT_RECEIVED");
+ paymentPrefsBa = delegator.findByAnd("OrderPaymentPreference",
lookupMap, orderList);
+ }
} catch (GenericEntityException gee) {
Debug.logError(gee, "Problems getting entity record(s), see stack
trace", module);
return ServiceUtil.returnError("ERROR: Could not get order
information (" + gee.toString() + ").");
@@ -1032,68 +1039,95 @@
amountToCapture = amountToCapture.min(remainingTotalBd);
if (Debug.infoOn()) Debug.logInfo("Actual Expected Capture Amount : "
+ amountToCapture, module);
- // See if there is a billing account first. If so, just charge the
captureAmount to the billing account via PaymentApplication
- GenericValue billingAccount = null;
- BigDecimal billingAccountAvail = null;
- BigDecimal billingAccountCaptureAmount = ZERO;
- Map billingAccountInfo = null;
- if (UtilValidate.isNotEmpty(billingAccountId)) {
- try {
- billingAccountInfo =
dispatcher.runSync("calcBillingAccountBalance",
UtilMisc.toMap("billingAccountId", billingAccountId));
- } catch (GenericServiceException e) {
- Debug.logError(e, "Unable to get billing account information
for #" + billingAccountId, module);
- }
- }
- if (billingAccountInfo != null) {
- billingAccount = (GenericValue)
billingAccountInfo.get("billingAccount");
- // use available to capture because we want to know how much we
can charge to a billing account
- Double availableToCapture = (Double)
billingAccountInfo.get("availableToCapture");
- billingAccountAvail = new
BigDecimal(availableToCapture.doubleValue());
- }
-
- // if a billing account is used to pay for an order, then charge as
much as we can to it before proceeding to other payment methods.
- if (billingAccount != null && billingAccountAvail != null) {
- try {
- // the amount to be "charged" to the billing account, which is
the minimum of the amount the order wants to charge to the billing account
- // or the amount still available for capturing from the
billing account or the total amount to be captured on the order
- BigDecimal billingAccountMaxAmount = new
BigDecimal(orh.getBillingAccountMaxAmount());
- billingAccountCaptureAmount =
billingAccountMaxAmount.min(billingAccountAvail).min(amountToCapture);
- Debug.logInfo("billing account avail = [" +
billingAccountAvail + "] capture amount = [" + billingAccountCaptureAmount + "]
maxAmount = ["+billingAccountMaxAmount+"]", module);
- // capturing to a billing account if amount is greater than
zero
- if (billingAccountCaptureAmount.compareTo(ZERO) == 1) {
- Map tmpResult =
dispatcher.runSync("captureBillingAccountPayment", UtilMisc.toMap("invoiceId",
invoiceId, "billingAccountId", billingAccountId,
- "captureAmount", new
Double(billingAccountCaptureAmount.doubleValue()), "orderId", orderId,
"userLogin", userLogin));
- if (ServiceUtil.isError(tmpResult)) {
- return tmpResult;
+ // Process billing accounts payments
+ if (UtilValidate.isNotEmpty(paymentPrefsBa)) {
+ Iterator paymentsBa = paymentPrefsBa.iterator();
+ while (paymentsBa.hasNext()) {
+ GenericValue paymentPref = (GenericValue) paymentsBa.next();
+
+ BigDecimal authAmount = paymentPref.getBigDecimal("maxAmount");
+ if (authAmount == null) authAmount = new BigDecimal(0.00);
+ authAmount = authAmount.setScale(2, BigDecimal.ROUND_HALF_UP);
+
+ if (authAmount.compareTo(ZERO) == 0) {
+ // nothing to capture
+ Debug.logInfo("Nothing to capture; authAmount = 0",
module);
+ continue;
+ }
+ // the amount for *this* capture
+ BigDecimal amountThisCapture = amountToCapture.min(authAmount);
+
+ // decrease amount of next payment preference to capture
+ amountToCapture = amountToCapture.subtract(amountThisCapture);
+
+ // If we have an invoice, we find unapplied payments associated
+ // to the billing account and we apply them to the invoice
+ if (UtilValidate.isNotEmpty(invoiceId)) {
+ // TODO: jacopo continue from here...
+ // cercare le paymentapplication non applicate e associate
al billing account e il cui
+ // pagamento non abbia una orderPaymentPreferenceId
+ // creare nuova payment application fino a raggiungere
l'importo necessario o fino ad esaurimento
+ // e associarle alla fattura; se la fattura non esiste,
non fare nulla
+ Map captureResult = null;
+ try {
+ captureResult =
dispatcher.runSync("captureBillingAccountPayments", UtilMisc.toMap("invoiceId",
invoiceId,
+
"billingAccountId", billingAccountId,
+
"captureAmount", new
Double(amountThisCapture.doubleValue()),
+
"orderId", orderId,
+
"userLogin", userLogin));
+ if (ServiceUtil.isError(captureResult)) {
+ return captureResult;
+ }
+ } catch (GenericServiceException ex) {
+ return ServiceUtil.returnError(ex.getMessage());
}
+ if (captureResult != null) {
+
+ Double amountCaptured = (Double)
captureResult.get("captureAmount");
+ Debug.logInfo("Amount captured for order [" + orderId
+ "] from unapplied payments associated to billing account [" +
billingAccountId + "] is: " + amountCaptured, module);
- // now, if the full amount had not been captured, then
capture
- // it from other methods, otherwise return
- if (billingAccountCaptureAmount.compareTo(amountToCapture)
== -1) {
- BigDecimal outstandingAmount =
amountToCapture.subtract(billingAccountCaptureAmount).setScale(decimals,
rounding);
- amountToCapture = outstandingAmount;
+ // big decimal reference to the capture amount
+ BigDecimal amountCapturedBd = new
BigDecimal(amountCaptured.doubleValue());
+ amountCapturedBd = amountCapturedBd.setScale(2,
BigDecimal.ROUND_HALF_UP);
+
+ if (amountCapturedBd.compareTo(BigDecimal.ZERO) == 0) {
+ continue;
+ }
+ // add the invoiceId to the result for processing
+ captureResult.put("invoiceId", invoiceId);
+ captureResult.put("captureResult", Boolean.TRUE);
+ captureResult.put("orderPaymentPreference",
paymentPref);
+ captureResult.put("captureRefNum", ""); // FIXME: this
is an hack to avoid a service validation error for processCaptureResult
(captureRefNum is mandatory, but it is not used for billing accounts)
+
+ // process the capture's results
+ try {
+ // the following method will set on the
OrderPaymentPreference:
+ // maxAmount = amountCapturedBd and
+ // statusId = PAYMENT_RECEIVED
+ processResult(dctx, captureResult, userLogin,
paymentPref);
+ } catch (GeneralException e) {
+ Debug.logError(e, "Trouble processing the result;
captureResult: " + captureResult, module);
+ return ServiceUtil.returnError("Trouble processing
the capture results");
+ }
+
+ // create any splits which are needed
+ if (authAmount.compareTo(amountCapturedBd) == 1) {
+ BigDecimal splitAmount =
authAmount.subtract(amountCapturedBd);
+ try {
+ Map splitCtx = UtilMisc.toMap("userLogin",
userLogin, "orderPaymentPreference", paymentPref, "splitAmount", splitAmount);
+
dispatcher.addCommitService("processCaptureSplitPayment", splitCtx, true);
+ } catch (GenericServiceException e) {
+ Debug.logWarning(e, "Problem processing the
capture split payment", module);
+ }
+ Debug.logInfo("Captured: " + amountThisCapture + "
Remaining (re-auth): " + splitAmount, module);
+ }
} else {
- Debug.logInfo("Amount to capture [" + amountToCapture
+ "] was fully captured in Payment [" + tmpResult.get("paymentId") + "].",
module);
- Map result = ServiceUtil.returnSuccess();
- result.put("processResult", "COMPLETE");
- return result;
+ Debug.logError("Payment not captured for order [" +
orderId + "] from billing account [" + billingAccountId + "]", module);
}
- }
- } catch (GenericServiceException ex) {
- return ServiceUtil.returnError(ex.getMessage());
+ }
}
- }
-
- // return complete if no payment prefs were found
- if (paymentPrefs == null || paymentPrefs.size() == 0) {
- Debug.logWarning("No orderPaymentPreferences available to
capture", module);
- Map result = ServiceUtil.returnSuccess();
- result.put("processResult", "COMPLETE");
- return result;
}
- if (Debug.infoOn()) Debug.logInfo("Actual Expected Capture Amount : "
+ amountToCapture, module);
-
// iterate over the prefs and capture each one until we meet our total
if (UtilValidate.isNotEmpty(paymentPrefs)) {
Iterator payments = paymentPrefs.iterator();
@@ -1122,12 +1156,6 @@
continue;
}
- // if we have a billing account; total up auth + account
available
- BigDecimal amountToBillAccount = ZERO;
- if (billingAccountAvail != null) {
- amountToBillAccount =
authAmount.add(billingAccountAvail).setScale(2, BigDecimal.ROUND_HALF_UP);
- }
-
// the amount for *this* capture
BigDecimal amountThisCapture;
@@ -1138,9 +1166,6 @@
} else if (payments.hasNext()) {
// if we have more payments to capture; just capture what
was authorized
amountThisCapture = authAmount;
- } else if (billingAccountAvail != null &&
amountToBillAccount.compareTo(amountToCapture) >= 0) {
- // the provided billing account will cover the remaining;
just capture what was autorized
- amountThisCapture = authAmount;
} else {
// we need to capture more then what was authorized;
re-auth for the new amount
// TODO: add what the billing account cannot support to
the re-auth amount
@@ -1150,7 +1175,6 @@
amountThisCapture = authAmount;
}
- Debug.logInfo("Payment preference = [" + paymentPref + "]
amount to capture = [" + amountToCapture +"] amount of this capture = [" +
amountThisCapture +"] actual auth amount =[" + authAmount + "]
amountToBillAccount = [" + amountToBillAccount + "]", module);
Map captureResult = capturePayment(dctx, userLogin, orh,
paymentPref, amountThisCapture.doubleValue());
if (captureResult != null &&
!ServiceUtil.isError(captureResult)) {
// credit card processors return captureAmount, but gift
certificate processors return processAmount
@@ -1269,6 +1293,7 @@
return ServiceUtil.returnSuccess();
}
+ // Deprecated: use captureBillingAccountPayments instead of this.
public static Map captureBillingAccountPayment(DispatchContext dctx, Map
context) {
GenericDelegator delegator = dctx.getDelegator();
LocalDispatcher dispatcher = dctx.getDispatcher();
@@ -1349,6 +1374,66 @@
return ServiceUtil.returnError(ex.getMessage());
}
+ return results;
+ }
+
+ public static Map captureBillingAccountPayments(DispatchContext dctx, Map
context) {
+ GenericDelegator delegator = dctx.getDelegator();
+ LocalDispatcher dispatcher = dctx.getDispatcher();
+ GenericValue userLogin = (GenericValue) context.get("userLogin");
+ String invoiceId = (String) context.get("invoiceId");
+ String billingAccountId = (String) context.get("billingAccountId");
+ Double captureAmountDbl = (Double) context.get("captureAmount");
+ BigDecimal captureAmount = new
BigDecimal(captureAmountDbl.doubleValue());
+ String orderId = (String) context.get("orderId");
+ BigDecimal capturedAmount = BigDecimal.ZERO;
+
+ try {
+ // Select all the unapplied payment applications associated to the
billing account
+ List conditionList = UtilMisc.toList(new
EntityExpr("billingAccountId", EntityOperator.EQUALS, billingAccountId),
+ new EntityExpr("invoiceId",
EntityOperator.EQUALS, GenericEntity.NULL_FIELD));
+ EntityCondition conditions = new
EntityConditionList(conditionList, EntityOperator.AND);
+
+ List paymentApplications =
delegator.findByCondition("PaymentApplication", conditions, null,
UtilMisc.toList("-amountApplied"));
+ if (UtilValidate.isNotEmpty(paymentApplications)) {
+ Iterator paymentApplicationsIt =
paymentApplications.iterator();
+ while (paymentApplicationsIt.hasNext()) {
+ if (capturedAmount.compareTo(captureAmount) >= 0) {
+ // we have captured all the amount required
+ break;
+ }
+ GenericValue paymentApplication =
(GenericValue)paymentApplicationsIt.next();
+ GenericValue payment =
paymentApplication.getRelatedOne("Payment");
+ if (payment.getString("paymentPreferenceId") != null) {
+ // if the payment is reserved for a specific
OrderPaymentPreference,
+ // we don't use it.
+ continue;
+ }
+ // TODO: check the statusId of the payment
+ BigDecimal paymentApplicationAmount =
paymentApplication.getBigDecimal("amountApplied");
+ BigDecimal amountToCapture =
paymentApplicationAmount.min(captureAmount.subtract(capturedAmount));
+ if (amountToCapture.compareTo(paymentApplicationAmount) ==
0) {
+ // apply the whole payment application to the invoice
+ paymentApplication.set("invoiceId", invoiceId);
+ paymentApplication.store();
+ } else {
+ // the amount to capture is lower than the amount
available in this payment application:
+ // split the payment application into two records and
apply one to the invoice
+ GenericValue newPaymentApplication =
delegator.makeValue("PaymentApplication", paymentApplication);
+ paymentApplication.set("invoiceId", invoiceId);
+ paymentApplication.set("amountApplied",
amountToCapture);
+ paymentApplication.store();
+ newPaymentApplication.set("amountApplied",
paymentApplicationAmount.subtract(amountToCapture));
+ newPaymentApplication.store();
+ }
+ capturedAmount = capturedAmount.add(amountToCapture);
+ }
+ }
+ } catch (GenericEntityException ex) {
+ return ServiceUtil.returnError(ex.getMessage());
+ }
+ Map results = ServiceUtil.returnSuccess();
+ results.put("captureAmount", new Double(capturedAmount.doubleValue()));
return results;
}
Modified:
ofbiz/branches/release4.0/applications/accounting/widget/BillingAccountForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/accounting/widget/BillingAccountForms.xml?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/accounting/widget/BillingAccountForms.xml
(original)
+++
ofbiz/branches/release4.0/applications/accounting/widget/BillingAccountForms.xml
Fri Jul 6 22:30:58 2007
@@ -46,11 +46,13 @@
</entity-options>
</drop-down>
</field>
+ <!--
<field name="netBalance"
title="${uiLabelMap.AccountingBillingNetBalance}"
tooltip="${uiLabelMap.AccountingBillingNetBalanceMessage}">
<display
description="${bsh:org.ofbiz.accounting.payment.BillingAccountWorker.getBillingAccountNetBalance(delegator,
billingAccountId)}" type="currency"
currency="${billingAccount.accountCurrencyUomId}"/>
</field>
+ -->
<field name="availableBalance"
title="${uiLabelMap.AccountingBillingAvailableBalance}"
tooltip="${uiLabelMap.AccountingBillingAvailableBalanceMessage}">
- <display
description="${bsh:org.ofbiz.accounting.payment.BillingAccountWorker.getBillingAccountAvailableBalance(billingAccount)}"
type="currency" currency="${billingAccount.accountCurrencyUomId}"/>
+ <display
description="${bsh:org.ofbiz.accounting.payment.BillingAccountWorker.getBillingAccountBalance(billingAccount)}"
type="currency" currency="${billingAccount.accountCurrencyUomId}"/>
</field>
<field name="submitButton" title="${uiLabelMap.CommonUpdate}"
widget-style="smallSubmit"><submit button-type="button"/></field>
Modified:
ofbiz/branches/release4.0/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
(original)
+++
ofbiz/branches/release4.0/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
Fri Jul 6 22:30:58 2007
@@ -1395,7 +1395,7 @@
if (billingAccountId == null) return 0.0;
try {
Map res = dispatcher.runSync("calcBillingAccountBalance",
UtilMisc.toMap("billingAccountId", billingAccountId));
- Double availableBalance = (Double) res.get("availableBalance");
+ Double availableBalance = (Double) res.get("accountBalance");
if (availableBalance != null) {
return availableBalance.doubleValue();
}
Modified:
ofbiz/branches/release4.0/applications/order/webapp/ordermgr/entry/billsettings.ftl
URL:
http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/order/webapp/ordermgr/entry/billsettings.ftl?view=diff&rev=554136&r1=554135&r2=554136
==============================================================================
---
ofbiz/branches/release4.0/applications/order/webapp/ordermgr/entry/billsettings.ftl
(original)
+++
ofbiz/branches/release4.0/applications/order/webapp/ordermgr/entry/billsettings.ftl
Fri Jul 6 22:30:58 2007
@@ -87,7 +87,7 @@
</tr>
<tr><td colspan="3"><hr class="sepbar"/></td></tr>
<#list billingAccountList as billingAccount>
- <#assign availableAmount =
billingAccount.accountLimit?double - billingAccount.accountBalance?double>
+ <#assign availableAmount =
billingAccount.accountBalance?double>
<tr>
<td align="left" valign="top" width="1%">
<input type="radio"
onClick="javascript:toggleBillingAccount(this);" name="billingAccountId"
value="${billingAccount.billingAccountId}" <#if
(billingAccount.billingAccountId ==
selectedBillingAccountId?default(""))>checked="checked"</#if>/>