[jira] Commented: (OFBIZ-93) Support BillingAcct + PaymentMethod for Payment

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (OFBIZ-93) Support BillingAcct + PaymentMethod for Payment

Nicolas Malin (Jira)

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

Si Chen commented on OFBIZ-93:
------------------------------

Jacopo, I'm just reading this thread again am thinking about:

4. In createPaymentApplication, I removed code which automatically put Invoice.billingAccountId to PaymentApplication.billingAccountId because that would have messed up billing account balance calculation per (2)."

and

About #4: a few days ago I reinserted that code (sorry Si, I did not understand that you had removed it intentionally): however I still believe that the code should stay there: in fact, as things are now the whole order is associated to the BA, and then the whole invoice is associated to the same BA and for these reasons all the payment applications associated to the invoice (order) must be associated to the BA as well.

I think it is not correct to assign billingAccountId automatically from Invoice to PaymentApplication because an Invoice could be paid with a billing account and a credit card.  This type of code may be appropriate somewhere but probably not in the low-level createPaymentApplication service.

I will create a separate issue and investigate further.

> Support BillingAcct + PaymentMethod for Payment
> -----------------------------------------------
>
>                 Key: OFBIZ-93
>                 URL: https://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, order_billingAccount_co.patch, ss-ba.jpg
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.