[ 
https://issues.apache.org/jira/browse/OFBIZ-5549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13914098#comment-13914098
 ] 

Robert Gan commented on OFBIZ-5549:
-----------------------------------

If forgot sth. The Splitpayment on billing account (capture of amounts smaller 
than invoice total) was also with a bug.

The service processCaptureSplitPayment could not create the new entry in the 
OrderPaymentPreference Entity for the outstanding amount after capture. The 
reason was that the paymentMethodId for BillingAccounts is not available, so it 
is null and it was not possible to insert the new entry with a null value, 
because than there is a constraint to PaymentMethod.

So I remove the paymentMethodId in case of a Billingaccount:

I changed:
... 
                newPref.set("paymentMethodId", 
paymentPref.get("paymentMethodId"));
...

to 
        // Bug behoben. Ein BillingAccount hat keine PAYMENT_METHOD_ID!!
        if 
(!"EXT_BILLACT".equals(paymentPref.getString("paymentMethodTypeId"))) { 
                newPref.set("paymentMethodId", 
paymentPref.get("paymentMethodId"));
        }
        

> getBillingAccountBalance wrong viewEntity OrderPurchasePaymentSummary
> ---------------------------------------------------------------------
>
>                 Key: OFBIZ-5549
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-5549
>             Project: OFBiz
>          Issue Type: Bug
>          Components: accounting
>            Reporter: Robert Gan
>              Labels: BillingAccountWorker, OrderPurchasePaymentSummary, 
> getBillingAccountBalance
>
> To get the billing account balance the Method 
> getBillingAccountBalance(GenericValue billingAccount) Method in Class 
> BillingAccountWorker is called. To calculate the balance the Method checks 
> the viewentity "OrderPurchasePaymentSummary". 
> When I have an Invoice created and the customer makes a payment smaller than 
> the invoice amount. In this case there is a split payment created and the 
> Entity OrderPaymentPreference gets a second entry for that Order (normally 
> only one is there). The above named view entity collects the orderHeader and 
> the OrderPaymentPreference entity (and other irrelevant ones). The viewentity 
> entry "grandTotal" from orderHeader is 2 times therebecause of the 2 
> OrderPaymentPreference entries. Here is the bug: The creation of the 
> viewentity (in entityModel_view.xml) is set for grandTotal with:
> <alias entity-alias="OH" name="grandTotal" function="sum"/>
> The sum function sums the grandTotal entries. But because now we have 2 
> OrderPaymentPreference entries, we sum the grandTotal field 2 times, which is 
> wrong and results in a wrong balance.
> I am not sure for what the viewEntity is also used, but I fixed it with 
> removing the sum function, so that it looks like that:
> <alias entity-alias="OH" name="grandTotal" group-by="true"/>
> Is this way safe? I think because I dont know any case where we have more 
> than one orderHeader for an order. Am I wrong?
> the complete view entity (corrected) is here:
> <view-entity entity-name="OrderPurchasePaymentSummary"
>             package-name="org.ofbiz.order.order"
>             never-cache="true"
>             title="Order Purchase Payment Summary View Entity">
>       <member-entity entity-alias="OH" entity-name="OrderHeader"/>
>       <member-entity entity-alias="OPP" entity-name="OrderPaymentPreference"/>
>       <member-entity entity-alias="PMT" entity-name="PaymentMethodType"/>
>       <!-- only the fields desired should be included in fields-to-select, 
> and can otherwise be used as select critera (or both too) -->
>       <alias entity-alias="OH" name="webSiteId" group-by="true"/>
>       <alias entity-alias="OH" name="productStoreId" group-by="true"/>
>       <alias entity-alias="OH" name="originFacilityId" group-by="true"/>
>       <alias entity-alias="OH" name="terminalId" group-by="true"/>
>       <alias entity-alias="OH" name="statusId" group-by="true"/>
>       <alias entity-alias="OPP" name="paymentMethodTypeId" group-by="true"/>
>       <alias entity-alias="PMT" name="description" group-by="true"/>
>       <alias entity-alias="OPP" name="maxAmount" function="sum"/>
>       <alias entity-alias="OH" name="orderId" group-by="true"/>
>       <alias entity-alias="OH" name="orderTypeId" group-by="true"/>
>        <alias entity-alias="OH" name="grandTotal" group-by="true"/>
>       <alias entity-alias="OH" name="orderDate" group-by="true"/>
>       <alias entity-alias="OH" name="billingAccountId" group-by="true"/>
>       <alias entity-alias="OPP" name="preferenceStatusId" field="statusId" 
> group-by="true"/>
>       <view-link entity-alias="OH" rel-entity-alias="OPP">
>         <key-map field-name="orderId"/>
>       </view-link>
>       <view-link entity-alias="OPP" rel-entity-alias="PMT">
>         <key-map field-name="paymentMethodTypeId"/>
>       </view-link>
>     </view-entity>



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to