return FALSE;
}
- /**
- * Function to record additional payment for partial and refund contributions.
- *
- * @param int $contributionId
- * is the invoice contribution id (got created after processing participant payment).
- * @param array $trxnsData
- * to take user provided input of transaction details.
- * @param string $paymentType
- * 'owed' for purpose of recording partial payments, 'refund' for purpose of recording refund payments.
- * @param int $participantId
- * @param bool $updateStatus
- *
- * @return int
- *
- * @throws \CRM_Core_Exception
- * @throws \CiviCRM_API3_Exception
- */
- public static function recordAdditionalPayment($contributionId, $trxnsData, $paymentType = 'owed', $participantId = NULL, $updateStatus = TRUE) {
-
- if ($paymentType == 'owed') {
- $financialTrxn = CRM_Financial_BAO_Payment::recordPayment($contributionId, $trxnsData, $participantId);
- if (!empty($financialTrxn)) {
- self::recordPaymentActivity($contributionId, $participantId, $financialTrxn->total_amount, $financialTrxn->currency, $financialTrxn->trxn_date);
- return $financialTrxn->id;
- }
- }
- elseif ($paymentType == 'refund') {
- $trxnsData['total_amount'] = -$trxnsData['total_amount'];
- $trxnsData['participant_id'] = $participantId;
- $trxnsData['contribution_id'] = $contributionId;
- return civicrm_api3('Payment', 'create', $trxnsData)['id'];
- }
- }
-
/**
* @param int $targetCid
* @param $activityType
public $_action = NULL;
+ /**
+ * Pre process form.
+ *
+ * @throws \CRM_Core_Exception
+ */
public function preProcess() {
$this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE);
$this->_paymentType = 'owed';
}
else {
- CRM_Core_Error::fatal(ts('No payment information found for this record'));
+ throw new CRM_Core_Exception(ts('No payment information found for this record'));
}
if (!empty($this->_mode) && $this->_paymentType == 'refund') {
- CRM_Core_Error::fatal(ts('Credit card payment is not for Refund payments use'));
+ throw new CRM_Core_Exception(ts('Credit card payment is not for Refund payments use'));
}
list($this->_contributorDisplayName, $this->_contributorEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID);
* Is this function being called from a datatable selector.
*
* If so we don't want to show the buttons.
+ *
+ * @throws \CRM_Core_Exception
*/
protected function isBeingCalledFromSelectorContext() {
return CRM_Utils_Request::retrieve('selector', 'Positive');
$this->processCreditCard();
}
- $defaults = [];
- $contribution = civicrm_api3('Contribution', 'getsingle', [
- 'return' => ["contribution_status_id"],
- 'id' => $this->_contributionId,
- ]);
- $contributionStatusId = CRM_Utils_Array::value('contribution_status_id', $contribution);
- $paymentID = CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $this->_params, $this->_paymentType, $participantId);
- // Fetch the contribution & do proportional line item assignment
- $params = ['id' => $this->_contributionId];
- $contribution = CRM_Contribute_BAO_Contribution::retrieve($params, $defaults, $params);
- // @todo - this line needs to be moved to the Payment.create api - it's not form layer appropriate.
- // testing required.
- CRM_Contribute_BAO_Contribution::addPayments([$contribution], $contributionStatusId);
+ $trxnsData = $this->_params;
+ if ($this->_paymentType == 'refund') {
+ $trxnsData['total_amount'] = -$trxnsData['total_amount'];
+ }
+ $trxnsData['participant_id'] = $participantId;
+ $trxnsData['contribution_id'] = $this->_contributionId;
+ // From the
+ $trxnsData['is_send_contribution_notification'] = FALSE;
+ $paymentID = civicrm_api3('Payment', 'create', $trxnsData)['id'];
+
if ($this->_contributionId && CRM_Core_Permission::access('CiviMember')) {
$membershipPaymentCount = civicrm_api3('MembershipPayment', 'getCount', ['contribution_id' => $this->_contributionId]);
if ($membershipPaymentCount) {
civicrm_api3('Contribution', 'completetransaction', [
'id' => $contribution['id'],
'is_post_payment_create' => TRUE,
+ 'is_email_receipt' => $params['is_send_contribution_notification'],
]);
// Get the trxn
$trxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC');
* @param $updateStatus
* - deprecate this param
*
- * @todo - make this protected once recordAdditionalPayment no longer calls it.
- *
* @return CRM_Financial_DAO_FinancialTrxn
*/
protected static function recordRefundPayment($contributionId, $trxnData, $updateStatus) {
'title' => ts('Cancel Date'),
'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
],
+ 'is_send_contribution_notification' => [
+ 'title' => ts('Send out notifications based on contribution status change?'),
+ 'description' => ts('Most commonly this equates to emails relating to the contribution, event, etcwhen a payment completes a contribution'),
+ 'type' => CRM_Utils_Type::T_BOOLEAN,
+ 'api.default' => TRUE,
+ ],
];
}