//setting default join date and receive date
if ($this->_action == CRM_Core_Action::ADD) {
- $defaults['receive_date'] = date('Y-m-d H:i:s');
+ $defaults['receive_date'] = CRM_Utils_Time::date('Y-m-d H:i:s');
}
$defaults['num_terms'] = 1;
//setting default join date if there is no join date
if (empty($defaults['join_date'])) {
- $defaults['join_date'] = date('Y-m-d');
+ $defaults['join_date'] = CRM_Utils_Time::date('Y-m-d');
}
if (!empty($defaults['membership_end_date'])) {
CRM_Member_StatusOverrideTypes::getSelectOptions()
);
- $this->add('datepicker', 'status_override_end_date', ts('Status Override End Date'), '', FALSE, ['minDate' => date('Y-m-d'), 'time' => FALSE]);
+ $this->add('datepicker', 'status_override_end_date', ts('Status Override End Date'), '', FALSE, ['minDate' => CRM_Utils_Time::date('Y-m-d'), 'time' => FALSE]);
$this->addElement('checkbox', 'record_contribution', ts('Record Membership Payment?'));
* @param array $formValues
* @param object $membership
* Object.
- * @param array $customValues
*
* @return bool
* true if mail was sent successfully
* & needs rationalising.
*
*/
- public static function emailReceipt(&$form, &$formValues, &$membership, $customValues = NULL) {
+ public static function emailReceipt($form, &$formValues, $membership) {
// retrieve 'from email id' for acknowledgement
$receiptFrom = $formValues['from_email_address'] ?? NULL;
$formValues['paidBy'] = $paymentInstrument[$formValues['payment_instrument_id']];
}
- $form->assign('customValues', $customValues);
-
if ($form->_mode) {
// @todo move this outside shared code as Batch entry just doesn't
$form->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters(
$form->assign('receive_date', CRM_Utils_Array::value('receive_date', $formValues));
$form->assign('formValues', $formValues);
- if (empty($lineItem)) {
- $form->assign('mem_start_date', CRM_Utils_Date::formatDateOnlyLong($membership->start_date));
- if (!CRM_Utils_System::isNull($membership->end_date)) {
- $form->assign('mem_end_date', CRM_Utils_Date::formatDateOnlyLong($membership->end_date));
- }
- $form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id));
+ $form->assign('mem_start_date', CRM_Utils_Date::formatDateOnlyLong($membership->start_date));
+ if (!CRM_Utils_System::isNull($membership->end_date)) {
+ $form->assign('mem_end_date', CRM_Utils_Date::formatDateOnlyLong($membership->end_date));
}
+ $form->assign('membership_name', CRM_Member_PseudoConstant::membershipType($membership->membership_type_id));
// @todo - if we have to figure out if this is for batch processing it doesn't belong in the shared function.
$isBatchProcess = is_a($form, 'CRM_Batch_Form_Entry');
* @throws \CRM_Core_Exception
* @throws \CiviCRM_API3_Exception
*/
- public function submit() {
- $isTest = ($this->_mode === 'test') ? 1 : 0;
+ public function submit(): void {
$this->storeContactFields($this->_params);
$this->beginPostProcess();
$endDate = NULL;
$this->assign('is_pay_later', 1);
}
- if (!empty($formValues['send_receipt'])) {
+ if ($this->getSubmittedValue('send_receipt')) {
$params['receipt_date'] = $formValues['receive_date'] ?? NULL;
}
//get the payment processor id as per mode. Try removing in favour of beginPostProcess.
$params['payment_processor_id'] = $formValues['payment_processor_id'] = $this->_paymentProcessor['id'];
- $params['register_date'] = date('YmdHis');
+ $params['register_date'] = CRM_Utils_Time::date('YmdHis');
// add all the additional payment params we need
$formValues['amount'] = $params['total_amount'];
$softParams['soft_credit_type_id'] = $formValues['soft_credit_type_id'];
}
}
- if (!empty($formValues['send_receipt'])) {
+ if ($this->getSubmittedValue('send_receipt')) {
$paymentParams['email'] = $this->_contributorEmail;
}
[
'contact_id' => $this->_contributorContactID,
'line_item' => $lineItem,
- 'is_test' => $isTest,
+ 'is_test' => $this->isTest(),
'campaign_id' => $paymentParams['campaign_id'] ?? NULL,
'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)),
'payment_instrument_id' => $paymentInstrumentID,
if ($paymentStatus !== 'Completed') {
$params['status_id'] = $pendingMembershipStatusId;
$params['skipStatusCal'] = TRUE;
- // unset send-receipt option, since receipt will be sent when ipn is received.
- unset($formValues['send_receipt'], $formValues['send_receipt']);
//as membership is pending set dates to null.
foreach ($this->_memTypeSelected as $memType) {
$membershipTypeValues[$memType]['joinDate'] = NULL;
}
$endDate = $startDate = NULL;
}
- $now = date('YmdHis');
- $params['receive_date'] = date('Y-m-d H:i:s');
+ $now = CRM_Utils_Time::date('YmdHis');
+ $params['receive_date'] = CRM_Utils_Time::date('Y-m-d H:i:s');
$params['invoice_id'] = $formValues['invoiceID'];
$params['contribution_source'] = ts('%1 Membership Signup: Credit card or direct debit (by %2)',
[1 => $this->getSelectedMembershipLabels(), 2 => $userName]
);
$params['source'] = $formValues['source'] ?: $params['contribution_source'];
$params['trxn_id'] = $result['trxn_id'] ?? NULL;
- $params['is_test'] = ($this->_mode === 'live') ? 0 : 1;
- if (!empty($formValues['send_receipt'])) {
+ $params['is_test'] = $this->isTest();
+ $params['receipt_date'] = NULL;
+ if ($this->getSubmittedValue('send_receipt') && $paymentStatus === 'Completed') {
+ // @todo this should be updated by the send function once sent rather than
+ // set here.
$params['receipt_date'] = $now;
}
- else {
- $params['receipt_date'] = NULL;
- }
$this->set('params', $formValues);
$this->assign('trxn_id', CRM_Utils_Array::value('trxn_id', $result));
// @todo figure out why recieve_date isn't being set right here.
if (empty($params['receive_date'])) {
- $params['receive_date'] = date('Y-m-d H:i:s');
+ $params['receive_date'] = CRM_Utils_Time::date('Y-m-d H:i:s');
}
$membershipParams = array_merge($params, $membershipTypeValues[$lineItemValues['membership_type_id']]);
}
$receiptSent = FALSE;
- if (!empty($formValues['send_receipt']) && $receiptSend) {
+ if ($this->getSubmittedValue('send_receipt') && $receiptSend) {
$formValues['contact_id'] = $this->_contactID;
$formValues['contribution_id'] = $contributionId;
// We really don't need a distinct receipt_text_signup vs receipt_text_renewal as they are
*/
protected function emailMembershipReceipt($formValues, $membership) {
$customValues = $this->getCustomValuesForReceipt($formValues, $membership);
+ $this->assign('customValues', $customValues);
- return self::emailReceipt($this, $formValues, $membership, $customValues);
+ return self::emailReceipt($this, $formValues, $membership);
}
/**
$transaction = new CRM_Core_Transaction();
$contactID = $contributionParams['contact_id'];
- $isEmailReceipt = !empty($form->_values['is_email_receipt']);
-
// add these values for the recurringContrib function ,CRM-10188
$params['financial_type_id'] = $contributionParams['financial_type_id'];
- //@todo - this is being set from the form to resolve CRM-10188 - an
- // eNotice caused by it not being set @ the front end
- // however, we then get it being over-written with null for backend contributions
- // a better fix would be to set the values in the respective forms rather than require
- // a function being shared by two forms to deal with their respective values
- // moving it to the BAO & not taking the $form as a param would make sense here.
- if (!isset($params['is_email_receipt']) && $isEmailReceipt) {
- $params['is_email_receipt'] = $isEmailReceipt;
- }
+ $params['is_email_receipt'] = (bool) $this->getSubmittedValue('send_receipt');
$params['is_recur'] = TRUE;
$params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL;
$recurringContributionID = $this->legacyProcessRecurringContribution($params, $contactID);
- $now = date('YmdHis');
+ $now = CRM_Utils_Time::date('YmdHis');
$receiptDate = $params['receipt_date'] ?? NULL;
- if ($isEmailReceipt) {
+ if ($params['is_email_receipt']) {
$receiptDate = $now;
}
- if (isset($params['amount'])) {
- $contributionParams = array_merge([
- 'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
- 'tax_amount' => $params['tax_amount'] ?? NULL,
- 'invoice_id' => $params['invoiceID'],
- 'currency' => $params['currencyID'],
- 'is_pay_later' => $params['is_pay_later'] ?? 0,
- //setting to make available to hook - although seems wrong to set on form for BAO hook availability
- 'skipLineItem' => $params['skipLineItem'] ?? 0,
- ], $contributionParams);
-
- if (!empty($params["is_email_receipt"])) {
- $contributionParams += [
- 'receipt_date' => $receiptDate,
- ];
- }
-
- if ($recurringContributionID) {
- $contributionParams['contribution_recur_id'] = $recurringContributionID;
- }
-
- $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
- if (isset($contributionParams['invoice_id'])) {
- $contributionParams['id'] = CRM_Core_DAO::getFieldValue(
- 'CRM_Contribute_DAO_Contribution',
- $contributionParams['invoice_id'],
- 'id',
- 'invoice_id'
- );
- }
+ $contributionParams = array_merge([
+ 'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : CRM_Utils_Time::date('YmdHis'),
+ 'tax_amount' => $params['tax_amount'] ?? NULL,
+ 'invoice_id' => $params['invoiceID'],
+ 'currency' => $params['currencyID'],
+ 'is_pay_later' => $params['is_pay_later'] ?? 0,
+ //setting to make available to hook - although seems wrong to set on form for BAO hook availability
+ 'skipLineItem' => $params['skipLineItem'] ?? 0,
+ ], $contributionParams);
- $contributionParams['skipCleanMoney'] = TRUE;
- // @todo this is the wrong place for this - it should be done as close to form submission
- // as possible
- $contributionParams['total_amount'] = $params['amount'];
- $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
+ if ($this->getSubmittedValue('send_receipt')) {
+ $contributionParams += [
+ 'receipt_date' => $receiptDate,
+ ];
+ }
- // lets store it in the form variable so postProcess hook can get to this and use it
- $form->_contributionID = $contribution->id;
+ if ($recurringContributionID) {
+ $contributionParams['contribution_recur_id'] = $recurringContributionID;
}
- // process soft credit / pcp params first
- CRM_Contribute_BAO_ContributionSoft::formatSoftCreditParams($params, $form);
+ $contributionParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
- //CRM-13981, processing honor contact into soft-credit contribution
- CRM_Contribute_BAO_ContributionSoft::processSoftContribution($params, $contribution);
+ // @todo this is the wrong place for this - it should be done as close to form submission
+ // as possible
+ $contributionParams['total_amount'] = $params['amount'];
+ $contribution = CRM_Contribute_BAO_Contribution::add($contributionParams);
+
+ // lets store it in the form variable so postProcess hook can get to this and use it
+ $form->_contributionID = $contribution->id;
$transaction->commit();
return $contribution;
* @param array $params
* @param int $contactID
*
- * @return int|null
+ * @return int
*/
- protected function legacyProcessRecurringContribution(&$params, $contactID) {
- $form = $this;
- if (empty($params['is_recur'])) {
- return NULL;
- }
+ protected function legacyProcessRecurringContribution(array $params, $contactID): int {
$recurParams = ['contact_id' => $contactID];
$recurParams['amount'] = $params['amount'] ?? NULL;
$recurParams['currency'] = $params['currency'] ?? NULL;
$recurParams['payment_instrument_id'] = $params['payment_instrument_id'];
- $recurParams['is_test'] = 0;
- if (($form->_action & CRM_Core_Action::PREVIEW) ||
- (isset($form->_mode) && ($form->_mode == 'test'))
- ) {
- $recurParams['is_test'] = 1;
- }
+ $recurParams['is_test'] = $this->isTest();
- $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = date('YmdHis');
+ $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = CRM_Utils_Time::date('YmdHis');
if (!empty($params['receive_date'])) {
$recurParams['start_date'] = date('YmdHis', CRM_Utils_Time::strtotime($params['receive_date']));
}
$recurParams['invoice_id'] = $params['invoiceID'] ?? NULL;
$recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
$recurParams['payment_processor_id'] = $params['payment_processor_id'] ?? NULL;
- $recurParams['is_email_receipt'] = (bool) ($params['is_email_receipt'] ?? FALSE);
+ $recurParams['is_email_receipt'] = (bool) $this->getSubmittedValue('send_receipt');
// we need to add a unique trxn_id to avoid a unique key error
// in paypal IPN we reset this when paypal sends us the real trxn id, CRM-2991
$recurParams['trxn_id'] = $params['trxn_id'] ?? $params['invoiceID'];
- $campaignId = $params['campaign_id'] ?? $form->_values['campaign_id'] ?? NULL;
+ $campaignId = $params['campaign_id'] ?? $this->_values['campaign_id'] ?? NULL;
$recurParams['campaign_id'] = $campaignId;
- $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams);
- if (is_a($recurring, 'CRM_Core_Error')) {
- throw new CRM_Core_Exception(CRM_Core_Error::getMessages($recurring));
- }
+ return CRM_Contribute_BAO_ContributionRecur::add($recurParams)->id;
+ }
- return $recurring->id;
+ /**
+ * Is the form being submitted in test mode.
+ *
+ * @return bool
+ */
+ protected function isTest(): int {
+ return ($this->_mode === 'test') ? TRUE : FALSE;
}
}