Make custom Tags relation filterable on all four entities
Expose the custom many-to-many CTag "Tags" relation as a linkMultiple field (cTags) so it can be added to the list-view Search Filters, and build the full Tags setup on Lead from scratch in parity with the others. Opportunity / Contact / Account (relation already existed): - add fields.cTags (linkMultiple) to entityDefs - add cTags to the Search-Filters layout (Opportunity appended, preserving cAccount1; Contact/Account get a full filters.json incl. cTags) Lead (built from scratch): - create Lead<->CTag many-to-many relation via EntityManager (relationName cLeadTag, join table c_lead_tag); link normalized to cTags to mirror the other three (API auto-prefix had produced cCTags) - add cTags field, de_DE/en_US labels, clientDefs panel polish (create:false, unlink-only row actions), bottomPanelsDetail entry, and filters.json - CTag side: links.interessenten label de "Interessenten" / en "Leads" Verified via API/DB: cTags linkMultiple present on all four scopes; Lead link/CTag.interessenten resolve; Any of / All of / None of filters execute and return correct results end-to-end; existing data intact. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,11 +5,13 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"verkaufschancen": "Verkaufschancen",
|
"verkaufschancen": "Verkaufschancen",
|
||||||
"kontakte": "Kontakte",
|
"kontakte": "Kontakte",
|
||||||
"firmen": "Firmen"
|
"firmen": "Firmen",
|
||||||
|
"interessenten": "Interessenten"
|
||||||
},
|
},
|
||||||
"links": {
|
"links": {
|
||||||
"verkaufschancen": "Verkaufschancen",
|
"verkaufschancen": "Verkaufschancen",
|
||||||
"kontakte": "Kontakte",
|
"kontakte": "Kontakte",
|
||||||
"firmen": "Firmen"
|
"firmen": "Firmen",
|
||||||
|
"interessenten": "Interessenten"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"fields": {
|
||||||
|
"cTags": "Tags"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"cTags": "Tags"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,11 +5,13 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"verkaufschancen": "Verkaufschancen",
|
"verkaufschancen": "Verkaufschancen",
|
||||||
"kontakte": "Kontakte",
|
"kontakte": "Kontakte",
|
||||||
"firmen": "Firmen"
|
"firmen": "Firmen",
|
||||||
|
"interessenten": "Leads"
|
||||||
},
|
},
|
||||||
"links": {
|
"links": {
|
||||||
"verkaufschancen": "Verkaufschancen",
|
"verkaufschancen": "Verkaufschancen",
|
||||||
"kontakte": "Kontakte",
|
"kontakte": "Kontakte",
|
||||||
"firmen": "Firmen"
|
"firmen": "Firmen",
|
||||||
|
"interessenten": "Leads"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"fields": {
|
||||||
|
"cTags": "Tags"
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"cTags": "Tags"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
"assignedUser",
|
||||||
|
"teams",
|
||||||
|
"createdAt",
|
||||||
|
"createdBy",
|
||||||
|
"modifiedAt",
|
||||||
|
"streamUpdatedAt",
|
||||||
|
"type",
|
||||||
|
"industry",
|
||||||
|
"description",
|
||||||
|
"emailAddress",
|
||||||
|
"phoneNumber",
|
||||||
|
"targetLists",
|
||||||
|
"billingAddressCountry",
|
||||||
|
"billingAddress",
|
||||||
|
"shippingAddress",
|
||||||
|
"website",
|
||||||
|
"campaign",
|
||||||
|
"cTags"
|
||||||
|
]
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
[
|
||||||
|
"assignedUser",
|
||||||
|
"teams",
|
||||||
|
"createdAt",
|
||||||
|
"createdBy",
|
||||||
|
"modifiedAt",
|
||||||
|
"streamUpdatedAt",
|
||||||
|
"accounts",
|
||||||
|
"address",
|
||||||
|
"emailAddress",
|
||||||
|
"phoneNumber",
|
||||||
|
"title",
|
||||||
|
"targetLists",
|
||||||
|
"campaign",
|
||||||
|
"cTags"
|
||||||
|
]
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"targetLists": {
|
||||||
|
"index": 5
|
||||||
|
},
|
||||||
|
"cTags": {
|
||||||
|
"index": 6
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
"assignedUser",
|
||||||
|
"teams",
|
||||||
|
"createdAt",
|
||||||
|
"createdBy",
|
||||||
|
"modifiedAt",
|
||||||
|
"streamUpdatedAt",
|
||||||
|
"address",
|
||||||
|
"accountName",
|
||||||
|
"campaign",
|
||||||
|
"emailAddress",
|
||||||
|
"phoneNumber",
|
||||||
|
"status",
|
||||||
|
"source",
|
||||||
|
"opportunityAmountConverted",
|
||||||
|
"industry",
|
||||||
|
"targetLists",
|
||||||
|
"createdAccount",
|
||||||
|
"cTags"
|
||||||
|
]
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
[
|
||||||
|
"assignedUser",
|
||||||
|
"teams",
|
||||||
|
"createdAt",
|
||||||
|
"createdBy",
|
||||||
|
"modifiedAt",
|
||||||
|
"streamUpdatedAt",
|
||||||
|
"account",
|
||||||
|
"cAccount1",
|
||||||
|
"amountConverted",
|
||||||
|
"amountWeightedConverted",
|
||||||
|
"campaign",
|
||||||
|
"closeDate",
|
||||||
|
"contacts",
|
||||||
|
"leadSource",
|
||||||
|
"probability",
|
||||||
|
"stage",
|
||||||
|
"description",
|
||||||
|
"cTags"
|
||||||
|
]
|
||||||
@@ -15,6 +15,10 @@
|
|||||||
"firmen": {
|
"firmen": {
|
||||||
"layout": null,
|
"layout": null,
|
||||||
"selectPrimaryFilterName": null
|
"selectPrimaryFilterName": null
|
||||||
|
},
|
||||||
|
"interessenten": {
|
||||||
|
"layout": null,
|
||||||
|
"selectPrimaryFilterName": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"relationshipPanels": {
|
||||||
|
"cTags": {
|
||||||
|
"create": false,
|
||||||
|
"rowActionsView": "custom:views/record/row-actions/tags-unlink-only"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,5 +15,12 @@
|
|||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"cTags": {
|
||||||
|
"type": "linkMultiple",
|
||||||
|
"view": "views/fields/link-multiple",
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -78,6 +78,14 @@
|
|||||||
"entity": "Account",
|
"entity": "Account",
|
||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
|
},
|
||||||
|
"interessenten": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cLeadTag",
|
||||||
|
"foreign": "cTags",
|
||||||
|
"entity": "Lead",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"collection": {
|
"collection": {
|
||||||
|
|||||||
@@ -8,5 +8,12 @@
|
|||||||
"audited": false,
|
"audited": false,
|
||||||
"isCustom": true
|
"isCustom": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"cTags": {
|
||||||
|
"type": "linkMultiple",
|
||||||
|
"view": "views/fields/link-multiple",
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"fields": {
|
||||||
|
"cTags": {
|
||||||
|
"type": "linkMultiple",
|
||||||
|
"view": "views/fields/link-multiple",
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"links": {
|
||||||
|
"cTags": {
|
||||||
|
"type": "hasMany",
|
||||||
|
"relationName": "cLeadTag",
|
||||||
|
"foreign": "interessenten",
|
||||||
|
"entity": "CTag",
|
||||||
|
"audited": false,
|
||||||
|
"isCustom": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -145,6 +145,11 @@
|
|||||||
},
|
},
|
||||||
"closeDate": {
|
"closeDate": {
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
"cTags": {
|
||||||
|
"type": "linkMultiple",
|
||||||
|
"view": "views/fields/link-multiple",
|
||||||
|
"isCustom": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"links": {
|
"links": {
|
||||||
|
|||||||
Reference in New Issue
Block a user