Skip to content
Snippets Groups Projects
Unverified Commit b5b7c0dd authored by homotechsual's avatar homotechsual Committed by GitHub
Browse files

Merge pull request #722 from eileenmcnaughton/financial_entities

Further clarification of financial items
parents 33f3da13 9da79452
No related branches found
No related tags found
No related merge requests found
!!! abstract This area of CiviCRM code and documentation is a work-in-progress. Not all features will be documented and the core code underlying this area may change from version to version. !!! abstract
This area of CiviCRM code and documentation is a work-in-progress. Not all features will be documented and the core code underlying this area may change from version to version.
This file exists to give an overview of the Financial entities involved in recording Financial data in CiviCRM. This file exists to give an overview of the Financial entities involved in recording Financial data in CiviCRM.
You should only interact with the Financial entities through the relevant apis - generally Order & Payment apis. You should only interact with the Financial entities through the relevant apis - generally Order & Payment apis.
It is a work in progress!
The original file for tracking these is [on the old CiviCRM Wik](https://wiki.civicrm.org/confluence/display/CRM/CiviAccounts+Data+Flow). The original file for tracking these is [on the old CiviCRM Wik](https://wiki.civicrm.org/confluence/display/CRM/CiviAccounts+Data+Flow).
## Financial Accounts ## Financial Accounts
...@@ -62,20 +61,50 @@ Negative payments (or refunds) will have the bank or processor account on the ** ...@@ -62,20 +61,50 @@ Negative payments (or refunds) will have the bank or processor account on the **
Financial items exist to track how much has been paid against the various line items within an order / contribution. Financial items exist to track how much has been paid against the various line items within an order / contribution.
In an accounting system this might be called credit-matching. In an accounting system this might be called credit-matching.
Each line item will have one or more financial items denoting payments made against it. On creation of the order there Each line item will have one financial item denoting payments made against the line item, or a transaction transferring the money to
will be a financial item for each line item and an additional item for every fee amount. Where the preferred flow is used accounts receivable.
this item will have a status of 'Unpaid'. On creation of the order there will be a financial item for each line item and an additional item for every fee amount.
!!! The created financial item should have a status of 'Unpaid' but it seems that this may not always be the case and it may be
partially paid instead - further auditing is needed as this seems to be linked to use of an old method to create partial payments.
Financial item statuses are potentially used for reporting but are not used in any functional calculations.
!!! note !!! note
For historical reasons this may not always be true but [it's the goal](https://github.com/civicrm/civicrm-dev-docs/issues/712). For historical reasons this may not always be true but [it's the goal](https://github.com/civicrm/civicrm-dev-docs/issues/712). Financial items
may not always be present in practice for pending contributions.
**Financial items changes due to payments**
When a payment is made it might either pay off the line items, or a specific line item, in full. In that case the line item When a payment is made it might either pay off all the line items, some of each of the line items, specific line items, in part or in full.
status is updated to Paid and an `EntityFinancialTrxn` record is created in the `civicrm_entity_financial_trxn` table linking Where a line item is now fully paid the status of the related financial item is updated to Paid. An `EntityFinancialTrxn` record is created
the line item to the payment and specifying the amount paid. in the `civicrm_entity_financial_trxn` table linking the payment to any line items it pays towards, specifying the amount paid on that payment.
If the line item is paid in part then the status is not updated and the `EntityFinancialTrxn` record specifies the portion If the line item is paid in part then the financial item status should be 'Partly Paid' and the `EntityFinancialTrxn` record specifies the portion
of the line item that has been paid by that payment. of the line item that has been paid by that payment.
For example if we have the scenario that an Order (Contribution) with 2 line items (values $100 & $200) is created then we will get
* the order
* 1 financial trxn record transferring the cost ($300) to accounts payable
* 2 financial items (one for each line item for the full amount - ie amounts of $100 & $200)
* 2 financial entity transaction records linking the financial items to the accounts receivable transaction - the amounts will be $100 & $200
If we later get a payment for $100 we will see the following changes
* 1 financial trxn record with is_payment and amount of $100. From account is accounts receivable, to account is the payment asset account (e.g Bank account)
* 2 financial entity transaction records linking the financial items payment to the payment transaction (the payment is allocated proportionally
so the amounts are $33.33 and $66.67).
If that payment were to be cancelled (using the Payment.cancel api) we would see the following
* 1 financial trxn record with is_payment = 1 and a negative amount equal to the original payment ($100 in this example). From account is the payment asset account, to account is accounts receivable.
* 2 financial entity transaction records linking the financial items back to the payment reversal transaction. These are effectively reversing
the financial entity transaction records linked to the original payment and the amounts are negative - ie -$33.33 and -$66.67)
!! this same *should* happen for a negative payment although the allocation may be different. There may be a current bug here.
**Financial items changes due to line item changes**
If the line items change then the items financial items have to be updated. Generally the rule is to alter the zero out the If the line items change then the items financial items have to be updated. Generally the rule is to alter the zero out the
old line item, reverse the financial items and then create a new line item with new financial items. However, this is not old line item, reverse the financial items and then create a new line item with new financial items. However, this is not
always possible as there are some scenarios where the schema does not permit this. The has led to always possible as there are some scenarios where the schema does not permit this. The has led to
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment