[REF] Unshare code to build an array of params for the recurring contribution
authoreileen <emcnaughton@wikimedia.org>
Wed, 23 Dec 2020 21:38:03 +0000 (10:38 +1300)
committereileen <emcnaughton@wikimedia.org>
Wed, 23 Dec 2020 21:38:03 +0000 (10:38 +1300)
CRM/Member/Form/Membership.php

index 69fc0d2d72b257270c5a6b9b423efbe49af97ea3..94aaa3fdb5b5566e49b2f8e457e4bc8065de44e0 100644 (file)
@@ -1895,11 +1895,43 @@ DESC limit 1");
     }
 
     if (isset($params['amount'])) {
-      $contributionParams = array_merge(CRM_Contribute_Form_Contribution_Confirm::getContributionParams(
-        $params, $financialType->id,
-        $result, $receiptDate,
-        $recurringContributionID), $contributionParams
-      );
+      $contributionParams = array_merge([
+        'financial_type_id' => $financialType->id,
+        'receive_date' => !empty($params['receive_date']) ? CRM_Utils_Date::processDate($params['receive_date']) : date('YmdHis'),
+        'tax_amount' => $params['tax_amount'] ?? NULL,
+        'amount_level' => $params['amount_level'] ?? NULL,
+        'invoice_id' => $params['invoiceID'],
+        'currency' => $params['currencyID'],
+        'is_pay_later' => $params['is_pay_later'] ?? 0,
+        //configure cancel reason, cancel date and thankyou date
+        //from 'contribution' type profile if included
+        'cancel_reason' => $params['cancel_reason'] ?? 0,
+        'cancel_date' => isset($params['cancel_date']) ? CRM_Utils_Date::format($params['cancel_date']) : NULL,
+        'thankyou_date' => isset($params['thankyou_date']) ? CRM_Utils_Date::format($params['thankyou_date']) : NULL,
+        //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['skipCleanMoney'] = TRUE;
       // @todo this is the wrong place for this - it should be done as close to form submission
       // as possible