Merge remote-tracking branch 'upstream/4.5' into 4.5-master-2015-03-09-21-44-34
[civicrm-core.git] / CRM / Financial / Page / AJAX.php
index a069036e9f2d4535438a84cb2af3f3cb1c10230a..f9e194520b2b14fc111e7762a28927ae329daa9a 100644 (file)
@@ -1,8 +1,7 @@
 <?php
-
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.5                                                |
+ | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
@@ -24,7 +23,7 @@
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 /**
  *
  * This class contains all the function that are called using AJAX
  */
 class CRM_Financial_Page_AJAX {
-  /*
-   * Function to get financial accounts of required account relationship
+
+  /**
+   * get financial accounts of required account relationship.
    * $financialAccountType array with key account relationship and value financial account type option groups
    *
-   */
-  /**
    * @param $config
    */
-  static function jqFinancial($config) {
+  public static function jqFinancial($config) {
     if (!isset($_GET['_value']) ||
-      empty($_GET['_value'])) {
+      empty($_GET['_value'])
+    ) {
       CRM_Utils_System::civiExit();
     }
     $defaultId = NULL;
@@ -64,6 +63,7 @@ class CRM_Financial_Page_AJAX {
         '7' => 4, //cost of sales
         '8' => 1, //premium inventory
         '9' => 3, //discount account is
+        '10' => 2, //sales tax liability
       );
       $financialAccountType = CRM_Utils_Array::value($_GET['_value'], $financialAccountType);
       $result = CRM_Contribute_PseudoConstant::financialAccount(NULL, $financialAccountType);
@@ -73,19 +73,19 @@ class CRM_Financial_Page_AJAX {
     }
     $elements = array(
       array(
-        'name'  => ts('- select -'),
+        'name' => ts('- select -'),
         'value' => 'select',
-      )
+      ),
     );
 
-    if (!empty($result)){
+    if (!empty($result)) {
       foreach ($result as $id => $name) {
         $selectedArray = array();
         if ($id == $defaultId) {
           $selectedArray['selected'] = 'Selected';
         }
         $elements[] = array(
-          'name'  => $name,
+          'name' => $name,
           'value' => $id,
         ) + $selectedArray;
       }
@@ -96,9 +96,10 @@ class CRM_Financial_Page_AJAX {
   /**
    * @param $config
    */
-  static function jqFinancialRelation($config) {
+  public static function jqFinancialRelation($config) {
     if (!isset($_GET['_value']) ||
-      empty($_GET['_value'])) {
+      empty($_GET['_value'])
+    ) {
       CRM_Utils_System::civiExit();
     }
 
@@ -118,32 +119,32 @@ class CRM_Financial_Page_AJAX {
 
     $elements = array(
       array(
-        'name'  => ts('- Select Financial Account Relationship -'),
+        'name' => ts('- Select Financial Account Relationship -'),
         'value' => 'select',
-      )
+      ),
     );
 
     $countResult = count($financialAccountType[$financialAccountTypeId]);
     if (!empty($result)) {
       foreach ($result as $id => $name) {
-        if (in_array($id, $financialAccountType[$financialAccountTypeId])  && $_GET['_value'] != 'select') {
-          if ($countResult != 1){
+        if (in_array($id, $financialAccountType[$financialAccountTypeId]) && $_GET['_value'] != 'select') {
+          if ($countResult != 1) {
             $elements[] = array(
-              'name'  => $name,
+              'name' => $name,
               'value' => $id,
             );
           }
           else {
             $elements[] = array(
-              'name'     => $name,
-              'value'    => $id,
+              'name' => $name,
+              'value' => $id,
               'selected' => 'Selected',
             );
           }
         }
-        elseif ($_GET['_value'] == 'select'){
+        elseif ($_GET['_value'] == 'select') {
           $elements[] = array(
-            'name'  => $name,
+            'name' => $name,
             'value' => $id,
           );
         }
@@ -155,9 +156,10 @@ class CRM_Financial_Page_AJAX {
   /**
    * @param $config
    */
-  static function jqFinancialType($config) {
-    if (! isset($_GET['_value']) ||
-      empty($_GET['_value'])) {
+  public static function jqFinancialType($config) {
+    if (!isset($_GET['_value']) ||
+      empty($_GET['_value'])
+    ) {
       CRM_Utils_System::civiExit();
     }
 
@@ -168,7 +170,7 @@ class CRM_Financial_Page_AJAX {
   /**
    * Callback to perform action on batch records.
    */
-  static function assignRemove() {
+  public static function assignRemove() {
     $op = CRM_Utils_Type::escape($_POST['op'], 'String');
     $recordBAO = CRM_Utils_Type::escape($_POST['recordBAO'], 'String');
     foreach ($_POST['records'] as $record) {
@@ -178,7 +180,7 @@ class CRM_Financial_Page_AJAX {
       }
     }
 
-    $entityID  = CRM_Utils_Array::value('entityID', $_POST);
+    $entityID = CRM_Utils_Array::value('entityID', $_POST);
     $methods = array(
       'assign' => 'addBatchEntity',
       'remove' => 'removeBatchEntity',
@@ -198,13 +200,13 @@ class CRM_Financial_Page_AJAX {
     if ($recordClass[0] == 'CRM' && count($recordClass) >= 3) {
       foreach ($records as $recordID) {
         $params = array();
-        $ids = null;
+        $ids = NULL;
         switch ($op) {
           case 'assign':
           case 'remove':
             $recordPID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialTrxn', $recordID, 'payment_instrument_id');
             $batchPID = CRM_Core_DAO::getFieldValue('CRM_Batch_DAO_Batch', $entityID, 'payment_instrument_id');
-            $paymentInstrument =  CRM_Core_OptionGroup::getLabel('payment_instrument',$batchPID);
+            $paymentInstrument = CRM_Core_OptionGroup::getLabel('payment_instrument', $batchPID);
             if ($op == 'remove' || ($recordPID == $batchPID && $op == 'assign') || !isset($batchPID)) {
               $params = array(
                 'entity_id' => $recordID,
@@ -213,9 +215,10 @@ class CRM_Financial_Page_AJAX {
               );
             }
             else {
-              $response = array('status' => ts("This batch is configured to include only transactions using %1 payment method. If you want to include other transactions, please edit the batch first and modify the Payment Method.", array( 1 => $paymentInstrument)));
+              $response = array('status' => ts("This batch is configured to include only transactions using %1 payment method. If you want to include other transactions, please edit the batch first and modify the Payment Method.", array(1 => $paymentInstrument)));
             }
             break;
+
           case 'close':
             // Update totals when closing a batch
             $params = $totals[$recordID];
@@ -257,57 +260,61 @@ class CRM_Financial_Page_AJAX {
     CRM_Utils_JSON::output($response);
   }
 
-  static function getFinancialTransactionsList() {
-    $sortMapper =
-      array(
-        0 => '', 1 => '', 2 => 'sort_name',
-        3 => 'amount', 4 => 'trxn_id', 5 => 'transaction_date', 6 => 'payment_method', 7 => 'status', 8 => 'name',
-      );
+  public static function getFinancialTransactionsList() {
+    $sortMapper = array(
+      0 => '',
+      1 => '',
+      2 => 'sort_name',
+      3 => 'amount',
+      4 => 'trxn_id',
+      5 => 'transaction_date',
+      6 => 'payment_method',
+      7 => 'status',
+      8 => 'name',
+    );
 
-    $sEcho     = CRM_Utils_Type::escape($_REQUEST['sEcho'], 'Integer');
-    $offset    = isset($_REQUEST['iDisplayStart']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayStart'], 'Integer') : 0;
-    $rowCount  = isset($_REQUEST['iDisplayLength']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayLength'], 'Integer') : 25;
-    $sort      = isset($_REQUEST['iSortCol_0']) ? CRM_Utils_Array::value(CRM_Utils_Type::escape($_REQUEST['iSortCol_0'], 'Integer'), $sortMapper) : NULL;
+    $sEcho = CRM_Utils_Type::escape($_REQUEST['sEcho'], 'Integer');
+    $offset = isset($_REQUEST['iDisplayStart']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayStart'], 'Integer') : 0;
+    $rowCount = isset($_REQUEST['iDisplayLength']) ? CRM_Utils_Type::escape($_REQUEST['iDisplayLength'], 'Integer') : 25;
+    $sort = isset($_REQUEST['iSortCol_0']) ? CRM_Utils_Array::value(CRM_Utils_Type::escape($_REQUEST['iSortCol_0'], 'Integer'), $sortMapper) : NULL;
     $sortOrder = isset($_REQUEST['sSortDir_0']) ? CRM_Utils_Type::escape($_REQUEST['sSortDir_0'], 'String') : 'asc';
-    $context   = isset($_REQUEST['context']) ? CRM_Utils_Type::escape($_REQUEST['context'], 'String') : NULL;
-    $entityID  = isset($_REQUEST['entityID']) ? CRM_Utils_Type::escape($_REQUEST['entityID'], 'String') : NULL;
+    $context = isset($_REQUEST['context']) ? CRM_Utils_Type::escape($_REQUEST['context'], 'String') : NULL;
+    $entityID = isset($_REQUEST['entityID']) ? CRM_Utils_Type::escape($_REQUEST['entityID'], 'String') : NULL;
     $notPresent = isset($_REQUEST['notPresent']) ? CRM_Utils_Type::escape($_REQUEST['notPresent'], 'String') : NULL;
-    $statusID  = isset($_REQUEST['statusID']) ? CRM_Utils_Type::escape($_REQUEST['statusID'], 'String') : NULL;
-    $search    = isset($_REQUEST['search']) ? TRUE : FALSE;
+    $statusID = isset($_REQUEST['statusID']) ? CRM_Utils_Type::escape($_REQUEST['statusID'], 'String') : NULL;
+    $search = isset($_REQUEST['search']) ? TRUE : FALSE;
 
     $params = $_POST;
     if ($sort && $sortOrder) {
       $params['sortBy'] = $sort . ' ' . $sortOrder;
     }
 
-    $returnvalues =
-      array(
-        'civicrm_financial_trxn.payment_instrument_id as payment_method',
-        'civicrm_contribution.contact_id as contact_id',
-        'civicrm_contribution.id as contributionID',
-        'contact_a.sort_name',
-        'civicrm_financial_trxn.total_amount as amount',
-        'civicrm_financial_trxn.trxn_id as trxn_id',
-        'contact_a.contact_type',
-        'contact_a.contact_sub_type',
-        'civicrm_financial_trxn.trxn_date as transaction_date',
-        'name',
-        'civicrm_contribution.currency as currency',
-        'civicrm_financial_trxn.status_id as status',
-        'civicrm_financial_trxn.check_number as check_number',
-      );
+    $returnvalues = array(
+      'civicrm_financial_trxn.payment_instrument_id as payment_method',
+      'civicrm_contribution.contact_id as contact_id',
+      'civicrm_contribution.id as contributionID',
+      'contact_a.sort_name',
+      'civicrm_financial_trxn.total_amount as amount',
+      'civicrm_financial_trxn.trxn_id as trxn_id',
+      'contact_a.contact_type',
+      'contact_a.contact_sub_type',
+      'civicrm_financial_trxn.trxn_date as transaction_date',
+      'name',
+      'civicrm_contribution.currency as currency',
+      'civicrm_financial_trxn.status_id as status',
+      'civicrm_financial_trxn.check_number as check_number',
+    );
 
-    $columnHeader =
-      array(
-        'contact_type' => '',
-        'sort_name' => ts('Contact Name'),
-        'amount'   => ts('Amount'),
-        'trxn_id'  => ts('Trxn ID'),
-        'transaction_date' => ts('Received'),
-        'payment_method' => ts('Payment Method'),
-        'status'  => ts('Status'),
-        'name' => ts('Type'),
-      );
+    $columnHeader = array(
+      'contact_type' => '',
+      'sort_name' => ts('Contact Name'),
+      'amount' => ts('Amount'),
+      'trxn_id' => ts('Trxn ID'),
+      'transaction_date' => ts('Received'),
+      'payment_method' => ts('Payment Method'),
+      'status' => ts('Status'),
+      'name' => ts('Type'),
+    );
 
     if ($sort && $sortOrder) {
       $params['sortBy'] = $sort . ' ' . $sortOrder;
@@ -317,10 +324,10 @@ class CRM_Financial_Page_AJAX {
     $params['rp'] = $rowCount;
 
     $params['context'] = $context;
-    $params['offset']   = ($params['page'] - 1) * $params['rp'];
+    $params['offset'] = ($params['page'] - 1) * $params['rp'];
     $params['rowCount'] = $params['rp'];
-    $params['sort']     = CRM_Utils_Array::value('sortBy', $params);
-    $params['total']    = 0;
+    $params['sort'] = CRM_Utils_Array::value('sortBy', $params);
+    $params['total'] = 0;
 
     // get batch list
     if (isset($notPresent)) {
@@ -359,36 +366,36 @@ class CRM_Financial_Page_AJAX {
         }
         $row[$financialItem->id][$columnKey] = $financialItem->$columnKey;
         if ($columnKey == 'sort_name' && $financialItem->$columnKey) {
-          $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid=".$financialItem->contact_id);
-          $row[$financialItem->id][$columnKey] = '<a href='.$url.'>'.$financialItem->$columnKey.'</a>';
+          $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid=" . $financialItem->contact_id);
+          $row[$financialItem->id][$columnKey] = '<a href=' . $url . '>' . $financialItem->$columnKey . '</a>';
         }
         elseif ($columnKey == 'payment_method' && $financialItem->$columnKey) {
           $row[$financialItem->id][$columnKey] = CRM_Core_OptionGroup::getLabel('payment_instrument', $financialItem->$columnKey);
           if ($row[$financialItem->id][$columnKey] == 'Check') {
-            $row[$financialItem->id][$columnKey] = $row[$financialItem->id][$columnKey].' ('.$financialItem->check_number.')';
+            $row[$financialItem->id][$columnKey] = $row[$financialItem->id][$columnKey] . ' (' . $financialItem->check_number . ')';
           }
         }
         elseif ($columnKey == 'amount' && $financialItem->$columnKey) {
           $row[$financialItem->id][$columnKey] = CRM_Utils_Money::format($financialItem->$columnKey, $financialItem->currency);
         }
         elseif ($columnKey == 'transaction_date' && $financialItem->$columnKey) {
-          $row[$financialItem->id][$columnKey] =  CRM_Utils_Date::customFormat($financialItem->$columnKey);
+          $row[$financialItem->id][$columnKey] = CRM_Utils_Date::customFormat($financialItem->$columnKey);
         }
         elseif ($columnKey == 'status' && $financialItem->$columnKey) {
           $row[$financialItem->id][$columnKey] = CRM_Core_OptionGroup::getLabel('contribution_status', $financialItem->$columnKey);
         }
       }
-      if ($statusID == CRM_Core_OptionGroup::getValue('batch_status','Open')) {
+      if ($statusID == CRM_Core_OptionGroup::getValue('batch_status', 'Open')) {
         if (isset($notPresent)) {
           $js = "enableActions('x')";
-          $row[$financialItem->id]['check'] = "<input type='checkbox' id='mark_x_". $financialItem->id."' name='mark_x_". $financialItem->id."' value='1' onclick={$js}></input>";
+          $row[$financialItem->id]['check'] = "<input type='checkbox' id='mark_x_" . $financialItem->id . "' name='mark_x_" . $financialItem->id . "' value='1' onclick={$js}></input>";
           $row[$financialItem->id]['action'] = CRM_Core_Action::formLink(
             CRM_Financial_Form_BatchTransaction::links(),
-            null,
+            NULL,
             array(
               'id' => $financialItem->id,
               'contid' => $financialItem->contributionID,
-              'cid' => $financialItem->contact_id
+              'cid' => $financialItem->contact_id,
             ),
             ts('more'),
             FALSE,
@@ -399,14 +406,14 @@ class CRM_Financial_Page_AJAX {
         }
         else {
           $js = "enableActions('y')";
-          $row[$financialItem->id]['check'] = "<input type='checkbox' id='mark_y_". $financialItem->id."' name='mark_y_". $financialItem->id."' value='1' onclick={$js}></input>";
+          $row[$financialItem->id]['check'] = "<input type='checkbox' id='mark_y_" . $financialItem->id . "' name='mark_y_" . $financialItem->id . "' value='1' onclick={$js}></input>";
           $row[$financialItem->id]['action'] = CRM_Core_Action::formLink(
             CRM_Financial_Page_BatchTransaction::links(),
-            null,
+            NULL,
             array(
               'id' => $financialItem->id,
               'contid' => $financialItem->contributionID,
-              'cid' => $financialItem->contact_id
+              'cid' => $financialItem->contact_id,
             ),
             ts('more'),
             FALSE,
@@ -422,11 +429,11 @@ class CRM_Financial_Page_AJAX {
         unset($links['remove']);
         $row[$financialItem->id]['action'] = CRM_Core_Action::formLink(
           $links,
-          null,
+          NULL,
           array(
             'id' => $financialItem->id,
             'contid' => $financialItem->contributionID,
-            'cid' => $financialItem->contact_id
+            'cid' => $financialItem->contact_id,
           ),
           ts('more'),
           FALSE,
@@ -435,44 +442,50 @@ class CRM_Financial_Page_AJAX {
           $financialItem->id
         );
       }
-      $row[$financialItem->id]['contact_type'] = CRM_Contact_BAO_Contact_Utils::getImage(CRM_Utils_Array::value('contact_sub_type',$row[$financialItem->id]) ? CRM_Utils_Array::value('contact_sub_type',$row[$financialItem->id]) : CRM_Utils_Array::value('contact_type',$row[$financialItem->id]) ,false, $financialItem->contact_id);
+      $row[$financialItem->id]['contact_type'] = CRM_Contact_BAO_Contact_Utils::getImage(CRM_Utils_Array::value('contact_sub_type', $row[$financialItem->id]) ? CRM_Utils_Array::value('contact_sub_type', $row[$financialItem->id]) : CRM_Utils_Array::value('contact_type', $row[$financialItem->id]), FALSE, $financialItem->contact_id);
       $financialitems = $row;
     }
 
-    $iFilteredTotal = $iTotal =  $params['total'];
-    $selectorElements =
-      array(
-        'check', 'contact_type', 'sort_name',
-        'amount', 'trxn_id', 'transaction_date', 'payment_method', 'status', 'name', 'action',
-      );
+    $iFilteredTotal = $iTotal = $params['total'];
+    $selectorElements = array(
+      'check',
+      'contact_type',
+      'sort_name',
+      'amount',
+      'trxn_id',
+      'transaction_date',
+      'payment_method',
+      'status',
+      'name',
+      'action',
+    );
 
     header('Content-Type: application/json');
     echo CRM_Utils_JSON::encodeDataTableSelector($financialitems, $sEcho, $iTotal, $iFilteredTotal, $selectorElements);
     CRM_Utils_System::civiExit();
   }
 
-  static function bulkAssignRemove() {
+  public static function bulkAssignRemove() {
     $checkIDs = $_REQUEST['ID'];
     $entityID = CRM_Utils_Type::escape($_REQUEST['entityID'], 'String');
-    $action   = CRM_Utils_Type::escape($_REQUEST['action'], 'String');
+    $action = CRM_Utils_Type::escape($_REQUEST['action'], 'String');
     foreach ($checkIDs as $key => $value) {
-      if ((substr($value,0,7) == "mark_x_" && $action == 'Assign') || (substr($value,0,7) == "mark_y_" && $action == 'Remove')) {
-        $contributions = explode("_",$value);
+      if ((substr($value, 0, 7) == "mark_x_" && $action == 'Assign') || (substr($value, 0, 7) == "mark_y_" && $action == 'Remove')) {
+        $contributions = explode("_", $value);
         $cIDs[] = $contributions[2];
       }
     }
 
     $batchPID = CRM_Core_DAO::getFieldValue('CRM_Batch_DAO_Batch', $entityID, 'payment_instrument_id');
-    $paymentInstrument =  CRM_Core_OptionGroup::getLabel('payment_instrument',$batchPID);
+    $paymentInstrument = CRM_Core_OptionGroup::getLabel('payment_instrument', $batchPID);
     foreach ($cIDs as $key => $value) {
       $recordPID = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialTrxn', $value, 'payment_instrument_id');
-      if ($action == 'Remove' || ($recordPID == $batchPID && $action == 'Assign')  || !isset($batchPID)) {
-        $params =
-          array(
-            'entity_id' => $value,
-            'entity_table' => 'civicrm_financial_trxn',
-            'batch_id' => $entityID,
-          );
+      if ($action == 'Remove' || ($recordPID == $batchPID && $action == 'Assign') || !isset($batchPID)) {
+        $params = array(
+          'entity_id' => $value,
+          'entity_table' => 'civicrm_financial_trxn',
+          'batch_id' => $entityID,
+        );
         if ($action == 'Assign') {
           $updated = CRM_Batch_BAO_Batch::addBatchEntity($params);
         }
@@ -485,29 +498,29 @@ class CRM_Financial_Page_AJAX {
       $status = array('status' => 'record-updated-success');
     }
     else {
-      $status = array('status' => ts("This batch is configured to include only transactions using %1 payment method. If you want to include other transactions, please edit the batch first and modify the Payment Method.", array( 1 => $paymentInstrument)));
+      $status = array('status' => ts("This batch is configured to include only transactions using %1 payment method. If you want to include other transactions, please edit the batch first and modify the Payment Method.", array(1 => $paymentInstrument)));
     }
     CRM_Utils_JSON::output($status);
   }
 
-  static function getBatchSummary() {
+  public static function getBatchSummary() {
     $batchID = CRM_Utils_Type::escape($_REQUEST['batchID'], 'String');
     $params = array('id' => $batchID);
     $batchInfo = CRM_Batch_BAO_Batch::retrieve($params, $value);
     $batchTotals = CRM_Batch_BAO_Batch::batchTotals(array($batchID));
-    $batchSummary =
-      array(
-        'created_by' => CRM_Contact_BAO_Contact::displayName($batchInfo->created_id),
-        'status' => CRM_Core_OptionGroup::getLabel('batch_status', $batchInfo->status_id),
-        'description' => $batchInfo->description,
-        'payment_instrument' => CRM_Core_OptionGroup::getLabel('payment_instrument', $batchInfo->payment_instrument_id),
-        'item_count' => $batchInfo->item_count,
-        'assigned_item_count' => $batchTotals[$batchID]['item_count'],
-        'total' => CRM_Utils_Money::format($batchInfo->total),
-        'assigned_total' => CRM_Utils_Money::format($batchTotals[$batchID]['total']),
-        'opened_date' => CRM_Utils_Date::customFormat($batchInfo->created_date),
-      );
+    $batchSummary = array(
+      'created_by' => CRM_Contact_BAO_Contact::displayName($batchInfo->created_id),
+      'status' => CRM_Core_OptionGroup::getLabel('batch_status', $batchInfo->status_id),
+      'description' => $batchInfo->description,
+      'payment_instrument' => CRM_Core_OptionGroup::getLabel('payment_instrument', $batchInfo->payment_instrument_id),
+      'item_count' => $batchInfo->item_count,
+      'assigned_item_count' => $batchTotals[$batchID]['item_count'],
+      'total' => CRM_Utils_Money::format($batchInfo->total),
+      'assigned_total' => CRM_Utils_Money::format($batchTotals[$batchID]['total']),
+      'opened_date' => CRM_Utils_Date::customFormat($batchInfo->created_date),
+    );
 
     CRM_Utils_JSON::output($batchSummary);
   }
+
 }