X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMember%2FForm%2FMembership.php;h=8d094b27b88fbedc6e237b4bb440b3c84818348c;hb=be2e79c858d13a8fc84e66e316580304c571cb93;hp=1112bb3337967d26fca1453f46f1704fd9d06846;hpb=da176e2b330d0d7031c2840c3375c32a35683716;p=civicrm-core.git diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index 1112bb3337..8d094b27b8 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -970,7 +970,7 @@ DESC limit 1"); 'toName' => $form->_contributorDisplayName, 'toEmail' => $form->_contributorEmail, 'PDFFilename' => ts('receipt') . '.pdf', - 'isEmailPdf' => Civi::settings()->get('invoicing') && Civi::settings()->get('is_email_pdf'), + 'isEmailPdf' => Civi::settings()->get('invoicing') && Civi::settings()->get('invoice_is_email_pdf'), 'contributionId' => $formValues['contribution_id'], 'isTest' => (bool) ($form->_action & CRM_Core_Action::PREVIEW), ] @@ -1014,10 +1014,7 @@ DESC limit 1"); $this->_priceSet, $formValues ); - if (empty($formValues['financial_type_id'])) { - $formValues['financial_type_id'] = $this->_priceSet['financial_type_id']; - } - + $formValues['financial_type_id'] = $this->getFinancialTypeID(); $membershipTypeValues = []; foreach ($this->_memTypeSelected as $memType) { $membershipTypeValues[$memType]['membership_type_id'] = $memType; @@ -1055,20 +1052,10 @@ DESC limit 1"); $termsByType = []; - $lineItem = [$this->_priceSetId => []]; - - // BEGIN Fix for dev/core/issues/860 - // Prepare fee block and call buildAmount hook - based on CRM_Price_BAO_PriceSet::buildPriceSet(). - CRM_Utils_Hook::buildAmount('membership', $this, $this->_priceSet['fields']); - // END Fix for dev/core/issues/860 + $lineItem = [$this->order->getPriceSetID() => $this->order->getLineItems()]; - CRM_Price_BAO_PriceSet::processAmount($this->_priceSet['fields'], - $formValues, $lineItem[$this->_priceSetId], $this->_priceSetId); - - if (!empty($formValues['tax_amount'])) { - $params['tax_amount'] = $formValues['tax_amount']; - } - $params['total_amount'] = $formValues['amount'] ?? NULL; + $params['tax_amount'] = $this->order->getTotalTaxAmount(); + $params['total_amount'] = $this->order->getTotalAmount(); if (!empty($lineItem[$this->_priceSetId])) { foreach ($lineItem[$this->_priceSetId] as &$li) { if (!empty($li['membership_type_id'])) { @@ -1164,7 +1151,6 @@ DESC limit 1"); if (!empty($formValues['record_contribution'])) { $recordContribution = [ 'total_amount', - 'financial_type_id', 'payment_instrument_id', 'trxn_id', 'contribution_status_id', @@ -1178,6 +1164,7 @@ DESC limit 1"); foreach ($recordContribution as $f) { $params[$f] = $formValues[$f] ?? NULL; } + $params['financial_type_id'] = $this->getFinancialTypeID(); if (empty($formValues['source'])) { $params['contribution_source'] = ts('%1 Membership: Offline signup (by %2)', [ @@ -1205,7 +1192,7 @@ DESC limit 1"); //insert financial type name in receipt. $formValues['contributionType_name'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', - $formValues['financial_type_id'] + $this->getFinancialTypeID() ); } @@ -1221,16 +1208,7 @@ DESC limit 1"); //CRM-20264 : Store CC type and number (last 4 digit) during backoffice or online payment $params['card_type_id'] = $this->_params['card_type_id'] ?? NULL; $params['pan_truncation'] = $this->_params['pan_truncation'] ?? NULL; - - if (!$isQuickConfig) { - $params['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', - $this->_priceSetId, - 'financial_type_id' - ); - } - else { - $params['financial_type_id'] = $formValues['financial_type_id'] ?? NULL; - } + $params['financial_type_id'] = $this->getFinancialTypeID(); //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']; @@ -1241,7 +1219,7 @@ DESC limit 1"); $formValues['currencyID'] = $this->getCurrency(); $formValues['description'] = ts("Contribution submitted by a staff person using member's credit card for signup"); $formValues['invoiceID'] = $this->getInvoiceID(); - $formValues['financial_type_id'] = $params['financial_type_id']; + $formValues['financial_type_id'] = $this->getFinancialTypeID(); // at this point we've created a contact and stored its address etc // all the payment processors expect the name and address to be in the @@ -1278,7 +1256,7 @@ DESC limit 1"); 'campaign_id' => $paymentParams['campaign_id'] ?? NULL, 'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)), 'payment_instrument_id' => $paymentInstrumentID, - 'financial_type_id' => $params['financial_type_id'], + 'financial_type_id' => $this->getFinancialTypeID(), 'receive_date' => CRM_Utils_Time::date('YmdHis'), 'tax_amount' => $params['tax_amount'] ?? NULL, 'invoice_id' => $this->getInvoiceID(), @@ -1851,22 +1829,14 @@ DESC limit 1"); $contactID = $contributionParams['contact_id']; // add these values for the recurringContrib function ,CRM-10188 - $params['financial_type_id'] = $contributionParams['financial_type_id']; - - $params['is_email_receipt'] = (bool) $this->getSubmittedValue('send_receipt'); + $params['financial_type_id'] = $this->getFinancialTypeID(); $params['is_recur'] = TRUE; $params['payment_instrument_id'] = $contributionParams['payment_instrument_id'] ?? NULL; $recurringContributionID = $this->legacyProcessRecurringContribution($params, $contactID); - $now = CRM_Utils_Time::date('YmdHis'); - $receiptDate = $params['receipt_date'] ?? NULL; - if ($params['is_email_receipt']) { - $receiptDate = $now; - } - if ($this->getSubmittedValue('send_receipt')) { $contributionParams += [ - 'receipt_date' => $receiptDate, + 'receipt_date' => CRM_Utils_Time::date('YmdHis'), ]; } @@ -1906,7 +1876,7 @@ DESC limit 1"); $recurParams['frequency_unit'] = $params['frequency_unit'] ?? NULL; $recurParams['frequency_interval'] = $params['frequency_interval'] ?? NULL; $recurParams['installments'] = $params['installments'] ?? NULL; - $recurParams['financial_type_id'] = $params['financial_type_id']; + $recurParams['financial_type_id'] = $this->getFinancialTypeID(); $recurParams['currency'] = $params['currency'] ?? NULL; $recurParams['payment_instrument_id'] = $params['payment_instrument_id']; @@ -1938,4 +1908,16 @@ DESC limit 1"); return ($this->_mode === 'test') ? TRUE : FALSE; } + /** + * Get the financial type id relevant to the contribution. + * + * Financial type id is optional when price sets are in use. + * Otherwise they are required for the form to submit. + * + * @return int + */ + protected function getFinancialTypeID(): int { + return (int) $this->getSubmittedValue('financial_type_id') ?: $this->order->getFinancialTypeID(); + } + }