Skip to content

Commit

Permalink
CRM-21764: Recurring Events without Price Set fail to save.
Browse files Browse the repository at this point in the history
  • Loading branch information
agilewarealok committed Mar 20, 2018
1 parent 7713e22 commit 84c8d24
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 13 deletions.
38 changes: 27 additions & 11 deletions CRM/Core/BAO/RecurringEntity.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -1214,21 +1214,37 @@ public static function updateModeAndPriceSet($entityId, $entityTable, $mode, $li
$dao->mode = $mode;
$dao->save();

//CRM-20787 Fix
//I am not sure about other fields, if mode = 3 apply for an event then other fields
//should be save for all other series events or not so applying for price set only for now here.
if (CRM_Core_BAO_RecurringEntity::MODE_ALL_ENTITY_IN_SERIES === $mode) {

//Step-1: Get all events of series
$seriesEventRecords = CRM_Core_BAO_RecurringEntity::getEntitiesFor($entityId, $entityTable);
foreach ($seriesEventRecords as $event) {
//Step-3: Save price set in other series events
if (CRM_Price_BAO_PriceSet::removeFrom($event['table'], $event['id'])) {//Remove existing priceset
CRM_Core_BAO_Discount::del($event['id'], $event['table']);
if ($priceSet) {
//CRM-20787 Fix
//I am not sure about other fields, if mode = 3 apply for an event then other fields
//should be save for all other series events or not so applying for price set only for now here.
if (CRM_Core_BAO_RecurringEntity::MODE_ALL_ENTITY_IN_SERIES === $mode) {
//Step-1: Get all events of series
$seriesEventRecords = CRM_Core_BAO_RecurringEntity::getEntitiesFor($entityId, $entityTable);
foreach ($seriesEventRecords as $event) {
//Step-2: Save price set in other series events
if (CRM_Price_BAO_PriceSet::removeFrom($event['table'], $event['id'])) {//Remove existing priceset
CRM_Core_BAO_Discount::del($event['id'], $event['table']);
}
CRM_Price_BAO_PriceSet::addTo($event['table'], $event['id'], $priceSet); //Add new price set
}
}

if (CRM_Core_BAO_RecurringEntity::MODE_NEXT_ALL_ENTITY === $mode) {
//Step-1: Get all events of series
$seriesEventRecords = CRM_Core_BAO_RecurringEntity::getEntitiesFor($entityId, $entityTable);
foreach ($seriesEventRecords as $event) {
//Step-2: Save price set in other series events
if ($entityId < $event["id"]) {
if (CRM_Price_BAO_PriceSet::removeFrom($event['table'], $event['id'])) {//Remove existing priceset
CRM_Core_BAO_Discount::del($event['id'], $event['table']);
}
CRM_Price_BAO_PriceSet::addTo($event['table'], $event['id'], $priceSet); //Add new price set
}
}
}
}

//CRM-20787 - Fix end
$finalResult['status'] = 'Done';
}
Expand Down
13 changes: 11 additions & 2 deletions CRM/Core/Page/AJAX/RecurringEntity.php
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,21 @@ class CRM_Core_Page_AJAX_RecurringEntity {

public static function updateMode() {
$finalResult = array();
if (CRM_Utils_Array::value('mode', $_REQUEST) && CRM_Utils_Array::value('entityId', $_REQUEST) && CRM_Utils_Array::value('entityTable', $_REQUEST) && CRM_Utils_Array::value('priceSet', $_REQUEST)) {

if (CRM_Utils_Array::value('mode', $_REQUEST) && CRM_Utils_Array::value('entityId', $_REQUEST) && CRM_Utils_Array::value('entityTable', $_REQUEST)) {
$mode = CRM_Utils_Type::escape($_REQUEST['mode'], 'Integer');
$entityId = CRM_Utils_Type::escape($_REQUEST['entityId'], 'Integer');
$entityTable = CRM_Utils_Type::escape($_REQUEST['entityTable'], 'String');
$priceSet = CRM_Utils_Type::escape($_REQUEST['priceSet'], 'String');

// CRM-21764 fix
// Retrieving existing priceset if price set id is not passed
if ($priceSet == "") {
$priceSetEntity = new CRM_Price_DAO_PriceSetEntity();
$priceSetEntity->entity_id = $entityId;
$priceSetEntity->entity_table = $entityTable;
$priceSetEntity->find(TRUE);
$priceSet = $priceSetEntity->price_set_id;
}
$linkedEntityTable = $_REQUEST['linkedEntityTable'];
$finalResult = CRM_Core_BAO_RecurringEntity::updateModeAndPriceSet($entityId, $entityTable, $mode, $linkedEntityTable, $priceSet);
}
Expand Down

0 comments on commit 84c8d24

Please sign in to comment.