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)