_id = CRM_Utils_Request::retrieve('ppId', 'Positive', $this); CRM_Utils_System::setTitle(ts('Edit Scheduled Pledge Payment')); } /** * Set default values for the form. * the default values are retrieved from the database * * * @return void */ public function setDefaultValues() { $defaults = array(); if ($this->_id) { $params['id'] = $this->_id; CRM_Pledge_BAO_PledgePayment::retrieve($params, $defaults); list($defaults['scheduled_date']) = CRM_Utils_Date::setDateDefaults($defaults['scheduled_date']); if (isset($defaults['contribution_id'])) { $this->assign('pledgePayment', TRUE); } $status = CRM_Contribute_PseudoConstant::contributionStatus($defaults['status_id']); $this->assign('status', $status); } $defaults['option_type'] = 1; return $defaults; } /** * Build the form object. * * @return void */ public function buildQuickForm() { //add various dates $this->addDate('scheduled_date', ts('Scheduled Date'), TRUE); $this->addMoney('scheduled_amount', ts('Scheduled Amount'), TRUE, array('readonly' => TRUE), TRUE, 'currency', NULL, TRUE ); $optionTypes = array( '1' => ts('Adjust Pledge Payment Schedule?'), '2' => ts('Adjust Total Pledge Amount?'), ); $element = $this->addRadio('option_type', NULL, $optionTypes, array(), '
' ); $this->addButtons(array( array( 'type' => 'next', 'name' => ts('Save'), 'spacing' => '         ', 'isDefault' => TRUE, ), array( 'type' => 'cancel', 'name' => ts('Cancel'), ), ) ); } /** * Process the form submission. * * * @return void */ public function postProcess() { //get the submitted form values. $formValues = $this->controller->exportValues($this->_name); $params = array(); $formValues['scheduled_date'] = CRM_Utils_Date::processDate($formValues['scheduled_date']); $params['scheduled_date'] = CRM_Utils_Date::format($formValues['scheduled_date']); $params['currency'] = CRM_Utils_Array::value('currency', $formValues); $now = date('Ymd'); $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); if (CRM_Utils_Date::overdue(CRM_Utils_Date::customFormat($params['scheduled_date'], '%Y%m%d'), $now)) { $params['status_id'] = array_search('Overdue', $contributionStatus); } else { $params['status_id'] = array_search('Pending', $contributionStatus); } $params['id'] = $this->_id; $pledgeId = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $params['id'], 'pledge_id'); CRM_Pledge_BAO_PledgePayment::add($params); $adjustTotalAmount = FALSE; if (CRM_Utils_Array::value('option_type', $formValues) == 2) { $adjustTotalAmount = TRUE; } $pledgeScheduledAmount = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $params['id'], 'scheduled_amount', 'id' ); $oldestPaymentAmount = CRM_Pledge_BAO_PledgePayment::getOldestPledgePayment($pledgeId, 2); if (($oldestPaymentAmount['count'] != 1) && ($oldestPaymentAmount['id'] == $params['id'])) { $oldestPaymentAmount = CRM_Pledge_BAO_PledgePayment::getOldestPledgePayment($pledgeId); } if (($formValues['scheduled_amount'] - $pledgeScheduledAmount) >= $oldestPaymentAmount['amount']) { $adjustTotalAmount = TRUE; } //update pledge status CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeId, array($params['id']), $params['status_id'], NULL, $formValues['scheduled_amount'], $adjustTotalAmount ); $statusMsg = ts('Pledge Payment Schedule has been updated.'); CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success'); } }