Skip to content

Commit

Permalink
Merge pull request #965 from compucorp/BTHAB-178-membership-type-cust…
Browse files Browse the repository at this point in the history
…om-field

BTHAB-178: Membeship Type product discounts custom field
  • Loading branch information
erawat authored Aug 25, 2023
2 parents 3e73a35 + 9609a9e commit 49733f1
Show file tree
Hide file tree
Showing 4 changed files with 172 additions and 12 deletions.
34 changes: 34 additions & 0 deletions CRM/Civicase/Setup/Manage/MembershipTypeCustomFieldManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

/**
* Manages Membership Type Custom Field Entity.
*/
class CRM_Civicase_Setup_Manage_MembershipTypeCustomFieldManager extends CRM_Civicase_Setup_Manage_AbstractManager {

const OPTION_GROUP_NAME = 'cg_extend_objects';

/**
* Adds Membership Type entity to extend object.
*/
public function create(): void {
CRM_Core_BAO_OptionValue::ensureOptionValueExists([
'option_group_id' => self::OPTION_GROUP_NAME,
"label" => "Membership Type",
"value" => "MembershipType",
"name" => "civicrm_membership_type",
'is_active' => TRUE,
'is_reserved' => TRUE,
]);
}

/**
* {@inheritDoc}
*/
public function remove(): void {}

/**
* {@inheritDoc}
*/
protected function toggle($status): void {}

}
26 changes: 14 additions & 12 deletions CRM/Civicase/Upgrader.php
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
<?php

use CRM_Civicase_Setup_CaseTypeCategorySupport as CaseTypeCategorySupport;
use CRM_Civicase_Setup_CreateCasesOptionValue as CreateCasesOptionValue;
use CRM_Civicase_ExtensionUtil as E;
use CRM_Civicase_Helper_CaseUrl as CaseUrlHelper;
use CRM_Civicase_Service_CaseCategoryInstance as CaseCategoryInstance;
use CRM_Civicase_Setup_AddCaseCategoryWordReplacementOptionGroup as AddCaseCategoryWordReplacementOptionGroup;
use CRM_Civicase_Setup_MoveCaseTypesToCasesCategory as MoveCaseTypesToCasesCategory;
use CRM_Civicase_Setup_CreateSafeFileExtensionOptionValue as CreateSafeFileExtensionOptionValue;
use CRM_Civicase_Uninstall_RemoveCustomGroupSupportForCaseCategory as RemoveCustomGroupSupportForCaseCategory;
use CRM_Civicase_Setup_ProcessCaseCategoryForCustomGroupSupport as ProcessCaseCategoryForCustomGroupSupport;
use CRM_Civicase_Setup_CaseCategoryInstanceSupport as CaseCategoryInstanceSupport;
use CRM_Civicase_Setup_AddChangeCaseRoleDateActivityTypes as AddChangeCaseRoleDateActivityTypes;
use CRM_Civicase_Setup_AddManageWorkflowMenu as AddManageWorkflowMenu;
use CRM_Civicase_Service_CaseCategoryInstance as CaseCategoryInstance;
use CRM_Civicase_Helper_CaseUrl as CaseUrlHelper;
use CRM_Civicase_Setup_AddSingularLabels as AddSingularLabels;
use CRM_Civicase_ExtensionUtil as E;
use CRM_Civicase_Setup_AddMyActivitiesMenu as AddMyActivitiesMenu;
use CRM_Civicase_Setup_Manage_CaseTypeCategoryFeaturesManager as CaseTypeCategoryFeaturesManager;
use CRM_Civicase_Setup_AddSingularLabels as AddSingularLabels;
use CRM_Civicase_Setup_CaseCategoryInstanceSupport as CaseCategoryInstanceSupport;
use CRM_Civicase_Setup_CaseTypeCategorySupport as CaseTypeCategorySupport;
use CRM_Civicase_Setup_CreateCasesOptionValue as CreateCasesOptionValue;
use CRM_Civicase_Setup_CreateSafeFileExtensionOptionValue as CreateSafeFileExtensionOptionValue;
use CRM_Civicase_Setup_Manage_CaseSalesOrderStatusManager as CaseSalesOrderStatusManager;
use CRM_Civicase_Setup_Manage_CaseTypeCategoryFeaturesManager as CaseTypeCategoryFeaturesManager;
use CRM_Civicase_Setup_Manage_MembershipTypeCustomFieldManager as MembershipTypeCustomFieldManager;
use CRM_Civicase_Setup_Manage_QuotationTemplateManager as QuotationTemplateManager;
use CRM_Civicase_Setup_MoveCaseTypesToCasesCategory as MoveCaseTypesToCasesCategory;
use CRM_Civicase_Setup_ProcessCaseCategoryForCustomGroupSupport as ProcessCaseCategoryForCustomGroupSupport;
use CRM_Civicase_Uninstall_RemoveCustomGroupSupportForCaseCategory as RemoveCustomGroupSupportForCaseCategory;

/**
* Collection of upgrade steps.
Expand Down Expand Up @@ -154,6 +155,7 @@ public function install() {
(new CaseTypeCategoryFeaturesManager())->create();
(new CaseSalesOrderStatusManager())->create();
(new QuotationTemplateManager())->create();
(new MembershipTypeCustomFieldManager())->create();
}

/**
Expand Down
30 changes: 30 additions & 0 deletions CRM/Civicase/Upgrader/Steps/Step0020.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

/**
* Add custom fields.
*/
class CRM_Civicase_Upgrader_Steps_Step0020 {

/**
* Runs the upgrader changes.
*
* @return bool
* Return value in boolean.
*/
public function apply() {
try {
(new CRM_Civicase_Setup_Manage_MembershipTypeCustomFieldManager())->create();
}
catch (\Throwable $th) {
\Civi::log()->error('Error upgrading Civicase', [
'context' => [
'backtrace' => $th->getTraceAsString(),
'message' => $th->getMessage(),
],
]);
}

return TRUE;
}

}
94 changes: 94 additions & 0 deletions managed/CustomGroup_Product_Discounts.mgd.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?php

/**
* @file
* Exported Product Discounts CustomGroup.
*/

use Civi\Api4\OptionValue;

$mgd = [
[
'name' => 'CustomGroup_Product_Discounts',
'entity' => 'CustomGroup',
'cleanup' => 'always',
'update' => 'unmodified',
'params' => [
'version' => 4,
'values' => [
'name' => 'Product_Discounts',
'title' => 'Product Discounts',
'extends' => 'MembershipType',
'extends_entity_column_value' => NULL,
'style' => 'Inline',
'collapse_display' => FALSE,
'help_pre' => '',
'help_post' => '',
'weight' => 107,
'is_active' => TRUE,
'is_multiple' => FALSE,
'min_multiple' => NULL,
'max_multiple' => NULL,
'collapse_adv_display' => TRUE,
'created_date' => '2023-08-25 07:22:08',
'is_reserved' => FALSE,
'is_public' => TRUE,
'icon' => '',
'extends_entity_column_id' => NULL,
],
],
],
[
'name' => 'CustomGroup_Product_Discounts_CustomField_Product_Discount_Amount',
'entity' => 'CustomField',
'cleanup' => 'always',
'update' => 'unmodified',
'params' => [
'version' => 4,
'values' => [
'custom_group_id.name' => 'Product_Discounts',
'name' => 'Product_Discount_Amount',
'label' => 'Product Discount Amount',
'data_type' => 'Float',
'html_type' => 'Text',
'default_value' => NULL,
'is_required' => FALSE,
'is_searchable' => FALSE,
'is_search_range' => FALSE,
'help_pre' => NULL,
'help_post' => 'Specify a discount that will automatically be applied when adding a product line item to a quotation if the contact is a member of this type.',
'mask' => NULL,
'attributes' => NULL,
'javascript' => NULL,
'is_active' => TRUE,
'is_view' => FALSE,
'options_per_line' => NULL,
'text_length' => 255,
'start_date_years' => NULL,
'end_date_years' => NULL,
'date_format' => NULL,
'time_format' => NULL,
'note_columns' => 60,
'note_rows' => 4,
'column_name' => 'product_discount_amount',
'serialize' => 0,
'filter' => NULL,
'in_selector' => FALSE,
],
],
],
];

$rowCount = OptionValue::get(FALSE)
->selectRowCount()
->addSelect('*')
->addWhere('option_group_id:name', '=', 'cg_extend_objects')
->addWhere('name', '=', 'civicrm_membership_type')
->execute()
->count();

if ($rowCount == 1) {
return $mgd;
}

return [];

0 comments on commit 49733f1

Please sign in to comment.