From 385819f5b7312d4d8b73df195925fff529fa699e Mon Sep 17 00:00:00 2001 From: eileen Date: Thu, 24 Dec 2020 10:38:03 +1300 Subject: [PATCH] [REF] Unshare code to build an array of params for the recurring contribution --- CRM/Member/Form/Membership.php | 42 ++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index 69fc0d2d72..94aaa3fdb5 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -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 -- 2.25.1