Merge pull request #4296 from mrpaulc/CRM-14751
[civicrm-core.git] / CRM / Financial / BAO / FinancialItem.php
index a856e1d59078b67c6d2413674aad75958ed24e37..e3c6170454207edf5e2bee8fbb63dbb14dd126b2 100644 (file)
@@ -71,12 +71,13 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
    *
    * @param object $lineItem     line item object
    * @param object $contribution contribution object
+   * @param boolean $taxTrxnID
    *
    * @access public
    * @static
    * @return void
    */
-  static function add($lineItem, $contribution) {
+  static function add($lineItem, $contribution, $taxTrxnID = FALSE) {
     $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
     $financialItemStatus = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialItem', 'status_id');
     $itemStatus = NULL;
@@ -102,20 +103,30 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
       'status_id'         => $itemStatus,
     );
 
+    if ($taxTrxnID) {
+      $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME, 'contribution_invoice_settings');
+      $taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
+      $params['amount'] = $lineItem->tax_amount;
+      $params['description'] = $taxTerm;
+      $accountRel = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Sales Tax Account is' "));
+    }
+    else {
+      $accountRel = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
+    }
     if ($lineItem->financial_type_id) {
       $searchParams = array(
         'entity_table'         => 'civicrm_financial_type',
         'entity_id'            => $lineItem->financial_type_id,
-        'account_relationship' => 1,
+        'account_relationship' => $accountRel,
       );
 
       $result = array();
       CRM_Financial_BAO_FinancialTypeAccount::retrieve( $searchParams, $result );
       $params['financial_account_id'] = CRM_Utils_Array::value( 'financial_account_id', $result );
     }
-
     $trxn = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution->id, 'ASC', TRUE);
     $trxnId['id'] = $trxn['financialTrxnId'];
+
     return self::create($params, NULL, $trxnId);
   }
 
@@ -175,9 +186,11 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
   /**
    * retrive entity financial trxn details
    *
-   * @param array  $params (reference ) an assoc array of name/value pairs
+   * @param array $params (reference ) an assoc array of name/value pairs
+   *
+   * @param bool $maxId
    *
-   * @param boolean $maxID to retrive max id
+   * @internal param bool $maxID to retrive max id
    *
    * @return array
    * @access public