CRM-14197 set entity_id & entity_table to reflect membership on membership transactions
authorEileen McNaughton <eileen@fuzion.co.nz>
Tue, 13 May 2014 11:33:34 +0000 (23:33 +1200)
committerEileen McNaughton <eileen@fuzion.co.nz>
Mon, 19 May 2014 09:46:39 +0000 (21:46 +1200)
CRM/Contribute/BAO/Contribution.php
CRM/Member/BAO/Membership.php
CRM/Member/Form/Membership.php
CRM/Price/BAO/LineItem.php

index e92faa48a49bb6e3c21198610002c377bdd066ef..285945e374d3c2110f078c09dd6319e8d19582dd 100644 (file)
@@ -2561,6 +2561,12 @@ WHERE  contribution_id = %1 ";
       $entityTable = 'civicrm_participant';
       $additionalParticipantId = CRM_Event_BAO_Participant::getAdditionalParticipantIds($entityId);
     }
+    elseif (!empty($params['membership_id'])) {
+      //so far $params['membership_id'] should only be set coming in from membershipBAO::create so the situation where multiple memberships
+      // are created off one contribution should be handled elsewhere
+      $entityId = $params['membership_id'];
+      $entityTable = 'civicrm_membership';
+    }
     else {
       $entityId = $params['contribution']->id;
       $entityTable = 'civicrm_contribution';
index 0bc32d70cfef7f95338047c6b79cc66c918fa3e2..c3beb0ea55a63a3aa14bc02ac5a0718bb9be3663 100644 (file)
@@ -2741,6 +2741,7 @@ WHERE      civicrm_membership.is_test = 0";
       'contact_id', 'total_amount', 'receive_date', 'financial_type_id',
       'payment_instrument_id', 'trxn_id', 'invoice_id', 'is_test',
       'contribution_status_id', 'check_number', 'campaign_id', 'is_pay_later',
+      'membership_id',
     );
     foreach ($recordContribution as $f) {
       $contributionParams[$f] = CRM_Utils_Array::value($f, $params);
index acd57ebd27e9d2be6c4fae5e09b9412f1e55eedc..6ed0cff84dd2d49b5f6f6857d1fe08662dee67d6 100644 (file)
@@ -1574,16 +1574,17 @@ WHERE   id IN ( ' . implode(' , ', array_keys($membershipType)) . ' )';
           $lineItems[$itemId]['line_total'] = $params['total_amount'];
           $lineItems[$itemId]['id'] = $itemId;
           $lineItem[$priceSetId] = $lineItems;
-          CRM_Price_BAO_LineItem::processPriceSet($params['contribution_id'], $lineItem);
+          $contributionBAO = new CRM_Contribute_BAO_Contribution();
+          $contributionBAO->id = $params['contribution_id'];
+          $contributionBAO->find();
+          CRM_Price_BAO_LineItem::processPriceSet($params['contribution_id'], $lineItem, $contributionBAO, 'civicrm_membership');
 
           //create new soft-credit record, CRM-13981
           $softParams['contribution_id'] = $params['contribution_id'];
-          $dao = new CRM_Contribute_DAO_Contribution();
-          $dao->id = $params['contribution_id'];
-          $dao->find();
-          while ($dao->fetch()) {
-            $softParams['currency'] = $dao->currency;
-            $softParams['amount'] = $dao->total_amount;
+
+          while ($contributionBAO->fetch()) {
+            $softParams['currency'] = $contributionBAO->currency;
+            $softParams['amount'] = $contributionBAO->total_amount;
           }
           CRM_Contribute_BAO_ContributionSoft::add($softParams);
         }
index 46fc0fb5f6f0462fbbadd5d926dc040fd8e92d05..3556f3f57e339196a6ec49910d0b4a72970cabcf 100644 (file)
@@ -311,6 +311,10 @@ AND li.entity_id = {$entityId}
       foreach ($values as $line) {
         $line['entity_table'] = $entityTable;
         $line['entity_id'] = $entityId;
+        if(!empty($line['membership_type_id'])) {
+          $entityTable == 'civicrm_membership';
+          $line['contribution_id'] = $contributionDetails->id;
+        }
         if ($entityTable == 'civicrm_contribution') {
           $line['contribution_id'] = $entityId;
         }