From 8aa7457ad847668e71d98547a4ed3087e8d3cf96 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 13 May 2014 23:33:34 +1200 Subject: [PATCH] CRM-14197 set entity_id & entity_table to reflect membership on membership transactions --- CRM/Contribute/BAO/Contribution.php | 6 ++++++ CRM/Member/BAO/Membership.php | 1 + CRM/Member/Form/Membership.php | 15 ++++++++------- CRM/Price/BAO/LineItem.php | 4 ++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index e92faa48a4..285945e374 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -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'; diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index 0bc32d70cf..c3beb0ea55 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -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); diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index acd57ebd27..6ed0cff84d 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -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); } diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index 46fc0fb5f6..3556f3f57e 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -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; } -- 2.25.1