From 68add67374d0017502fbbf7c40cb4aefb65d8b91 Mon Sep 17 00:00:00 2001
From: Paul Mehrer
Date: Fri, 12 Jan 2024 16:08:24 +0100
Subject: [PATCH] tweak(Sales) EvaluationDimension division field json expanded
---
tine20/Sales/Controller/Division.php | 10 ++++++++++
tine20/Sales/Setup/Initialize.php | 12 ++++++++++++
tine20/Sales/Setup/Uninitialize.php | 7 +++++++
tine20/Tinebase/Model/EvaluationDimension.php | 1 +
4 files changed, 30 insertions(+)
diff --git a/tine20/Sales/Controller/Division.php b/tine20/Sales/Controller/Division.php
index 6eb89587818..ac5e80db276 100644
--- a/tine20/Sales/Controller/Division.php
+++ b/tine20/Sales/Controller/Division.php
@@ -203,4 +203,14 @@ protected function _handleEvent(Tinebase_Event_Abstract $_eventObject)
}
}
}
+
+ public static function evalDimModelConfigHook(array &$_fields, Tinebase_ModelConfiguration $mc): void
+ {
+ $expander = $mc->jsonExpander;
+
+ $expander[Tinebase_Record_Expander::EXPANDER_PROPERTIES][Tinebase_Model_EvaluationDimension::FLD_ITEMS]
+ [Tinebase_Record_Expander::EXPANDER_PROPERTIES]['divisions'] = [];
+
+ $mc->setJsonExpander($expander);
+ }
}
diff --git a/tine20/Sales/Setup/Initialize.php b/tine20/Sales/Setup/Initialize.php
index 9c3798f62d5..3bdfd53ace2 100644
--- a/tine20/Sales/Setup/Initialize.php
+++ b/tine20/Sales/Setup/Initialize.php
@@ -137,6 +137,18 @@ public static function createTbSystemCFEvaluationDimension(): void
],
]
], true));
+
+ Tinebase_CustomField::getInstance()->addCustomField(new Tinebase_Model_CustomField_Config([
+ 'name' => 'divisions',
+ 'application_id' => $appId,
+ 'model' => Tinebase_Model_EvaluationDimension::class,
+ 'is_system' => true,
+ 'definition' => [
+ Tinebase_Model_CustomField_Config::DEF_HOOK => [
+ [Sales_Controller_Division::class, 'evalDimModelConfigHook'],
+ ],
+ ],
+ ], true));
}
protected function _initializeCostCenterCostBearer()
diff --git a/tine20/Sales/Setup/Uninitialize.php b/tine20/Sales/Setup/Uninitialize.php
index 06f4bdfb2c2..44f72350237 100644
--- a/tine20/Sales/Setup/Uninitialize.php
+++ b/tine20/Sales/Setup/Uninitialize.php
@@ -39,6 +39,13 @@ protected function _uninitializeCustomFields()
if (null !== $cfc) {
Tinebase_CustomField::getInstance()->deleteCustomField($cfc);
}
+
+ $cfc = Tinebase_CustomField::getInstance()->getCustomFieldByNameAndApplication(
+ Tinebase_Application::getInstance()->getApplicationByName(Tinebase_Config::APP_NAME)->getId(),
+ 'divisions', Tinebase_Model_EvaluationDimension::class, true);
+ if (null !== $cfc) {
+ Tinebase_CustomField::getInstance()->deleteCustomField($cfc);
+ }
}
protected function _uninitializeCostCenterCostBearer()
diff --git a/tine20/Tinebase/Model/EvaluationDimension.php b/tine20/Tinebase/Model/EvaluationDimension.php
index 319697898f6..3e87afdefcd 100644
--- a/tine20/Tinebase/Model/EvaluationDimension.php
+++ b/tine20/Tinebase/Model/EvaluationDimension.php
@@ -42,6 +42,7 @@ class Tinebase_Model_EvaluationDimension extends Tinebase_Record_NewAbstract
self::MODEL_NAME => self::MODEL_NAME_PART,
self::MODLOG_ACTIVE => true,
self::HAS_DELETED_TIME_UNIQUE => true,
+ self::HAS_SYSTEM_CUSTOM_FIELDS => true,
self::EXPOSE_JSON_API => true,
self::RECORD_NAME => 'Evaluation Dimension', // gettext('GENDER_Evaluation Dimension')
self::RECORDS_NAME => 'Evaluation Dimensions', // ngettext('Evaluation Dimension', 'Evaluation Dimensions', n)