Add separate option group for pledge status
authorJitendra Purohit <jitendra@fuzion.co.nz>
Mon, 24 Jul 2017 11:20:17 +0000 (16:50 +0530)
committerJitendra Purohit <jitendra@fuzion.co.nz>
Wed, 26 Jul 2017 05:53:32 +0000 (11:23 +0530)
CRM/Pledge/BAO/Pledge.php
CRM/Pledge/BAO/PledgePayment.php
CRM/Pledge/BAO/Query.php
CRM/Pledge/DAO/Pledge.php
CRM/Pledge/Form/Pledge.php
CRM/Report/Form/Pledge/Detail.php
CRM/Report/Form/Pledge/Pbnp.php
CRM/Report/Form/Pledge/Summary.php
tests/phpunit/api/v3/PledgeTest.php
xml/schema/Pledge/Pledge.xml
xml/templates/civicrm_data.tpl

index aa80503a1576293018972fa8d456ba349d69c733..ead46a0a0705b5b493ff61d5d02aa9a74f0d2ccb 100644 (file)
@@ -495,7 +495,7 @@ GROUP BY  currency
             'honor_type' => CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_ContributionSoft', 'soft_credit_type_id', $honorDAO->soft_credit_type_id),
             'honorId' => $pledgeDAO->contact_id,
             'amount' => $pledgeDAO->amount,
-            'status' => CRM_Contribute_PseudoConstant::contributionStatus($pledgeDAO->status_id),
+            'status' => CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $pledgeDAO->status_id),
             'create_date' => $pledgeDAO->create_date,
             'acknowledge_date' => $pledgeDAO->acknowledge_date,
             'type' => CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType',
@@ -790,7 +790,9 @@ GROUP BY  currency
    */
   public static function getContactPledges($contactID) {
     $pledgeDetails = array();
-    $pledgeStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
+    $pledgeStatuses = CRM_Core_OptionGroup::values('pledge_status',
+      FALSE, FALSE, FALSE, NULL, 'name'
+    );
 
     $status = array();
 
index 5d56d843a4ce02d8bc569282c58acaf6a1cf3588..2319d0b3d85e9d5072aafedf2ed49f6482619b11 100644 (file)
@@ -603,10 +603,13 @@ WHERE  civicrm_pledge.id = %2
    */
   public static function calculatePledgeStatus($pledgeId) {
     $paymentStatusTypes = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
+    $pledgeStatusTypes = CRM_Core_OptionGroup::values('pledge_status',
+      FALSE, FALSE, FALSE, NULL, 'name', TRUE
+    );
 
     //return if the pledge is cancelled.
     $currentPledgeStatus = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge', $pledgeId, 'status_id', 'id', TRUE);
-    if ($currentPledgeStatus == array_search('Cancelled', $paymentStatusTypes)) {
+    if ($currentPledgeStatus == array_search('Cancelled', $pledgeStatusTypes)) {
       return $currentPledgeStatus;
     }
 
@@ -621,18 +624,18 @@ WHERE  civicrm_pledge.id = %2
     }
 
     if (array_search('Overdue', $allStatus)) {
-      $statusId = array_search('Overdue', $paymentStatusTypes);
+      $statusId = array_search('Overdue', $pledgeStatusTypes);
     }
     elseif (array_search('Completed', $allStatus)) {
       if (count(array_count_values($allStatus)) == 1) {
-        $statusId = array_search('Completed', $paymentStatusTypes);
+        $statusId = array_search('Completed', $pledgeStatusTypes);
       }
       else {
-        $statusId = array_search('In Progress', $paymentStatusTypes);
+        $statusId = array_search('In Progress', $pledgeStatusTypes);
       }
     }
     else {
-      $statusId = array_search('Pending', $paymentStatusTypes);
+      $statusId = array_search('Pending', $pledgeStatusTypes);
     }
 
     return $statusId;
@@ -722,7 +725,9 @@ WHERE  civicrm_pledge_payment.id = {$paymentId}
    */
   public static function getOldestPledgePayment($pledgeID, $limit = 1) {
     // get pending / overdue statuses
-    $pledgeStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
+    $pledgeStatuses = CRM_Core_OptionGroup::values('pledge_status',
+      FALSE, FALSE, FALSE, NULL, 'name'
+    );
 
     // get pending and overdue payments
     $status[] = array_search('Pending', $pledgeStatuses);
index 5b9f344b901372df16dcd4f551add0ff2d6f31fd..ee9b5676fc2b52f2a91525fa456c819e1a749a54 100644 (file)
@@ -405,7 +405,7 @@ class CRM_Pledge_BAO_Query extends CRM_Core_BAO_Query {
         break;
 
       case 'pledge_status':
-        $from .= " $side JOIN civicrm_option_group option_group_pledge_status ON (option_group_pledge_status.name = 'contribution_status')";
+        $from .= " $side JOIN civicrm_option_group option_group_pledge_status ON (option_group_pledge_status.name = 'pledge_status')";
         $from .= " $side JOIN civicrm_option_value pledge_status ON (civicrm_pledge.status_id = pledge_status.value AND option_group_pledge_status.id = pledge_status.option_group_id ) ";
         break;
 
index 8ee1a482d3f07c1d025c3888e0a091c714baaa97..cda4ed3aa63c10cf14031f16753e8c5d7c1cb551 100644 (file)
@@ -30,7 +30,7 @@
  *
  * Generated from xml/schema/CRM/Pledge/Pledge.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d323ed81c70c68905fc53ffd849a9e81)
+ * (GenCodeChecksum:02d420c23b3c72fc2687cd857cc7d178)
  */
 require_once 'CRM/Core/DAO.php';
 require_once 'CRM/Utils/Type.php';
@@ -171,7 +171,7 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO {
    */
   public $additional_reminder_day;
   /**
-   * Implicit foreign key to civicrm_option_values in the contribution_status option group.
+   * Implicit foreign key to civicrm_option_values in the pledge_status option group.
    *
    * @var int unsigned
    */
@@ -541,7 +541,7 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO {
           'name' => 'status_id',
           'type' => CRM_Utils_Type::T_INT,
           'title' => ts('Pledge Status Id') ,
-          'description' => 'Implicit foreign key to civicrm_option_values in the contribution_status option group.',
+          'description' => 'Implicit foreign key to civicrm_option_values in the pledge_status option group.',
           'import' => true,
           'where' => 'civicrm_pledge.status_id',
           'headerPattern' => '',
@@ -552,8 +552,8 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO {
           'bao' => 'CRM_Pledge_BAO_Pledge',
           'localizable' => 0,
           'pseudoconstant' => array(
-            'optionGroupName' => 'contribution_status',
-            'optionEditPath' => 'civicrm/admin/options/contribution_status',
+            'optionGroupName' => 'pledge_status',
+            'optionEditPath' => 'civicrm/admin/options/pledge_status',
           )
         ) ,
         'pledge_is_test' => array(
index dad93c060d89a11c53e247a247af6903423feac9..612aac95b07d5c295a72416c5d73ecc39a607681 100644 (file)
@@ -179,7 +179,7 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form {
     }
 
     $pledgeStatus = CRM_Pledge_BAO_Pledge::buildOptions('status_id');
-    $pledgeStatusNames = CRM_Core_OptionGroup::values('contribution_status',
+    $pledgeStatusNames = CRM_Core_OptionGroup::values('pledge_status',
       FALSE, FALSE, FALSE, NULL, 'name', TRUE
     );
     // get default status label (pending)
index abee2b539b9b5432c30e297e0ad6ccf2bdfff6b1..66423f2643c4483de7a045d0163ff11df3274a5f 100644 (file)
@@ -68,7 +68,9 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form {
    * Class constructor.
    */
   public function __construct() {
-    $this->_pledgeStatuses = CRM_Contribute_PseudoConstant::contributionStatus();
+    $this->_pledgeStatuses = CRM_Core_OptionGroup::values('pledge_status',
+      FALSE, FALSE, FALSE, NULL, 'label'
+    );
     // Check if CiviCampaign is a) enabled and b) has active campaigns
     $config = CRM_Core_Config::singleton();
     $campaignEnabled = in_array("CiviCampaign", $config->enableComponents);
@@ -167,7 +169,7 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form {
             'title' => ts('Pledge Status'),
             'type' => CRM_Utils_Type::T_INT,
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Core_OptionGroup::values('contribution_status'),
+            'options' => CRM_Core_OptionGroup::values('pledge_status'),
           ),
           'financial_type_id' => array(
             'title' => ts('Financial Type'),
@@ -596,7 +598,7 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form {
       //handle status id
       if (array_key_exists('civicrm_pledge_status_id', $row)) {
         if ($value = $row['civicrm_pledge_status_id']) {
-          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Contribute_PseudoConstant::contributionStatus($value);
+          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $value);
         }
         $entryFound = TRUE;
       }
index 4bc34245c316a808dabe3fbb419215e6be3a99fc..42dcfbe9e4be26a00452a5ada556c9d35df69a6c 100644 (file)
@@ -129,7 +129,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form {
             'title' => ts('Pledge Status'),
             'type' => CRM_Utils_Type::T_INT,
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Core_OptionGroup::values('contribution_status'),
+            'options' => CRM_Core_OptionGroup::values('pledge_status'),
           ),
           'installments' => array(
             'title' => ts('Installments'),
@@ -372,7 +372,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form {
       //handle the Status Ids
       if (array_key_exists('civicrm_pledge_status_id', $row)) {
         if ($value = $row['civicrm_pledge_status_id']) {
-          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Contribute_PseudoConstant::contributionStatus($value);
+          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $value);
         }
         $entryFound = TRUE;
       }
index e0d49836781613101d55642206767d80f14bb1db..d64e501e9390dfcf1967b47cb7e7f453e2307a45 100644 (file)
@@ -156,7 +156,7 @@ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form {
             'title' => ts('Pledge Status'),
             'type' => CRM_Utils_Type::T_INT,
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Core_OptionGroup::values('contribution_status'),
+            'options' => CRM_Core_OptionGroup::values('pledge_status'),
           ),
           'financial_type_id' => array(
             'title' => ts('Financial Type'),
@@ -429,7 +429,7 @@ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form {
       //handle status id
       if (array_key_exists('civicrm_pledge_status_id', $row)) {
         if ($value = $row['civicrm_pledge_status_id']) {
-          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Contribute_PseudoConstant::contributionStatus($value);
+          $rows[$rowNum]['civicrm_pledge_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $value);
         }
         $entryFound = TRUE;
       }
index bfafec6374f05fd0cbba67dbdd46dc677ecb5021..3994190a86e18b0643277b2bd9af49c54e77fd78 100644 (file)
@@ -199,8 +199,11 @@ class api_v3_PledgeTest extends CiviUnitTestCase {
       'start_date' => 'first saturday of march last year',
     );
     $this->_pledge = $this->callAPISuccess('pledge', 'create', array_merge($this->_params, $overdueParams));
+    $pledgeStatuses = CRM_Core_OptionGroup::values('pledge_status',
+      FALSE, FALSE, FALSE, NULL, 'name'
+    );
     $params = array(
-      'pledge_status_id' => '6',
+      'pledge_status_id' => array_search('Overdue', $pledgeStatuses),
     );
     $result = $this->callAPISuccess('pledge', 'get', $params);
     $emptyResult = $this->callAPISuccess('pledge', 'get', array(
index 585b8e33115ec0a03f43ea667f1fa4ac6cb4c2bf..897c36e32671aad29c746bdd61eb1dad019b8874 100644 (file)
     <export>false</export>
     <type>int unsigned</type>
     <pseudoconstant>
-      <optionGroupName>contribution_status</optionGroupName>
+      <optionGroupName>pledge_status</optionGroupName>
     </pseudoconstant>
-    <comment>Implicit foreign key to civicrm_option_values in the contribution_status option group.</comment>
+    <comment>Implicit foreign key to civicrm_option_values in the pledge_status option group.</comment>
     <add>2.1</add>
   </field>
   <index>
index 0b4ba711ffc40b96d14bebecb3fc0fdecd5bb6ea..e23f93a86a8df7a9461a27a3a49862109f164ac0 100644 (file)
@@ -210,7 +210,8 @@ VALUES
    ('msg_mode'                      , '{ts escape="sql"}Message Mode{/ts}'                       , NULL, 1, 1, 0),
    ('contact_date_reminder_options' , '{ts escape="sql"}Contact Date Reminder Options{/ts}'      , NULL, 1, 1, 1),
    ('wysiwyg_presets'               , '{ts escape="sql"}WYSIWYG Editor Presets{/ts}'             , NULL, 1, 1, 0),
-   ('relative_date_filters'         , '{ts escape="sql"}Relative Date Filters{/ts}'              , NULL, 1, 1, 0);
+   ('relative_date_filters'         , '{ts escape="sql"}Relative Date Filters{/ts}'              , NULL, 1, 1, 0),
+   ('pledge_status'                 , '{ts escape="sql"}Pledge Status{/ts}'                      , NULL, 1, 1, 1);
 
 SELECT @option_group_id_pcm            := max(id) from civicrm_option_group where name = 'preferred_communication_method';
 SELECT @option_group_id_act            := max(id) from civicrm_option_group where name = 'activity_type';
@@ -290,6 +291,7 @@ SELECT @option_group_id_msg_mode := max(id) from civicrm_option_group where name
 SELECT @option_group_id_contactDateMode := max(id) from civicrm_option_group where name = 'contact_date_reminder_options';
 SELECT @option_group_id_date_filter    := max(id) from civicrm_option_group where name = 'relative_date_filters';
 SELECT @option_group_id_wysiwyg_presets    := max(id) from civicrm_option_group where name = 'wysiwyg_presets';
+SELECT @option_group_id_ps    := max(id) from civicrm_option_group where name = 'pledge_status';
 
 SELECT @contributeCompId := max(id) FROM civicrm_component where name = 'CiviContribute';
 SELECT @eventCompId      := max(id) FROM civicrm_component where name = 'CiviEvent';
@@ -637,7 +639,7 @@ VALUES
   (@option_group_id_report, {localize}'{ts escape="sql"}Contribution and Membership Details{/ts}'{/localize}, 'member/contributionDetail', 'CRM_Report_Form_Member_ContributionDetail', NULL, 0, NULL, 48, {localize}'{ts escape="sql"}Contribution details for any type of contribution, plus associated membership information for contributions which are in payment for memberships.{/ts}'{/localize}, 0, 0, 1, @memberCompId, NULL, NULL),
   (@option_group_id_report, {localize}'{ts escape="sql"}Recurring Contributions Report{/ts}'{/localize}, 'contribute/recur', 'CRM_Report_Form_Contribute_Recur',               NULL, 0, NULL, 49, {localize}'{ts escape="sql"}Provides information about the status of recurring contributions{/ts}'{/localize}, 0, 0, 1, @contributeCompId, NULL, NULL),
   (@option_group_id_report, {localize}'{ts escape="sql"}Recurring Contributions Summary{/ts}'{/localize}, 'contribute/recursummary', 'CRM_Report_Form_Contribute_RecurSummary',               NULL, 0, NULL, 49, {localize}'{ts escape="sql"}Provides simple summary for each payment instrument for which there are recurring contributions (e.g. Credit Card, Standing Order, Direct Debit, etc., NULL), showing within a given date range.{/ts}'{/localize}, 0, 0, 1, @contributeCompId, NULL, NULL),
-  (@option_group_id_report, {localize}'{ts escape="sql"}Deferred Revenue Details{/ts}'{/localize}, 'contribute/deferredrevenue', 'CRM_Report_Form_Contribute_DeferredRevenue', NULL, 0, NULL, 50, {localize}'{ts escape="sql"}Deferred Revenue Details Report{/ts}'{/localize}, 0, 0, 1, @contributeCompId, NULL, NULL), 
+  (@option_group_id_report, {localize}'{ts escape="sql"}Deferred Revenue Details{/ts}'{/localize}, 'contribute/deferredrevenue', 'CRM_Report_Form_Contribute_DeferredRevenue', NULL, 0, NULL, 50, {localize}'{ts escape="sql"}Deferred Revenue Details Report{/ts}'{/localize}, 0, 0, 1, @contributeCompId, NULL, NULL),
 
   (@option_group_id_acs, '{ts escape="sql"}Scheduled{/ts}',    1, 'Scheduled',    NULL, 0, 1,    1, NULL, 0, 1, 1, NULL, NULL, NULL),
   (@option_group_id_acs, '{ts escape="sql"}Completed{/ts}',    2, 'Completed',    NULL, 1, NULL, 2, NULL, 0, 1, 1, NULL, NULL, NULL),
@@ -1025,7 +1027,14 @@ VALUES
    (@option_group_id_date_filter, '{ts escape="sql"}From end of previous week{/ts}', 'greater_previous.week', 'greater_previous.week', NULL, NULL, NULL,59, NULL, 0, 0, 1, NULL, NULL, NULL),
    (@option_group_id_date_filter, '{ts escape="sql"}From end of previous calendar month{/ts}', 'greater_previous.month', 'greater_previous.month', NULL, NULL, NULL,60, NULL, 0, 0, 1, NULL, NULL, NULL),
    (@option_group_id_date_filter, '{ts escape="sql"}From end of previous quarter{/ts}', 'greater_previous.quarter', 'greater_previous.quarter', NULL, NULL, NULL,61, NULL, 0, 0, 1, NULL, NULL, NULL),
-   (@option_group_id_date_filter, '{ts escape="sql"}From end of previous calendar year{/ts}', 'greater_previous.year', 'greater_previous.year', NULL, NULL, NULL,62, NULL, 0, 0, 1, NULL, NULL, NULL);
+   (@option_group_id_date_filter, '{ts escape="sql"}From end of previous calendar year{/ts}', 'greater_previous.year', 'greater_previous.year', NULL, NULL, NULL,62, NULL, 0, 0, 1, NULL, NULL, NULL),
+
+-- Pledge Status
+  (@option_group_id_ps, '{ts escape="sql"}Completed{/ts}'  , 1, 'Completed'  , NULL, 0, NULL, 1, NULL, 0, 1, 1, NULL, NULL, NULL),
+  (@option_group_id_ps, '{ts escape="sql"}Pending{/ts}'    , 2, 'Pending'    , NULL, 0, NULL, 2, NULL, 0, 1, 1, NULL, NULL, NULL),
+  (@option_group_id_ps, '{ts escape="sql"}Cancelled{/ts}'  , 3, 'Cancelled'  , NULL, 0, NULL, 3, NULL, 0, 1, 1, NULL, NULL, NULL),
+  (@option_group_id_ps, '{ts escape="sql"}In Progress{/ts}', 4, 'In Progress', NULL, 0, NULL, 5, NULL, 0, 1, 1, NULL, NULL, NULL),
+  (@option_group_id_ps, '{ts escape="sql"}Overdue{/ts}'    , 5, 'Overdue'    , NULL, 0, NULL, 6, NULL, 0, 1, 1, NULL, NULL, NULL);
 
 -- financial accounts
 SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat;