I followed this guide: Adding Required Field Logic :: SuiteCRM Documentation
My vardef file is located in and I did do a quick repair.:
public/legacy/custom/Extension/modules/Opportunities/Ext/Vardefs/procurement_id_c.php
Contents of file:
<?php
$dictionary['Opportunity']['fields']['procurement_id_c']['logic'] = [
'procurement_id_c_required' => [
'key' => 'required',
'modes' => ['edit', 'create'],
'params' => [
'fieldDependencies' => [
'sales_stage',
],
'activeOnFields' => [
'sales_stage' => [
'proposal_submitted',
'contract_being_prepared',
'contract_sent',
'contract_signed',
'delivering',
'maintenance',
'Closed Won',
'Closed Lost',
],
],
],
],
];
Field is added via studio:
Visually in interface field is not required when changing sales stage:
Values of sale stage field:
My sales stage has custom values except “Closed Won” and “Closed Lost”. Regardless of which sale_stage I select the procurement_id_c doesn’t get set as required. Any tips?
Additional info:
Suite CRM version 8.8.0
Site is in debug mode
No errors in console
No related errors in suitecrm.log
There are other fields that use similar conditions (in case it’s useful info)
Other fields
does not work public/legacy/custom/Extension/modules/Opportunities/Ext/Vardefs/amount.php
<?php
$dictionary['Opportunity']['fields']['amount']['logic'] = [
'field_required' => [
'key' => 'required',
'modes' => ['edit', 'create'],
'params' => [
'fieldDependencies' => [
'sales_stage',
],
'activeOnFields' => [
'sales_stage' => [
'proposal_submitted',
'contract_being_prepared',
'contract_sent',
'contract_signed',
'delivering',
'maintenance',
'Closed Won',
'Closed Lost',
],
],
],
],
];
does work
public/legacy/custom/Extension/modules/Opportunities/Ext/Vardefs/lost_reason_c.php
<?php
$dictionary['Opportunity']['fields']['lost_reason_c']['logic'] = [
'hide_on_name' => [
'key' => 'displayType',
'modes' => [
'detail',
'edit',
'create',
],
'params' => [
'fieldDependencies' => [
'sales_stage',
],
'targetDisplayType' => 'none',
'activeOnFields' => [
'sales_stage' => [
[
'operator' => 'not-equal',
'value' => 'Closed Lost',
],
],
],
],
],
'field_required' => [
'key' => 'required',
'modes' => ['edit', 'create'],
'params' => [
'fieldDependencies' => [
'sales_stage'
],
'activeOnFields' => [
'sales_stage' => [
[
'operator' => 'is-equal',
'value' => 'Closed Lost',
],
],
],
],
],
];
works partially (I wanted it to be visible and required only if lost_reason_c is visible and value selected is “other”)
public/legacy/custom/Extension/modules/Opportunities/Ext/Vardefs/lost_reason_other_c.php
<?php
$dictionary['Opportunity']['fields']['lost_reason_other_c']['logic'] = [
'hide_on_name' => [
'key' => 'displayType',
'modes' => [
'detail',
'edit',
'create',
],
'params' => [
'fieldDependencies' => [
'lost_reason_c',
'sales_stage',
],
'targetDisplayType' => 'none',
'activeOnFields' => [
'lost_reason_c' => [
[
'operator' => 'not-equal',
'value' => 'other',
],
],
'sales_stage' => [
[
'operator' => 'not-equal',
'value' => 'Closed Lost',
],
],
],
],
],
'field_required' => [
'key' => 'required',
'modes' => ['edit', 'create'],
'params' => [
'fieldDependencies' => [
'lost_reason_c',
'sales_stage',
],
'activeOnFields' => [
'lost_reason_c' => [
[
'operator' => 'is-equal',
'value' => 'other',
],
],
'sales_stage' => [
[
'operator' => 'is-equal',
'value' => 'Closed Lost',
],
],
],
],
],
];


