Files
espocrm/application/Espo/Modules/Crm/Resources/metadata/entityDefs/Opportunity.json
2026-01-19 17:46:06 +01:00

400 lines
13 KiB
JSON

{
"fields": {
"name": {
"type": "varchar",
"required": true,
"pattern": "$noBadCharacters"
},
"amount": {
"type": "currency",
"required": true,
"min": 0,
"decimal": false,
"audited": true
},
"amountConverted": {
"type": "currencyConverted",
"readOnly": true
},
"amountWeightedConverted": {
"type": "float",
"readOnly": true,
"notStorable": true,
"select": {
"select": "DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)",
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"where": {
"=": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)=": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"<": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)<": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
">": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)>": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"<=": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)<=": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
">=": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)>=": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"<>": {
"whereClause": {
"DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)!=": "{value}"
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"IS NULL": {
"whereClause": {
"IS_NULL:(amount)": true
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"IS NOT NULL": {
"whereClause": {
"IS_NOT_NULL:(amount)": true
},
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
}
},
"order": {
"order": [
["DIV:(MUL:(amount, probability, amountCurrencyRate.rate), 100)", "{direction}"]
],
"leftJoins": [
[
"Currency",
"amountCurrencyRate",
{"amountCurrencyRate.id:": "amountCurrency"}
]
]
},
"view": "views/fields/currency-converted"
},
"account": {
"type": "link"
},
"contacts": {
"type": "linkMultiple",
"view": "crm:views/opportunity/fields/contacts",
"columns": {
"role": "opportunityRole"
},
"additionalAttributeList": ["columns"],
"primaryLink": "contact",
"orderBy": "name",
"detailLayoutIncompatibleFieldList": ["contact"]
},
"contact": {
"type": "link"
},
"stage": {
"type": "enum",
"options": ["Prospecting", "Qualification", "Proposal", "Negotiation", "Closed Won", "Closed Lost"],
"view": "crm:views/opportunity/fields/stage",
"default": "Prospecting",
"audited": true,
"probabilityMap": {
"Prospecting": 10,
"Qualification": 20,
"Proposal": 50,
"Negotiation": 80,
"Closed Won": 100,
"Closed Lost": 0
},
"style": {
"Proposal": "primary",
"Negotiation": "warning",
"Closed Won": "success",
"Closed Lost": "info"
},
"displayAsLabel": true,
"labelType": "state",
"fieldManagerAdditionalParamList": [
{
"name": "probabilityMap",
"view": "crm:views/opportunity/admin/field-manager/fields/probability-map"
}
],
"customizationOptionsReferenceDisabled": true
},
"lastStage": {
"type": "enum",
"view": "crm:views/opportunity/fields/last-stage",
"customizationOptionsDisabled": true,
"customizationDefaultDisabled": true,
"customizationOptionsReferenceDisabled": true
},
"probability": {
"type": "int",
"min": 0,
"max": 100
},
"leadSource": {
"type": "enum",
"view": "crm:views/opportunity/fields/lead-source",
"customizationOptionsDisabled": true,
"optionsReference": "Lead.source"
},
"closeDate": {
"type": "date",
"required": true,
"audited": true
},
"description": {
"type": "text"
},
"campaign": {
"type": "link"
},
"originalLead": {
"type": "linkOne",
"readOnly": true,
"view": "views/fields/link-one"
},
"contactRole": {
"type": "enum",
"notStorable": true,
"orderDisabled": true,
"directUpdateDisabled": true,
"layoutMassUpdateDisabled": true,
"layoutDetailDisabled": true,
"layoutAvailabilityList": ["listForContact"],
"customizationDefaultDisabled": true,
"customizationRequiredDisabled": true,
"customizationIsSortedDisabled": true,
"customizationAuditedDisabled": true,
"customizationReadOnlyDisabled": true,
"customizationOptionsDisabled": true,
"converterClassName": "Espo\\Classes\\FieldConverters\\RelationshipRole",
"converterData": {
"column": "role",
"link": "contacts",
"relationName": "contactOpportunity",
"nearKey": "opportunityId"
},
"view": "crm:views/opportunity/fields/contact-role",
"optionsReference": "Contact.opportunityRole"
},
"createdAt": {
"type": "datetime",
"readOnly": true,
"fieldManagerParamList": [
"useNumericFormat"
]
},
"modifiedAt": {
"type": "datetime",
"readOnly": true,
"fieldManagerParamList": [
"useNumericFormat"
]
},
"createdBy": {
"type": "link",
"readOnly": true,
"view": "views/fields/user",
"fieldManagerParamList": []
},
"modifiedBy": {
"type": "link",
"readOnly": true,
"view": "views/fields/user",
"fieldManagerParamList": []
},
"assignedUser": {
"type": "link",
"required": false,
"view": "views/fields/assigned-user"
},
"teams": {
"type": "linkMultiple",
"view": "views/fields/teams"
}
},
"links": {
"createdBy": {
"type": "belongsTo",
"entity": "User"
},
"modifiedBy": {
"type": "belongsTo",
"entity": "User"
},
"assignedUser": {
"type": "belongsTo",
"entity": "User"
},
"teams": {
"type": "hasMany",
"entity": "Team",
"relationName": "entityTeam",
"layoutRelationshipsDisabled": true
},
"account": {
"type": "belongsTo",
"entity": "Account",
"foreign": "opportunities"
},
"contacts": {
"type": "hasMany",
"entity": "Contact",
"foreign": "opportunities",
"additionalColumns": {
"role": {
"type": "varchar",
"len": 50
}
},
"columnAttributeMap": {
"role": "contactRole"
}
},
"contact": {
"type": "belongsTo",
"entity": "Contact",
"foreign": "opportunitiesPrimary"
},
"meetings": {
"type": "hasChildren",
"entity": "Meeting",
"foreign": "parent",
"audited": true
},
"calls": {
"type": "hasChildren",
"entity": "Call",
"foreign": "parent",
"audited": true
},
"tasks": {
"type": "hasChildren",
"entity": "Task",
"foreign": "parent",
"audited": true
},
"emails": {
"type": "hasChildren",
"entity": "Email",
"foreign": "parent",
"layoutRelationshipsDisabled": true
},
"documents": {
"type": "hasMany",
"entity": "Document",
"foreign": "opportunities",
"audited": true
},
"campaign": {
"type": "belongsTo",
"entity": "Campaign",
"foreign": "opportunities"
},
"originalLead": {
"type": "hasOne",
"entity": "Lead",
"foreign": "createdOpportunity"
}
},
"collection": {
"orderBy": "createdAt",
"order": "desc"
},
"indexes": {
"stage": {
"columns": ["stage", "deleted"]
},
"lastStage": {
"columns": ["lastStage"]
},
"assignedUser": {
"columns": ["assignedUserId", "deleted"]
},
"createdAt": {
"columns": ["createdAt", "deleted"]
},
"createdAtStage": {
"columns": ["createdAt", "stage"]
},
"createdAtId": {
"unique": true,
"columns": ["createdAt", "id"]
},
"assignedUserStage": {
"columns": ["assignedUserId", "stage"]
}
},
"optimisticConcurrencyControl": true
}