[
https://issues.apache.org/jira/browse/OFBIZ-6347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14537165#comment-14537165
]
Mohammad Kathawala commented on OFBIZ-6347:
-------------------------------------------
Jacopo, the issue happens specifically when the amount entered for billing
account is 0.
It goes into this block, only when the 'billingAccountAmt' which is amount
entered for billing account is 0 or less.
if (getBillingAccountId() != null &&
this.billingAccountAmt.compareTo(BigDecimal.ZERO) <= 0) {
BigDecimal billingAccountAvailableAmount =
CheckOutHelper.availableAccountBalance(getBillingAccountId(), dispatcher);
if (this.billingAccountAmt.compareTo(BigDecimal.ZERO) == 0 &&
billingAccountAvailableAmount.compareTo(BigDecimal.ZERO) > 0) {
this.billingAccountAmt = billingAccountAvailableAmount;
}
if (remainingAmount.compareTo(getBillingAccountAmount()) < 0) {
this.billingAccountAmt = remainingAmount;
}
if
(billingAccountAvailableAmount.compareTo(getBillingAccountAmount()) < 0) {
this.billingAccountAmt = billingAccountAvailableAmount;
}
BigDecimal billingAccountAmountSelected = getBillingAccountAmount();
GenericValue opp = delegator.makeValue("OrderPaymentPreference",
new HashMap<String, Object>());
opp.set("paymentMethodTypeId", "EXT_BILLACT");
opp.set("presentFlag", "N");
opp.set("overflowFlag", "N");
opp.set("maxAmount", billingAccountAmountSelected);
opp.set("statusId", "PAYMENT_NOT_RECEIVED");
allOpPrefs.add(opp);
remainingAmount =
remainingAmount.subtract(billingAccountAmountSelected);
if (remainingAmount.compareTo(BigDecimal.ZERO) < 0) {
remainingAmount = BigDecimal.ZERO;
}
}
As far as I get, the code inside this block assigns the available billing
account amount or remaining amount whichever is less to billing account amount
and creates a payment preference with that amount.
Again outside this block, it runs a loop of all the Cart Payment Info and
creates order payment preference for each.
> Two order payment preferences are added to order, when order of order total
> 0(zero) is placed with Billing Account
> ------------------------------------------------------------------------------------------------------------------
>
> Key: OFBIZ-6347
> URL: https://issues.apache.org/jira/browse/OFBIZ-6347
> Project: OFBiz
> Issue Type: Bug
> Components: order
> Affects Versions: Trunk, 14.12.01
> Reporter: Mohammad Kathawala
> Priority: Minor
> Attachments: OFBIZ-6347.patch
>
>
> Scenario:
> Place an order of order total zero(0) with Billing Account as payment
> option.
> Issue:
> Order gets placed successfully, but order payment preference of billing
> account gets created twice.
> Steps to generate the issue:
> 1) Add promotions of Free Shipping and Free Tax from catalog for order
> 2) Go to order entry process and add customer
> 3) Add product to order and make its price 0.00 so that the cart total will
> be 0.00
> 4) Finalize order with Billing Account as Payment option and Create Order.
> Reason:
> The code written for creating order payment preferences in
> 'makeAllOrderPaymentInfos' of ShoppingCart.java is creating issue.
> There is no need to create the order payment preference after recalculating
> Billing account amount as it is done later in the CartPaymentInfo loop.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)