Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BTHAB-178: Membeship Type product discounts custom field #965

Merged
merged 2 commits into from
Aug 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 [];
Loading