From 03ad81aea66356739983323903b11d3ea59f2620 Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Fri, 9 Oct 2015 20:16:46 -0400 Subject: [PATCH] CRM-17425 initial changes for pcp in contrib batch entry ---------------------------------------- * CRM-17425: Allow PCP selection in contribution batch entry https://issues.civicrm.org/jira/browse/CRM-17425 --- CRM/Batch/Form/Entry.php | 1 + CRM/Contribute/BAO/Contribution.php | 14 ++++++++---- CRM/Contribute/BAO/Query.php | 8 +++++++ CRM/Contribute/Form/SoftCredit.php | 35 ++++++++++++++++++++--------- CRM/Core/BAO/UFField.php | 4 ++++ CRM/Core/BAO/UFGroup.php | 1 + templates/CRM/Batch/Form/Entry.tpl | 9 +++++++- 7 files changed, 56 insertions(+), 16 deletions(-) diff --git a/CRM/Batch/Form/Entry.php b/CRM/Batch/Form/Entry.php index 68dafe06c2..6984c262b4 100755 --- a/CRM/Batch/Form/Entry.php +++ b/CRM/Batch/Form/Entry.php @@ -102,6 +102,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form { } CRM_Core_Resources::singleton() ->addScriptFile('civicrm', 'templates/CRM/Batch/Form/Entry.js', 1, 'html-header') + ->addScriptFile('civicrm', 'templates/CRM/Contribute/Form/PCP.js.tpl', 1, 'html-header') ->addSetting(array('batch' => array('type_id' => $this->_batchInfo['type_id']))) ->addSetting(array('setting' => array('monetaryThousandSeparator' => CRM_Core_Config::singleton()->monetaryThousandSeparator))) ->addSetting(array('setting' => array('monetaryDecimalPoint' => CRM_Core_Config::singleton()->monetaryDecimalPoint))); diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index d6e68f17e2..1bf241ef91 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1090,6 +1090,12 @@ LEFT JOIN civicrm_line_item i ON ( i.contribution_id = c.id AND i.entity_table 'headerPattern' => '/^soft_credit_contact_id$/i', 'where' => 'civicrm_contribution_soft.contact_id', ), + 'contribution_pcp_title' => array( + 'name' => 'contribution_pcp_title', + 'title' => 'Personal Campaign Page Title', + 'headerPattern' => '/^contribution_pcp_title$/i', + 'where' => 'contribution_pcp.title', + ), ); return $extraFields; @@ -1246,7 +1252,7 @@ WHERE civicrm_contribution.contact_id = civicrm_contact.id AND b.is_test = 0 AND b.receive_date >= $startDate AND b.receive_date < $endDate - $additionalWhere + $additionalWhere GROUP BY currency "; $dao = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); @@ -1947,9 +1953,9 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ $contactContributionsSQL = " SELECT contribution.id AS id FROM civicrm_contribution contribution - LEFT JOIN civicrm_line_item i ON i.contribution_id = contribution.id AND i.entity_table = 'civicrm_contribution' $liWhere - WHERE contribution.is_test = 0 AND contribution.contact_id = {$contactId} - $additionalWhere + LEFT JOIN civicrm_line_item i ON i.contribution_id = contribution.id AND i.entity_table = 'civicrm_contribution' $liWhere + WHERE contribution.is_test = 0 AND contribution.contact_id = {$contactId} + $additionalWhere AND i.id IS NULL"; $contactSoftCreditContributionsSQL = " diff --git a/CRM/Contribute/BAO/Query.php b/CRM/Contribute/BAO/Query.php index b500f9d714..ea46aaaa40 100644 --- a/CRM/Contribute/BAO/Query.php +++ b/CRM/Contribute/BAO/Query.php @@ -219,6 +219,14 @@ class CRM_Contribute_BAO_Query { $query->_tables['civicrm_contribution_soft_contact'] = 1; $query->_tables['civicrm_contribution_soft_phone'] = 1; } + + if (!empty($query->_returnProperties['contribution_soft_credit_pcp_id'])) { + $query->_select['contribution_soft_credit_pcp_id'] = "civicrm_contribution_soft.pcp_id as contribution_soft_credit_pcp_id"; + $query->_element['contribution_soft_credit_pcp_id'] = 1; + $query->_tables['civicrm_contribution'] = 1; + $query->_tables['civicrm_contribution_soft'] = 1; + } + if (!empty($query->_returnProperties['contribution_campaign_title'])) { $query->_select['contribution_campaign_title'] = "civicrm_campaign.title as contribution_campaign_title"; $query->_element['contribution_campaign_title'] = $query->_tables['civicrm_campaign'] = 1; diff --git a/CRM/Contribute/Form/SoftCredit.php b/CRM/Contribute/Form/SoftCredit.php index a24a5dc343..670bbcb812 100644 --- a/CRM/Contribute/Form/SoftCredit.php +++ b/CRM/Contribute/Form/SoftCredit.php @@ -136,24 +136,37 @@ class CRM_Contribute_Form_SoftCredit { } } + self::addPCPFields($form); + + $form->assign('showSoftCreditRow', $showSoftCreditRow); + $form->assign('rowCount', $item_count); + $form->addElement('hidden', 'sct_default_id', + CRM_Core_OptionGroup::getDefaultValue("soft_credit_type"), + array('id' => 'sct_default_id') + ); + } + + /** + * Add PCP fields for the new contribution form and others. + * + * @param CRM_Core_Form &$form + * The form being built. + * @param string $suffix + * A suffix to add to field names. + */ + public static function addPCPFields(&$form, $suffix = '') { // CRM-7368 allow user to set or edit PCP link for contributions $siteHasPCPs = CRM_Contribute_PseudoConstant::pcPage(); if (!CRM_Utils_Array::crmIsEmptyArray($siteHasPCPs)) { $form->assign('siteHasPCPs', 1); // Fixme: Not a true entityRef field. Relies on PCP.js.tpl - $form->add('text', 'pcp_made_through_id', ts('Credit to a Personal Campaign Page'), array('class' => 'twenty', 'placeholder' => ts('- select -'))); + $form->add('text', "pcp_made_through_id$suffix", ts('Credit to a Personal Campaign Page'), array('class' => 'twenty', 'placeholder' => ts('- select -'))); // stores the label - $form->add('hidden', 'pcp_made_through'); - $form->addElement('checkbox', 'pcp_display_in_roll', ts('Display in Honor Roll?'), NULL); - $form->addElement('text', 'pcp_roll_nickname', ts('Name (for Honor Roll)')); - $form->addElement('textarea', 'pcp_personal_note', ts('Personal Note (for Honor Roll)')); + $form->add('hidden', "pcp_made_through$suffix"); + $form->addElement('checkbox', "pcp_display_in_roll$suffix", ts('Display in Honor Roll?'), NULL); + $form->addElement('text', "pcp_roll_nickname$suffix", ts('Name (for Honor Roll)')); + $form->addElement('textarea', "pcp_personal_note$suffix", ts('Personal Note (for Honor Roll)')); } - $form->assign('showSoftCreditRow', $showSoftCreditRow); - $form->assign('rowCount', $item_count); - $form->addElement('hidden', 'sct_default_id', - CRM_Core_OptionGroup::getDefaultValue("soft_credit_type"), - array('id' => 'sct_default_id') - ); } /** diff --git a/CRM/Core/BAO/UFField.php b/CRM/Core/BAO/UFField.php index 11fc22453b..5a208bb25f 100644 --- a/CRM/Core/BAO/UFField.php +++ b/CRM/Core/BAO/UFField.php @@ -1090,6 +1090,10 @@ SELECT id 'name' => 'contribution_note', 'title' => ts('Contribution Note'), ), + 'contribution_soft_credit_pcp_id' => array( + 'name' => 'contribution_soft_credit_pcp_id', + 'title' => ts('Personal Campaign Page'), + ), ); } return self::$_contriBatchEntryFields; diff --git a/CRM/Core/BAO/UFGroup.php b/CRM/Core/BAO/UFGroup.php index 97951229a7..4038529f76 100644 --- a/CRM/Core/BAO/UFGroup.php +++ b/CRM/Core/BAO/UFGroup.php @@ -2175,6 +2175,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) $SCTDefaultValue = CRM_Core_OptionGroup::getValue('soft_credit_type', 'Gift', 'name'); } $form->addElement('hidden', 'sct_default_id', $SCTDefaultValue, array('id' => 'sct_default_id')); + CRM_Contribute_Form_SoftCredit::addPCPFields($form, "[$rowNumber]"); } elseif ($fieldName == 'currency') { $form->addCurrency($name, $title, $required); diff --git a/templates/CRM/Batch/Form/Entry.tpl b/templates/CRM/Batch/Form/Entry.tpl index bc31812ebf..0b3dc5b3aa 100755 --- a/templates/CRM/Batch/Form/Entry.tpl +++ b/templates/CRM/Batch/Form/Entry.tpl @@ -97,7 +97,14 @@ {$form.soft_credit_contact_id.$rowNumber.html|crmAddClass:big} {$form.soft_credit_amount.$rowNumber.label} {$form.soft_credit_amount.$rowNumber.html|crmAddClass:eight} -
{$form.soft_credit_type.$rowNumber.html}
+ {elseif $n eq 'soft_credit_type'} +
+ {$form.soft_credit_type.$rowNumber.html} + {$form.pcp_made_through_id.$rowNumber.label} {$form.pcp_made_through_id.$rowNumber.html}{$form.pcp_made_through.$rowNumber.html} + {$form.pcp_display_in_roll.$rowNumber.label} {$form.pcp_display_in_roll.$rowNumber.html} + {$form.pcp_roll_nickname.$rowNumber.label} {$form.pcp_roll_nickname.$rowNumber.html} + {$form.pcp_personal_note.$rowNumber.label} {$form.pcp_personal_note.$rowNumber.html} +
{elseif in_array( $fields.$n.html_type, array('Radio', 'CheckBox'))}
 {$form.field.$rowNumber.$n.html}
{elseif $n eq 'total_amount'} -- 2.25.1