diff --git a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json index c90fb89a5d..c575b4d0f0 100644 --- a/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json +++ b/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Meeting.json @@ -93,136 +93,147 @@ "where": { "=": { "whereClause": { - "OR": { - "contactsMiddle.status": "{value}", - "leadsMiddle.status": "{value}", - "usersMiddle.status": "{value}" - } - }, - "leftJoins": ["users", "contacts", "leads"], - "distinct": true + "OR": [ + { + "id=s": { + "from": "ContactMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id=s": { + "from": "LeadMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id=s": { + "from": "MeetingUser", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + } + ] + } }, "<>": { - "whereClause": [ - { - "id!=s": { - "from": "ContactMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" + "whereClause": { + "AND": [ + { + "id!=s": { + "from": "ContactMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id!=s": { + "from": "LeadMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id!=s": { + "from": "MeetingUser", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } } } - }, - { - "id!=s": { - "from": "LeadMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" - } - } - }, - { - "id!=s": { - "from": "MeetingUser", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" - } - } - } - ] + ] + } }, "IN": { - "leftJoins": ["users", "leads", "contacts"], "whereClause": { - "OR": { - "contactsMiddle.status": "{value}", - "leadsMiddle.status": "{value}", - "usersMiddle.status": "{value}" - } - }, - "distinct": true + "OR": [ + { + "id=s": { + "from": "ContactMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id=s": { + "from": "LeadMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id=s": { + "from": "MeetingUser", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + } + ] + } }, "NOT IN": { - "whereClause": [ - { - "id!=s": { - "from": "ContactMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" - } - } - }, - { - "id!=s": { - "from": "LeadMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" - } - } - }, - { - "id!=s": { - "from": "MeetingUser", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": "{value}" - } - } - } - ] - }, - "IS NULL": { - "leftJoins": ["users", "contacts", "leads"], "whereClause": { - "contactsMiddle.status": null, - "leadsMiddle.status": null, - "usersMiddle.status": null - }, - "distinct": true - }, - "IS NOT NULL": { - "whereClause": [ - { - "id!=s": { - "from": "ContactMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": null + "AND": [ + { + "id!=s": { + "from": "ContactMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id!=s": { + "from": "LeadMeeting", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } + } + }, + { + "id!=s": { + "from": "MeetingUser", + "select": ["meetingId"], + "whereClause": { + "deleted": false, + "status": "{value}" + } } } - }, - { - "id!=s": { - "from": "LeadMeeting", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": null - } - } - }, - { - "id!=s": { - "from": "MeetingUser", - "select": ["meetingId"], - "whereClause": { - "deleted": false, - "status": null - } - } - } - ] + ] + } } }, "view": "crm:views/meeting/fields/acceptance-status" diff --git a/client/modules/crm/src/views/meeting/fields/acceptance-status.js b/client/modules/crm/src/views/meeting/fields/acceptance-status.js index 207e53ea24..bb5e94e692 100644 --- a/client/modules/crm/src/views/meeting/fields/acceptance-status.js +++ b/client/modules/crm/src/views/meeting/fields/acceptance-status.js @@ -26,10 +26,24 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('crm:views/meeting/fields/acceptance-status', ['views/fields/enum'], function (Dep) { +import EnumFieldView from 'views/fields/enum'; - return Dep.extend({ +export default class extends EnumFieldView { - searchTypeList: ['anyOf', 'noneOf'], - }); -}); + searchTypeList = ['anyOf', 'noneOf'] + + fetchSearch() { + let data = super.fetchSearch(); + + if ( + data && + data.data.type === 'noneOf' && + data.value && + data.value.length > 1 + ) { + data.value = [data.value[0]]; + } + + return data; + } +} diff --git a/client/src/views/fields/enum.js b/client/src/views/fields/enum.js index f22a15abe7..509e4fadec 100644 --- a/client/src/views/fields/enum.js +++ b/client/src/views/fields/enum.js @@ -445,15 +445,16 @@ class EnumFieldView extends BaseFieldView { return { type: 'or', value: [ - { - type: 'isNull', - attribute: this.name, - }, + // Don't change order. { type: 'notIn', value: list, attribute: this.name, }, + { + type: 'isNull', + attribute: this.name, + }, ], data: { type: 'noneOf',