From: Eileen McNaughton Date: Tue, 20 May 2014 08:10:06 +0000 (+1200) Subject: CRm-14197 where a participant_payment contribution has a single line item point it... X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=86cbdcb11ea41584ead20e6ced2487ebe140120f;p=civicrm-core.git CRm-14197 where a participant_payment contribution has a single line item point it towards the contribution --- diff --git a/CRM/Event/BAO/ParticipantPayment.php b/CRM/Event/BAO/ParticipantPayment.php index 663d0fb555..555df5dd25 100644 --- a/CRM/Event/BAO/ParticipantPayment.php +++ b/CRM/Event/BAO/ParticipantPayment.php @@ -69,6 +69,16 @@ class CRM_Event_BAO_ParticipantPayment extends CRM_Event_DAO_ParticipantPayment CRM_Utils_Hook::post('create', 'ParticipantPayment', NULL, $participantPayment); } + //generally if people are creating participant_payments via the api they won't be setting the line item correctly - we can't help them if they are doing complex transactions + // but if they have a single line item for the contribution we can assume it should refer to the participant line + $lineItemCount = CRM_Core_DAO::singleValueQuery("select count(*) FROM civicrm_line_item WHERE contribution_id = %1", array(1 => array($participantPayment->contribution_id, 'Integer'))); + if($lineItemCount == 1) { + $sql = "UPDATE civicrm_line_item li + SET entity_table = 'civicrm_participant', entity_id = %1 + WHERE contribution_id = %2 AND entity_table = 'civicrm_contribution'"; + CRM_Core_DAO::executeQuery($sql, array(1 => array($participantPayment->participant_id, 'Integer'), 2 => array($participantPayment->contribution_id, 'Integer'))); + } + return $participantPayment; }