[ 
http://issues.apache.org/jira/browse/OFBIZ-93?page=comments#action_12457932 ] 
            
Jacopo Cappellato commented on OFBIZ-93:
----------------------------------------

Si,

I think that moving the billingAccountId from OrderHeader to 
OrderPaymentPreference would be a major refactoring, and all in all I don't see 
so many advantages in associating one order to more than one billing account 
(but I could be wrong).
I think that the best thing we should do now is to fix the existing code (that 
seems broken to me) and postpone the decisions about migrating to FinAccount 
later (I'm sorry I don't know anything about them).
Right now the billingAccountId is in the OrderHeader, Invoice (header) and 
PaymentApplication.
If a payment application is applied to an invoice associated to the billing 
account, this means that the payment application itself is associated to the 
billing account.
If we want to associate a payment (in advance) to a billing account, I don't 
think that it is correct to create a payment application associated to the 
billing account, because it is still not really applied to anything: it should 
be the payment itself that is associated with the billing account.
For example:

Billing Account: 10000
Payment: 20000 with amount $100
If we want to associate the payment to the billing account, right now we have 
to create (if I'm not wrong) a PaymentApplication of $100 and associate it to 
the billing account.
After this we get an invoice of $40 and we associate it to the same billing 
account.
How should we apply the payment to the invoice? By creating a new 
PaymentApplication?
In my opinion it would much more easier to assign the Payment 20000 to the 
billing account 10000.
When the invoice is created and associated to the billing account, we just have 
to create a payment application as usual.




> 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

        

Reply via email to