JMA Consulting is assisting the RNAO in migrating from AmSoft to CiviCRM. Various enhancements to CiviCRM core are required as part of this process.
General Comments:
|
Detailed Account codes
Currently, accounting information is stored as the accounting_code for each Contribution Type at the contribution page level. Line items in price sets need to have their own accounting codes. Each Membership Type needs its own accounting code. See Enabling Contribution Type to be specified at line item level. These accounting codes represent the income account for payments.
As well, there needs to be a way to record the asset account that is receiving a payment, whether that is a bank account, cash on hand, or a payment processor account. A new table needs to be created, civicrm_asset_account, and links to it need to be made from civicrm_financial_trxn and civicrm_payment_processor. It might be useful to also put a link into civicrm_payment_instrument for cash and cheques since in most cases they will always go into a single account. When a civicrm_financial_trxn is created for an offline transaction (payment or refund), the user will be able to edit the asset_account (which could be set to a default that can be editted for cash and cheques and EFTs etc.).
10 hours for asset accounts.
3hrs per report (JMA)
Issues:
25 hrs (assumes custom search is only output) |
Changes and Reversals
Administrative personnel need to be able to change and reverse Event, Membership and Contribution transactions so that accounting requirements for an auditable trail of the changes is kept. Any difference in the transaction balance should be able to be billed or refunded easily within CiviCRM via its payment and refund mechanisms. See Changing and Cancelling Financial Transactions
This scope assumes using the new contribution = obligation model. Payments and refunds are recorded in the financial_trxn table. Foundation work for this is covered in the sizing for Partial Payments below. Phase 1: Issue a refund of $xx amount against an existing contribution (payment).The user selects a "Refund" action for paid membership, event registration or contribution record. Goes to a form where they can enter amount to be refunded, confirm date and add refund reason. Option to send refund notification email. This phase does not include modifying event fee or line item selections. If this is needed, user enters a full refund + new registration. There are two parts to the accounting for this. First is the creation of credit adjustment transaction(s) that records a negative amount against the account for each line item or line sub-item being reversed. When the invoice is reissued, there will be a link between the refund and the item being refunded. This will be represented in the db by new records in the civicrm_invoice_line_item and civicrm_invoice_line_sub_item tables with the same account code as the original with a negative amount. The original records will have a link created to the reversing record, as well as to a credit adjustment record that collects all changes made at one time and records a reason for them. The second part of the accounting is the creation of a financial transaction representing the money transfer back to the contact. This action records a negative financial trxn linked to the existing invoice record (or its line items or line sub items if the refund/reversal is for particular item(s) on the invoice. Processor interaction for refund is optional for payments made via processors that support refunds. Some processors may NOT support partial refunds (needs investigation). For checks or other "manually recorded" payments, we still create the "refund contribution" record. Completed contributions (donations or contribution payments for memberships, events) can no longer be cancelled in place. Users will need to use the "Refund" action. 50 hrs Phase 2: Linking refunds to specific line-items.A refund needs to generate reversal G/L entries at the line item level. Also, support is needed for charging a cancellation fee, which is like a line item.This phase pretty much collapses into the next item below as a result. Change existing registration fees / selectionsThe principal requirement in this area is to support changes to event registrations and membership purchases. Registration changes in particular are frequent and need to have an easy to use UX. From a user perspective, they are able to 'edit' an existing invoice transaction. Internally, if there are changes at the time of save, create a new registration/purchase, mark the original as superceded, and record the refund/additional amount in a new difference_amount field. Issue: how do backoffice staff do an additional payment in case of non-present credit card? Answer: RNAO accept any of a variety of methods of payment for any obligation, including cash, cheques, credit cards, special RNAO credits in accounting system (treated like any other G/L account), etc. They would likely do a PoS terminal credit card transaction if they are getting the credit card over the phone, though it might be nice to do it online via CiviCRM if that is legit. JM Jan 6, 2011: Additional note: to be more explicit, the changes to existing fees need to be tracked at the line item level, so that if there is a cancellation of one and an addition of another, that needs to be tracked as two separate line item G/L entries. 100 hrs rough est |
Refunds in CiviContribute
Support needs to be added for refund and void transactions to the code interacting with payment processors. The PaymenTech plugin will make use of this functionality initially.
Included in above Reversals and Refunds estimate. |
Batching of Contributions
Bank deposits encompassing multiple contributions need to be added in a way that supports rapid bulk data entry of cheques for new and existing contacts. See Batches for Data Entry and Financial Auditing
Phase 1
75 hrs (JMA for reporting) Phase 2
25 hrs |
Partial Payments
Support multiple payments for a single ticket purchase.
There is no strong need to support particular items in an invoice being paid by partial payments. RNAO could perhaps support efforts of others in this area.
Using the model which separates obligations (contributions) from payments (financial transactions) - see spec w/ my comments here: http://wiki.civicrm.org/confluence/display/CRM/Partial+Payments+for+Event+Registrations+and+Memberships: $9375 |
