Merge remote-tracking branch 'upstream/4.4' into 4.4-4.5-2014-09-01-22-48-29
[civicrm-core.git] / CRM / Financial / BAO / FinancialItem.php
index 8eaa001019c38c9012927f7eaeeb0b5f29660b78..2427c08aecf55fc91614f00f37132587fc885754 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * $Id$
  *
  */
@@ -80,13 +80,17 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
     $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
     $financialItemStatus = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_FinancialItem', 'status_id');
     $itemStatus = NULL;
-    if ($contribution->contribution_status_id == array_search('Completed', $contributionStatuses)) {
+    if ($contribution->contribution_status_id == array_search('Completed', $contributionStatuses)
+      || $contribution->contribution_status_id == array_search('Pending refund', $contributionStatuses)) {
       $itemStatus = array_search('Paid', $financialItemStatus);
     }
-    elseif ($contribution->contribution_status_id == array_search('Pending', $contributionStatuses) 
+    elseif ($contribution->contribution_status_id == array_search('Pending', $contributionStatuses)
       || $contribution->contribution_status_id == array_search('In Progress', $contributionStatuses)) {
       $itemStatus = array_search('Unpaid', $financialItemStatus);
     }
+    elseif ($contribution->contribution_status_id == array_search('Partially paid', $contributionStatuses)) {
+      $itemStatus = array_search('Partially paid', $financialItemStatus);
+    }
     $params = array(
       'transaction_date'  => CRM_Utils_Date::isoToMysql($contribution->receive_date),
       'contact_id'        => $contribution->contact_id,
@@ -112,8 +116,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
 
     $trxn = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution->id, 'ASC', TRUE);
     $trxnId['id'] = $trxn['financialTrxnId'];
-
-    self::create($params, NULL, $trxnId);
+    return self::create($params, NULL, $trxnId);
   }
 
   /**
@@ -130,12 +133,12 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
   static function create(&$params, $ids = NULL, $trxnIds = NULL) {
     $financialItem = new CRM_Financial_DAO_FinancialItem();
     $financialItem->copyValues($params);
-    if (CRM_Utils_Array::value('id', $ids)) {
+    if (!empty($ids['id'])) {
       $financialItem->id = $ids['id'];
     }
 
     $financialItem->save();
-    if (CRM_Utils_Array::value('id', $trxnIds)) {
+    if (!empty($trxnIds['id'])) {
       $entity_financial_trxn_params = array(
         'entity_table'      => "civicrm_financial_item",
         'entity_id'         => $financialItem->id,
@@ -145,7 +148,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
 
       $entity_trxn = new CRM_Financial_DAO_EntityFinancialTrxn();
       $entity_trxn->copyValues($entity_financial_trxn_params);
-      if (CRM_Utils_Array::value('entityFinancialTrxnId', $ids)) {
+      if (!empty($ids['entityFinancialTrxnId'])) {
         $entity_trxn->id = $ids['entityFinancialTrxnId'];
       }
       $entity_trxn->save();
@@ -172,9 +175,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