[ http://issues.apache.org/jira/browse/OFBIZ-288?page=all ]

Jacques Le Roux closed OFBIZ-288.
---------------------------------

    Resolution: Duplicate

Duplicate of OFBIZ-286

> FinAccount Transactions for Gift Certificates, Calling Cards, Customer 
> Accounts, etc.
> -------------------------------------------------------------------------------------
>
>                 Key: OFBIZ-288
>                 URL: http://issues.apache.org/jira/browse/OFBIZ-288
>             Project: OFBiz (The Open for Business Project)
>          Issue Type: New Feature
>          Components: accounting
>    Affects Versions: SVN trunk
>            Reporter: Marco Risaliti
>         Attachments: finaccount.bsh
>
>
> We will be implementing support for FinAccount and FinAccountTransactions as 
> a way to purchase and pay with gift certificates, calling cards, or customer 
> accounts in OFBiz. Below is a general outline of how it would work: 
> Setting up Gift Certificates as Products 
> 1.Create a new ProductType = "FIN_ACCOUNT" with isPhysical="N" and isDigital 
> = "Y" 
> 2.Add a new field Product.fixedAmount which stores the amount of the gift 
> certificate. (This allows the price to be different than the amount, for 
> promotions and such.) 
> Ordering Gift Certificates 
> 1.When gift certificate is ordered, system generates a unique random 12-digit 
> code of numbers and uppercase letters. It then creates FinAccount, stores 
> email in a ContactMech and associates it with FinAccount through a 
> FinAccountContactMech. It creates a CommunicationEvent for the gift message 
> and stores the gift message there, sets the CommunicationEvent to PENDING, 
> and associates it with FinAccount through a finAccountId on 
> CommunicationEvent. 
> 2.Associate finAccountId with ShoppingCartItem, OrderItem, and InvoiceItem 
> with finAccountId. This allows us later to create a feature where people 
> could add value to a FinAccount. 
> 3.When the order is created, the gift certificate products will be fulfilled 
> automatically and separately from the other physical products using the 
> checkDigitalFulfillment services. Note: This will always be the case, 
> regardless of whether the physical items are in stock or not. Separate 
> invoices will be generated for the gift certificates and physical products. 
> 4.When a payment is processed, then the FinAccountTransaction is created for 
> the finAccountId. This assures that gift certificates won't be charged until 
> the payment is actually collected. FinAccountTransaction is only related to 
> payment. 
> Using Gift Certificates to Pay 
> 1.Setting up Gift Certificates as PaymentMethods with PaymentMethodType = 
> FIN_ACCOUNT (or GIFT_CERTIFICATE) Model it similar to EXT_BILLACT payments 
> Add finAccountId to OrderPaymentPreference. OrderPaymentPreference.maxAmount 
> stores maximum amount to be deducted from the FinAccount. 
> 2.On check out, separate box for Gift Certificate code. 
> 3.Look up FinAccount from gift certificate code (case insensitive) 
> 4.Authorize the FinAccount (new authorizeFinAccount service) which checks if 
> gift certificate balance plus all un-expired authorizations (in a new entity 
> FinAccountAuths) > order amount 
> 5.If not, return to ask user to add another payment method 
> 6.Modify authOrderPaymentPreference so that for GIFT_CERTIFICATE it 
> authorizes based on balances of FinAccount in FinAccountTransactions and 
> FinAccountAuths and store the new authorization in FinAccountAuths 
> 7.Modify captureOrderPayments to create a FinAccountTransaction. Release 
> FinAccountAuth by updating its expiration date to time of payment. 
> Email 
> 1.Email address is Stored in ContactMech and associated with 
> FinAccountContactMechPurpose 
> 2.Message is stored as a CommunicationEvent with the finAccountId 
> 3.Create new ProductStoreEmailSetting for the template of the email 
> 4.Get all CommunicationEvent which are PENDING with finAccountId, find 
> matching email setting from (3) based on type of CommunicationEvent, and send 
> them. 
> 5.SECA to send email when any FinAccountTransaction happens? 
> Order Cancellation 
> 1.If an order is cancelled, we should release the authorization by setting 
> its expiration date to time in the past. 
> Returns 
> 1.New refundToFinAccount service which creates a Payment and a 
> FinAccountTransaction to increase value of FinAccount, related with paymentId 
> 2.Modify processRefund/processCreditReturn to call service from (1). If 
> multiple payment methods are available, refund to credit card, then to gift 
> certificates. Each payment methods should be refunded up to the maximum of 
> the original OrderPaymentPreference amount. 
> (Note about Recording Gift Certificate Authorizations: It is important to 
> record the authorizations explicitly rather than rely upon an implicit check 
> of current balances because orders usually cause inventory to be reserved for 
> the customer. Thus, we don't want several FinAccount transactions to cause 
> excessive inventory to be set aside, when in fact the transactions could not 
> go through.) 
> Entity Model Changes 
> 1.New Product.fixedAmount field 
> 2.FinAccountContactMechPurpose entity with fields: finAccountId*, 
> contactMechId*, fromDate*, thruDate, contactMechPurposeTypeId 
> 3.New CommunicationEvent.finAccountId 
> 4.OrderItem.finAccountId 
> 5.InvoiceItem.finAccountId 
> 6.OrderPaymentPreference.finAccountId 
> 7.FinAccountAuth entity with finAccountAuthId*, finAccountId, authAmount, 
> currencyUomId, authTimestamp, fromDate, thruDate 
> New Seed Data 
> ContactMechPurposeTypeId = "GIFT_CERT_RECIPIENT" 
> CommunicationEventTypeId = "GIFT_CERT_MESSAGE" 
> PaymentMethodTypeId = "FIN_ACCOUNT" and "GIFT_CERTIFICATE"
>  
>  
>  All    Comments    Work Log    Change History       Sort Order:   
> Comment by Jacques Le Roux [29/Mar/06 08:17 AM] [ Permlink ] 
> Si, 
> Is there a way to link this issue to OFBIZ-733 ? 
> Jacques 
> Comment by Si Chen [31/Mar/06 01:35 PM] [ Permlink ] 
> It turns out that there are some configuration issues for gift certificates 
> such as expiration dates, length of authorization, length of account codes, 
> etc. These seem most logically associated at the product store level, so I am 
> going to create a ProductStoreFinActSetting entity for configuring them. 
> Also a couple of other notes - 
> 1. FinAccountTrans only referenced Payment but did not store its own amount. 
> This can be problematic if one payment was used to purchase or activate 
> several FinAccounts. So FinAccountTrans needs its own amount field. 
> 2. FinAccount also needs from and thru dates to govern expiration of various 
> types of accounts. 
> Comment by Si Chen [31/Mar/06 01:35 PM] [ Permlink ] 
> Jacques, I agree this may be a way to solve the issue of advance payments, 
> but it is not necessarily the only one. I'm not sure if it's the optimal one 
> either. If you're ready to start working on it, let me know. We could discuss 
> it further. Si 
> Comment by Bradley Plies [31/Mar/06 04:14 PM] [ Permlink ] 
> Neat idea. Plan seems pretty thorough. I have a few scenarios or use cases to 
> offer for consideration which may not be of any value to what you are 
> intending to do. 
> 1. 12 character code - to prevent brute force attempts to identify and use 
> valid gift certificate numbers, some websites I've encountered also introduce 
> a "claim code" in addition to the gift certificate number. Even though a 12 
> character code represents a large space of potential cert numbers. (10 digits 
> + 26 capital alphabet characters) ^ 12 digits = 4,738,381,338,321,616,896 
> combinations. Given that the number will be random, there is still a 
> possibility of generating a number that is already in use so therefore a 
> collission-resolution policy (retry) will be necessary. 
> 2. I know the intent is for digital/online gift cards, but how might this 
> also be usable with a physical store / POS that *can* sell gift cards/certs 
> online? Could this be used for a physical storefront? Suppose you bought an 
> online gift certificate at Best Buy, it could feasibly also be used at a 
> physical store too right? Suppose there was a case of having preloaded gift 
> cards for sale at a physical store that aren't "activated" until purchased 
> through a POS register. Naturally a physical gift card won't have a claim 
> code as merely being in possession of the card is all the authentication 
> required... unless the card could be tampered with. 
> Just other related ideas to consider that may not have much bearing on your 
> plan or intent. 
> Comment by Si Chen [31/Mar/06 08:49 PM] [ Permlink ] 
> With r 7154 thru r 7164 the basic support is in place for tracking balances, 
> authorizations, and available balances. Now we'll slowly integrate them into 
> the whole checkout. 
> Comment by Si Chen [31/Mar/06 08:54 PM] [ Permlink ] 
> by the way, for those of you who want to try it, this is a simple beanshell 
> test suite for it. 
> Comment by Si Chen [05/Apr/06 09:41 AM] [ Permlink ] 
> Just a note: 
> I am merging these features with the some older GiftCertificateServices. So 
> what happens now is: 
> 1. You set up a Digital Product with a ProductContent for external async 
> fulfillment pointing to a gift certificate purchase service. 
> 2. You configure a survey to collect purchase information in a new 
> ProductStoreFinActSetting. 
> 3. The purchase/authorize/capture/release/refund processes for a gift 
> certificate are created as payment gateway services and associated with 
> GIFT_CARD payment types via ProductStorePaymentSettings. 
> The system would then treat your gift certificate as a GIFT CARD and execute 
> normal order processing. 
> Comment by Si Chen [05/Apr/06 09:43 AM] [ Permlink ] 
> Also, to follow up Brad's comment, 
> 1. The length of account code is configurable in ProductStoreFinActSetting, 
> and whether a PIN # is required is configured there as well. 
> 2. Yes, this should work in POS as well as ecommerce, though I do not 
> currently have plans to implement in POS. 
> Comment by Jacques Le Roux [05/Apr/06 10:22 AM] [ Permlink ] 
> Thanks Si, 
> I'll think about it. 
> Jacques 
> Comment by Si Chen [04/May/06 05:57 PM] [ Permlink ] 
> At this point most of it is done. We just need to move some view and 
> management screens back. 
> What does everybody think of changing [Billing Account] tab in accounting 
> manager to [Accounts] tab, with separate sub-tabs for Billing and Fin 
> Account? 
> Comment by Marco Risaliti [13/Sep/06 04:23 PM] [ Permlink ] 
> Hi Si, 
> which is the status of this issue, it has been completed and so it can be 
> closed ? 
> Thanks 
> Marco 
> Comment by Jacques Le Roux [14/Sep/06 01:43 PM] [ Permlink ] 
> It's OK for my part. I created a new issue in Apache Jira because I want to 
> keep these comments. 

-- 
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