From 28e4e7075d24fa46332ddb808c15997122212db3 Mon Sep 17 00:00:00 2001 From: Pratik Joshi Date: Mon, 21 Apr 2014 14:22:16 +0530 Subject: [PATCH] CRM-13973 -comment : additional participant fixes : additional payment form fixes, change selection link appearance, status updation upon completion of payment --- CRM/Contribute/BAO/Contribution.php | 18 +++++++++----- CRM/Core/BAO/FinancialTrxn.php | 12 ++++++++- CRM/Event/BAO/Participant.php | 26 +++++++++++++++++--- CRM/Event/Form/ParticipantView.php | 9 +++++++ templates/CRM/Event/Form/ParticipantView.tpl | 2 +- 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 84a18d6a68..30c2ba466c 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3036,10 +3036,13 @@ WHERE eft.entity_table = 'civicrm_contribution' if ($participantId) { // update participant status - $participantUpdate['id'] = $participantId; $participantStatuses = CRM_Event_PseudoConstant::participantStatus(); - $participantUpdate['status_id'] = array_search('Registered', $participantStatuses); - CRM_Event_BAO_Participant::add($participantUpdate); + $ids = CRM_Event_BAO_Participant::getParticipantIds($contributionId); + foreach ($ids as $val) { + $participantUpdate['id'] = $val; + $participantUpdate['status_id'] = array_search('Registered', $participantStatuses); + CRM_Event_BAO_Participant::add($participantUpdate); + } } // update financial item statuses @@ -3096,10 +3099,13 @@ WHERE eft.financial_trxn_id IN ({$trxnId}, {$baseTrxnId['financialTrxnId']}) } if ($participantId) { // update participant status - $participantUpdate['id'] = $participantId; $participantStatuses = CRM_Event_PseudoConstant::participantStatus(); - $participantUpdate['status_id'] = array_search('Registered', $participantStatuses); - CRM_Event_BAO_Participant::add($participantUpdate); + $ids = CRM_Event_BAO_Participant::getParticipantIds($contributionId); + foreach ($ids as $val) { + $participantUpdate['id'] = $val; + $participantUpdate['status_id'] = array_search('Registered', $participantStatuses); + CRM_Event_BAO_Participant::add($participantUpdate); + } } } diff --git a/CRM/Core/BAO/FinancialTrxn.php b/CRM/Core/BAO/FinancialTrxn.php index f45d0a7bad..545a90e2c7 100644 --- a/CRM/Core/BAO/FinancialTrxn.php +++ b/CRM/Core/BAO/FinancialTrxn.php @@ -418,7 +418,17 @@ WHERE ceft.entity_id = %1"; $toFinancialAccount = CRM_Contribute_PseudoConstant::financialAccountType($financialTypeId, $relationTypeId); if (empty($lineItemTotal)) { - $lineItemTotal = CRM_Price_BAO_LineItem::getLineTotal($entityId, 'civicrm_participant'); + $ids = CRM_Event_BAO_Participant::getParticipantIds($contributionId); + if (count($ids) > 1) { + $total = 0; + foreach ($ids as $val) { + $total += CRM_Price_BAO_LineItem::getLineTotal($val, 'civicrm_participant'); + } + $lineItemTotal = $total; + } + else { + $lineItemTotal = CRM_Price_BAO_LineItem::getLineTotal($entityId, 'civicrm_participant'); + } } $sqlFtTotalAmt = " SELECT SUM(ft.total_amount) diff --git a/CRM/Event/BAO/Participant.php b/CRM/Event/BAO/Participant.php index af05c2870b..09b3c75e18 100644 --- a/CRM/Event/BAO/Participant.php +++ b/CRM/Event/BAO/Participant.php @@ -1864,16 +1864,34 @@ WHERE (li.entity_table = 'civicrm_participant' AND li.entity_id = {$participantI } // insert new 'adjusted amount' transaction entry and update contribution entry. // ensure entity_financial_trxn table has a linking of it. - $updatedAmount = $params['amount']; + // insert new line items + foreach ($insertLines as $valueId => $lineParams) { + $lineParams['entity_table'] = 'civicrm_participant'; + $lineParams['entity_id'] = $participantId; + $lineObj = CRM_Price_BAO_LineItem::create($lineParams); + } + + // the recordAdjustedAmt code would execute over here + $ids = CRM_Event_BAO_Participant::getParticipantIds($contributionId); + if (count($ids) > 1) { + $total = 0; + foreach ($ids as $val) { + $total += CRM_Price_BAO_LineItem::getLineTotal($val, 'civicrm_participant'); + } + $updatedAmount = $total; + } + else { + $updatedAmount = $params['amount']; + } self::recordAdjustedAmt($updatedAmount, $paidAmount, $contributionId); + $fetchCon = array('id' => $contributionId); $updatedContribution = CRM_Contribute_BAO_Contribution::retrieve($fetchCon, CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray); - - // insert new line items + // insert financial items foreach ($insertLines as $valueId => $lineParams) { $lineParams['entity_table'] = 'civicrm_participant'; $lineParams['entity_id'] = $participantId; - $lineObj = CRM_Price_BAO_LineItem::create($lineParams); + $lineObj = CRM_Price_BAO_LineItem::retrieve($lineParams); // insert financial items // ensure entity_financial_trxn table has a linking of it. $prevItem = CRM_Financial_BAO_FinancialItem::add($lineObj, $updatedContribution); diff --git a/CRM/Event/Form/ParticipantView.php b/CRM/Event/Form/ParticipantView.php index 71598fba95..0f4faa706a 100644 --- a/CRM/Event/Form/ParticipantView.php +++ b/CRM/Event/Form/ParticipantView.php @@ -76,6 +76,15 @@ class CRM_Event_Form_ParticipantView extends CRM_Core_Form { ); $this->assign('hasPayment', $paymentId); + if ($parentParticipantId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', + $participantID, 'registered_by_id' + )) { + $parentHasPayment = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', + $parentParticipantId, 'id', 'participant_id' + ); + $this->assign('parentHasPayment', $parentHasPayment); + } + $statusId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantID, 'status_id', 'id'); $participantStatuses = CRM_Event_PseudoConstant::participantStatus(); diff --git a/templates/CRM/Event/Form/ParticipantView.tpl b/templates/CRM/Event/Form/ParticipantView.tpl index f38ab2ae53..bc51b308bd 100644 --- a/templates/CRM/Event/Form/ParticipantView.tpl +++ b/templates/CRM/Event/Form/ParticipantView.tpl @@ -110,7 +110,7 @@ {if $lineItem} {ts}Selections{/ts} {include file="CRM/Price/Page/LineItem.tpl" context="Event"} - {if $hasPayment} + {if $hasPayment or $parentHasPayment}
{ts}Change Selections{/ts}
{/if} -- 2.25.1