[ http://issues.apache.org/jira/browse/OFBIZ-93?page=comments#action_12457609 ] Jacopo Cappellato commented on OFBIZ-93: ----------------------------------------
Si, all, in rev 486051 I've committed a change that should fix the BillingAccountWorker.getBillingAccountNetBalance method. I've not refactored the code using the PaymentApplicationWithDetails entity (as you had suggested) in order to minimize the modifications I did make as clearer as possible the change I did; another reason is that I think there are other things we should fix in this area that I would like to discuss with you all (in my next comment) and so there will be soon other chances to optimize the code. > Support BillingAcct + PaymentMethod for Payment > ----------------------------------------------- > > Key: OFBIZ-93 > URL: http://issues.apache.org/jira/browse/OFBIZ-93 > Project: OFBiz (The Open for Business Project) > Issue Type: Improvement > Components: accounting > Reporter: Si Chen > Assigned To: Si Chen > Attachments: ofbiz-93.patch > > > The requirement is that a customer be able to use a billing account plus > another form of payment, such as a credit card, for payment on an order. The > billing account is to be used first. > This would require the following changes: > 1. In PaymentGatewayServices.java captureOrderPayments method, if the > billing account has a positive balance, then first create a Payment of the > EXT_BILL_ACT type, then a PaymentApplication of amountApplied = min(billing > account balance, amount to capture.) This PaymentApplication MUST have an > invoiceId which is already supplied as a parameter of the service. > (Otherwise, the billing account balance will go down by the > PaymentApplication.amountApplied) If there is an amount left over to > capture, then amountToCapture = amountToCapture - billingAccountBalance. We > can then loop through the OrderPaymentPreference to try to capture the > remaining amount. > 2. In BillingAccountWorker.getBillingAccountBalance, we need to replace > current code which just loops through all invoices which are not PAID or > CANCELLED and adds up their unpaid balances with new code which would find > all PaymentApplication for which there is a billingAccountId and add up the > amountApplied. This must be done because otherwise, once an invoice has been > marked PAID, there would be no way to record that a portion of the billing > account has been used to pay that invoice and hence permanently decrease its > amount. > On the mailing list we had discussed making the order of payment capture > configurable. I can't think of an easy way to do this, however, with the > current data model. I propose that for now we have PaymentGatewayServices > basically capture billing account first, then other payment methods, which is > a standard B2C process. If you have a B2B customer who wants to pay with a > credit card, then use the accounting module to record a Credit Card payment > and apply it to the Billing Account to bring down its balance. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
