From 599c61ac2958a53575d23a12fd9c72ae0e67ad45 Mon Sep 17 00:00:00 2001 From: Eileen Date: Thu, 10 Oct 2013 09:29:44 +1300 Subject: [PATCH] CRM-13234 add adjust profile api to link related items --- api/v3/Contribution.php | 5 +++++ api/v3/Profile.php | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/api/v3/Contribution.php b/api/v3/Contribution.php index 00abfe5b7a..370f8135a7 100644 --- a/api/v3/Contribution.php +++ b/api/v3/Contribution.php @@ -122,6 +122,11 @@ function _civicrm_api3_contribution_create_spec(&$params) { 'api.default' => 0, 'description' => 'Do not add line items by default (if you wish to add your own)', ); + $params['batch_id'] = array( + 'title' => 'Batch', + 'type' => 1, + 'description' => 'Batch which relevant transactions should be added to', + ); } /** diff --git a/api/v3/Profile.php b/api/v3/Profile.php index da72de6c13..c344138390 100644 --- a/api/v3/Profile.php +++ b/api/v3/Profile.php @@ -155,7 +155,6 @@ function _civicrm_api3_profile_get_spec(&$params) { */ function civicrm_api3_profile_submit($params) { $profileID = _civicrm_api3_profile_getProfileID($params['profile_id']); - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $profileID, 'is_active')) { //@todo declare pseudoconstant & let api do this throw new API_Exception('Invalid value for profile_id'); @@ -198,6 +197,10 @@ function civicrm_api3_profile_submit($params) { $entity = strtolower(CRM_Utils_Array::value('entity', $field)); if($entity && !in_array($entity, array_merge($contactEntities, $locationEntities))) { $contactParams['api.' . $entity . '.create'][$fieldName] = $value; + //@todo we are not currently declaring this option + if(isset($params['batch_id']) && strtolower($entity) == 'contribution') { + $contactParams['api.' . $entity . '.create']['batch_id'] = $params['batch_id']; + } if(isset($params[$entity . '_id'])) { //todo possibly declare $entity_id in getfields ? $contactParams['api.' . $entity . '.create']['id'] = $params[$entity . '_id']; @@ -207,6 +210,19 @@ function civicrm_api3_profile_submit($params) { $contactParams[_civicrm_api3_profile_translate_fieldnames_for_bao($fieldName)] = $value; } } + if(isset($contactParams['api.contribution.create']) && isset($contactParams['api.membership.create'])) { + $contactParams['api.membership_payment.create'] = array( + 'contribution_id' => '$value.api.contribution.create.id', + 'membership_id' => '$value.api.membership.create.id' + ); + } + + if(isset($contactParams['api.contribution.create']) && isset($contactParams['api.participant.create'])) { + $contactParams['api.participant_payment.create'] = array( + 'contribution_id' => '$value.api.contribution.create.id', + 'participant_id' => '$value.api.participant.create.id' + ); + } $contactParams['contact_id'] = CRM_Utils_Array::value('contact_id', $params); $contactParams['profile_id'] = $profileID; @@ -233,7 +249,7 @@ function civicrm_api3_profile_submit($params) { $tags = $profileParams['tag']; unset($profileParams['tag']); } - + return civicrm_api3('contact', 'create', $profileParams); $ufGroupDetails = array(); -- 2.25.1