$isRecur
) {
CRM_Core_Payment_Form::mapParams($form->_bltID, $form->_params, $paymentParams, TRUE);
- $lineItems = $form->_lineItem;
$isPaymentTransaction = self::isPaymentTransaction($form);
$financialType = new CRM_Financial_DAO_FinancialType();
$contributionParams = array(
'id' => CRM_Utils_Array::value('contribution_id', $paymentParams),
'contact_id' => $contactID,
- 'line_item' => $lineItems,
'is_test' => $isTest,
'campaign_id' => CRM_Utils_Array::value('campaign_id', $paymentParams, CRM_Utils_Array::value('campaign_id', $form->_values)),
'contribution_page_id' => $form->_id,
'source' => CRM_Utils_Array::value('source', $paymentParams, CRM_Utils_Array::value('description', $paymentParams)),
);
+ if (isset($paymentParams['line_item'])) {
+ // @todo make sure this is consisently set at this point.
+ $contributionParams['line_item'] = $paymentParams['line_item'];
+ }
if (!empty($form->_paymentProcessor)) {
$contributionParams['payment_instrument_id'] = $paymentParams['payment_instrument_id'] = $form->_paymentProcessor['payment_instrument_id'];
}
if (!$isProcessSeparateMembershipTransaction) {
$membershipParams['skipLineItem'] = 1;
}
+ else {
+ $membershipParams['total_amount'] = $totalAmount;
+ CRM_Price_BAO_LineItem::getLineItemArray($membershipParams);
+
+ }
$paymentResult = CRM_Contribute_BAO_Contribution_Utils::processConfirm($form, $membershipParams,
$contactID,
$financialTypeID,
if (empty($form->_params['auto_renew']) && !empty($membershipParams['is_recur'])) {
unset($membershipParams['is_recur']);
}
- list($membershipContribution, $secondPaymentResult) = $this->processSecondaryFinancialTransaction($contactID, $form, $membershipParams,
+ list($membershipContribution, $secondPaymentResult) = $this->processSecondaryFinancialTransaction($contactID, $form, array_merge($membershipParams, array('skipLineItem' => 1)),
$isTest, $membershipLineItems, CRM_Utils_Array::value('minimum_fee', $membershipDetails, 0), CRM_Utils_Array::value('financial_type_id', $membershipDetails));
$paymentResults[] = array('contribution_id' => $membershipContribution->id, 'result' => $secondPaymentResult);
}
if (!empty($membershipContribution)) {
// update recurring id for membership record
CRM_Member_BAO_Membership::updateRecurMembership($membership, $membershipContribution);
+ // Next line is probably redundant. Checksprevent it happening twice.
CRM_Member_BAO_Membership::linkMembershipPayment($membership, $membershipContribution);
}
}
* @param int $campaignId
* @param array $formDates
* @param null|CRM_Contribute_BAO_Contribution $contribution
+ * @param array $lineItems
*
* @return array
* @throws \CRM_Core_Exception
* @param array $params
* (reference) an assoc array of name/value pairs.
*
- * @return CRM_Price_DAO_LineItem
+ * @return \CRM_Price_DAO_LineItem
+ *
+ * @throws \CiviCRM_API3_Exception
+ * @throws \Exception
*/
public static function create(&$params) {
$id = CRM_Utils_Array::value('id', $params);
$this->callAPIAndDocument('contribution_page', 'submit', $submitParams, __FUNCTION__, __FILE__, 'submit contribution page', NULL);
$contributions = $this->callAPISuccess('contribution', 'get', array('contribution_page_id' => $this->_ids['contribution_page']));
$this->assertCount(2, $contributions['values']);
- $this->callAPISuccessGetCount('LineItem', array(), 2);
+ $lines = $this->callAPISuccess('LineItem', 'get', array('sequential' => 1));
+ $this->assertEquals(10, $lines['values'][0]['line_total']);
$membershipPayment = $this->callAPISuccess('membership_payment', 'getsingle', array());
$this->assertTrue(in_array($membershipPayment['contribution_id'], array_keys($contributions['values'])));
$membership = $this->callAPISuccessGetSingle('membership', array('id' => $membershipPayment['membership_id']));