static function isEligibleForGiftAid($contactID, $date = null, $contributionID = null) { $declaration = self::getDeclaration($contactID, $date, $contributionID); $isEligible = $declaration['eligible_for_direct_debit'] == 1; // hook can alter the eligibility if needed DirectDebit_Utils_Hook::giftAidEligible($isEligible, $contactID, $date, $contributionID); return $isEligible; }
/** * Given an array of contributionIDs, add them to a batch * * @param array $contributionIDs (reference ) the array of contribution ids to be added * @param int $batchID - the batchID to be added to * * @return array (total, added, notAdded) ids of contributions added to the batch * @access public * @static */ static function addContributionToBatch($contributionIDs, $batchID) { $date = date('YmdHis'); $contributionsAdded = array(); $contributionsNotAdded = array(); require_once "DirectDebit/Utils/DirectDebit.php"; require_once "CRM/Contribute/BAO/Contribution.php"; require_once 'CRM/Core/DAO/EntityBatch.php'; require_once "CRM/Core/BAO/Address.php"; require_once "CRM/Contact/BAO/Contact.php"; require_once "CRM/Utils/Address.php"; foreach ($contributionIDs as $contributionID) { $batchContribution =& new CRM_Core_DAO_EntityBatch(); $batchContribution->entity_table = 'civicrm_contribution'; $batchContribution->entity_id = $contributionID; // check if the selected contribution id already in a batch // if not, add to batchContribution else keep the count of contributions that are not added if ($batchContribution->find(true)) { $contributionsNotAdded[] = $contributionID; continue; } // get additional info // get contribution details from Contribution using contribution id $params = array('id' => $contributionID); CRM_Contribute_BAO_Contribution::retrieve($params, $contribution, $ids); $contactId = $contribution['contact_id']; // check if contribution is valid for gift aid if (DirectDebit_Utils_DirectDebit::isEligibleForGiftAid($contactId, $contribution['receive_date'], $contributionID)) { $batchContribution->batch_id = $batchID; $batchContribution->save(); // get display name $displayName = CRM_Contact_BAO_Contact::displayName($contactId); // get Address & Postal Code from Address $params = array('contact_id' => $contactId, 'is_primary' => 1); $address = CRM_Core_BAO_Address::getValues($params); $address = $address[1]; //adds all address lines to the report $fullFormatedAddress = CRM_Utils_Address::format($address); // Use addslashes function to avoid error of the fields have single quotes $displayName = addslashes($displayName); $fullFormatedAddress = addslashes($fullFormatedAddress); $address['postal_code'] = addslashes($address['postal_code']); // FIXME: check if there is customTable method //$query = "INSERT INTO civicrm_value_direct_debit_details // (entity_id, name, address, post_code, amount) // VALUES ({$contributionID}, '{$displayName}', '{$fullFormatedAddress}', '{$address['postal_code']}', {$contribution['total_amount']}) // ON DUPLICATE KEY UPDATE name = '{$displayName}' , address = '{$fullFormatedAddress}' , post_code = '{$address['postal_code']}' , amount = '{$contribution['total_amount']}'"; $query = "UPDATE civicrm_value_direct_debit_details SET added_to_direct_debit = 1 WHERE entity_id = '{$contributionID}'"; CRM_Core_DAO::executeQuery($query); $contributionsAdded[] = $contributionID; } else { $contributionsNotAdded[] = $contributionID; } } if (!empty($contributionsAdded)) { // if there is any extra work required to be done for contributions that are batched, // should be done via hook DirectDebit_Utils_Hook::batchContributions($batchID, $contributionsAdded); } return array(count($contributionIDs), count($contributionsAdded), count($contributionsNotAdded)); }