X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FEvent%2FBAO%2FParticipantPayment.php;h=555df5dd25a36a523cef8d4e452da1f88bd0add0;hb=95ca1e4e775ce88e3f371abe8390a3526ba537e7;hp=663d0fb55558601e73125fb10b711771f089421d;hpb=9637d4befcb65b4d4c00adbd37fcb8f5506d57ac;p=civicrm-core.git 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; }