--CRM-15055, code changes to handle separate membership
authorPradeep Nayak <pradeep.nayak@webaccess.co.in>
Sat, 30 Aug 2014 14:02:48 +0000 (19:32 +0530)
committerPradeep Nayak <pradeep.nayak@webaccess.co.in>
Wed, 3 Sep 2014 09:27:19 +0000 (14:57 +0530)
CRM/Member/BAO/Membership.php

index bb9bdccbeaff0a5b247002a3ad01e8b7e87aa99d..7192bf43aa4bfed86aa914a6602868fe41149d39 100644 (file)
@@ -1276,15 +1276,20 @@ AND civicrm_membership.is_test = %2";
     
     $membershipLineItem = array();
     if (is_array($membershipTypeID)) {
-      foreach ($form->_lineItem[$form->_priceSetId] as $key => $line) {
+      $lineItems = $form->_lineItem;
+      if ($isProcessSeparateMembershipTransaction) {
+        $lineItems[$form->_priceSetId] =  array_merge($lineItems[$form->_priceSetId], $membershipLineItems[$form->_priceSetId]);
+      }
+      foreach ($lineItems[$form->_priceSetId] as $key => $line) {
         if (!empty($line['membership_type_id'])) {
           $membershipLineItem[$line['membership_type_id']] = $line;
-          unset($form->_lineItem[$form->_priceSetId][$key]);
+          unset($lineItems[$form->_priceSetId][$key]);
         }        
       }      
-      if (empty($form->_lineItem[$form->_priceSetId])) {
+      if (empty($lineItems[$form->_priceSetId])) {
         $membershipParams['skipLineItem'] = TRUE;
       }
+      $form->_lineItem = $lineItems;
     }
     
     if ($isPaidMembership) {
@@ -1307,7 +1312,7 @@ AND civicrm_membership.is_test = %2";
 
     if ($isProcessSeparateMembershipTransaction) {
       try {
-        $lineItems = $form->_lineItem = $membershipLineItems;
+        $membershipParams['skipLineItem'] = TRUE;
         $membershipContribution = self::processSecondaryFinancialTransaction($contactID, $form, $membershipParams, $isTest, $membershipLineItems, CRM_Utils_Array::value('minimum_fee', $membershipDetails, 0), CRM_Utils_Array::value('financial_type_id', $membershipDetails));
       }
       catch (CRM_Core_Exception $e) {