diff --git a/application/Espo/Core/Templates/Metadata/Event/scopes.json b/application/Espo/Core/Templates/Metadata/Event/scopes.json index 3929448b84..1eed84dd43 100644 --- a/application/Espo/Core/Templates/Metadata/Event/scopes.json +++ b/application/Espo/Core/Templates/Metadata/Event/scopes.json @@ -12,5 +12,6 @@ "notifications": true, "activityStatusList": ["Planned"], "historyStatusList": ["Held", "Not Held"], - "statusField": "status" -} \ No newline at end of file + "statusField": "status", + "statusFieldLocked": true +} diff --git a/application/Espo/Modules/Crm/Resources/metadata/scopes/Call.json b/application/Espo/Modules/Crm/Resources/metadata/scopes/Call.json index 9cbad17c03..84282589c4 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/scopes/Call.json +++ b/application/Espo/Modules/Crm/Resources/metadata/scopes/Call.json @@ -13,5 +13,6 @@ "object": true, "activityStatusList": ["Planned"], "historyStatusList": ["Held", "Not Held"], - "statusField": "status" + "statusField": "status", + "statusFieldLocked": true } diff --git a/application/Espo/Modules/Crm/Resources/metadata/scopes/Meeting.json b/application/Espo/Modules/Crm/Resources/metadata/scopes/Meeting.json index 5d24c20f70..c6e3dce78c 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/scopes/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/metadata/scopes/Meeting.json @@ -14,5 +14,6 @@ "object": true, "activityStatusList": ["Planned"], "historyStatusList": ["Held", "Not Held"], - "statusField": "status" + "statusField": "status", + "statusFieldLocked": true } diff --git a/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json b/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json index 4ee7d50a64..08b7820f88 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json +++ b/application/Espo/Modules/Crm/Resources/metadata/scopes/Task.json @@ -15,5 +15,6 @@ "object": true, "statusField": "status", "stream": true, - "kanbanStatusIgnoreList": ["Canceled", "Deferred"] + "kanbanStatusIgnoreList": ["Canceled", "Deferred"], + "statusFieldLocked": true } diff --git a/application/Espo/Tools/EntityManager/EntityManager.php b/application/Espo/Tools/EntityManager/EntityManager.php index 6b40e03355..2fbf77c187 100644 --- a/application/Espo/Tools/EntityManager/EntityManager.php +++ b/application/Espo/Tools/EntityManager/EntityManager.php @@ -390,6 +390,10 @@ class EntityManager $isCustom = $this->metadata->get(['scopes', $name, 'isCustom']); + if ($this->metadata->get(['scopes', $name, 'statusFieldLocked'])) { + unset($data['statusField']); + } + $initialData = [ 'optimisticConcurrencyControl' => $this->metadata->get(['entityDefs', $name, 'optimisticConcurrencyControl']) ?? false, diff --git a/client/src/views/admin/entity-manager/edit.js b/client/src/views/admin/entity-manager/edit.js index 3e3c197520..8445561246 100644 --- a/client/src/views/admin/entity-manager/edit.js +++ b/client/src/views/admin/entity-manager/edit.js @@ -426,6 +426,10 @@ function (Dep, Model) { }, }; + if (this.getMetadata().get(['scopes', this.scope, 'statusFieldLocked'])) { + defs.fields.statusField.readOnly = true; + } + for (let param in this.additionalParams) { defs.fields[param] = this.additionalParams[param].fieldDefs; }