/** * On delete contribution record update associated pledge payment and pledge. * * @param int $contributionID * Contribution id. * * @return bool */ public static function resetPledgePayment($contributionID) { // get all status $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); $transaction = new CRM_Core_Transaction(); $payment = new CRM_Pledge_DAO_PledgePayment(); $payment->contribution_id = $contributionID; if ($payment->find(TRUE)) { $payment->contribution_id = 'null'; $payment->status_id = array_search('Pending', $allStatus); $payment->scheduled_date = NULL; $payment->reminder_date = NULL; $payment->scheduled_amount = $payment->actual_amount; $payment->actual_amount = 'null'; $payment->save(); //update pledge status. $pledgeID = $payment->pledge_id; $pledgeStatusID = self::calculatePledgeStatus($pledgeID); CRM_Core_DAO::setFieldValue('CRM_Pledge_DAO_Pledge', $pledgeID, 'status_id', $pledgeStatusID); $payment->free(); } $transaction->commit(); return TRUE; }