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


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

        

Reply via email to