[JIRA] Commenté: (OFBIZ-814) FinAccount Transactions for Gift Certificates, Calling Cards, Customer Accounts, etc.

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

[JIRA] Commenté: (OFBIZ-814) FinAccount Transactions for Gift Certificates, Calling Cards, Customer Accounts, etc.

JIRA jira@ofbiz.org
     [ http://jira.undersunconsulting.com/browse/OFBIZ-814?page=comments#action_14090 ]
     
Jacques Le Roux commented on OFBIZ-814:
---------------------------------------

It's OK for my part. I created a new issue in Apache Jira because I want to keep these comments.

> FinAccount Transactions for Gift Certificates, Calling Cards, Customer Accounts, etc.
> -------------------------------------------------------------------------------------
>
>          Key: OFBIZ-814
>          URL: http://jira.undersunconsulting.com/browse/OFBIZ-814
>      Project: [OFBiz] Open For Business
>         Type: New Feature
>   Components: accounting
>     Versions: SVN
>     Reporter: Si Chen
>     Assignee: Jira Administrator
>      Fix For: SVN
>  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”

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.undersunconsulting.com/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira