Hidden Tab Rules in Campaign Builder refer to a set of predefined instructions that control how various elements behave within a campaign management system. These instructions are vital for maintaining data accuracy and consistency, especially when dealing with packages and individual items.
Imagine these rules as a behind-the-scenes script that guides the system. They determine things like which fields can't be changed, which actions are hidden, or how child records behave based on specific criteria. This ensures a smooth and controlled operation.
You can find these rules in the campaignBuilderConfigs.js file under the TAB_RULES section.
Rule 1: "ADvendio Rules - Linear packages (Child)"
If the rule matches with a Linear item (Parent), then it’ll set some fields of its child records as read-only.
Definition
ADvendio Rules - Linear packages (Child)
:
with logicalConnector AND
(all conditions should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Linear
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in its child records:
make read-only the following fields:
from_until
advendio__from_date__c
advendio__until_date__c
advendio__quantity__c
advendio__sales_price__c
advendio__guaranteed_ai__c
advendio__frequency__c
advendio__clickrate__c
advendio__ac__c
advendio__rate_discount_2_custom__c
advendio__rate_discount_3_custom__c
advendio__rate_discount_4__c
advendio__surchargesalesprice__c
advendio__surchargeb3__c
advendio__surchargeb3abs__c
advendio__surchargeb2__c
advendio__surchargeb2abs__c
advendio__agency_commission__c
advendio__thirdpartycommissioncustom__c
advendio__quantity_discount_custom__c
advendio__targetnet__c
advendio__budgetn2__c
Technical definition
{ name: "ADvendio Rules - Linear packages (Child)", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Linear" } ], applyRuleInChildItem: true, readonlyFields: [ "from_until", "advendio__from_date__c", "advendio__until_date__c", "advendio__quantity__c", "advendio__sales_price__c", "advendio__guaranteed_ai__c", "advendio__frequency__c", "advendio__clickrate__c", "advendio__ac__c", "advendio__rate_discount_2_custom__c", "advendio__rate_discount_3_custom__c", "advendio__rate_discount_4__c", "advendio__surchargesalesprice__c", "advendio__surchargeb3__c", "advendio__surchargeb3abs__c", "advendio__surchargeb2__c", "advendio__surchargeb2abs__c", "advendio__agency_commission__c", "advendio__thirdpartycommissioncustom__c", "advendio__quantity_discount_custom__c", "advendio__targetnet__c", "advendio__budgetn2__c" ] }
Rule 2: "ADvendio Rules - Individual packages (Parent)"
If the rule matches with an Individual item (parent), then it’ll make read-only and hide some fields in that record.
Definition
ADvendio Rules - Individual packages (Parent)
:
with logicalConnector AND
(all condition should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Individual
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes in the parent record:
make read-only the following fields:
from_until
advendio__from_date__c
advendio__until_date__c
advendio__quantity__c
advendio__sales_price__c
advendio__guaranteed_ai__c
advendio__frequency__c
advendio__clickrate__c
advendio__rate_discount_2_custom__c
advendio__rate_discount_3_custom__c
advendio__rate_discount_4__c
advendio__rate_discount_1__c
advendio__quantity_discount_custom__c
advendio__surchargesalesprice__c
advendio__surchargeb3__c
advendio__surchargeb3abs__c
advendio__surchargeb2__c
advendio__surchargeb2abs__c
advendio__thirdpartycommissioncustom__c
advendio__targetnet__c
advendio__budgetn2__c
Technical definition
{ name: "ADvendio Rules - Individual packages (Parent)", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Individual" } ], applyRuleInChildItem: false, readonlyFields: [ "from_until", "advendio__from_date__c", "advendio__until_date__c", "advendio__quantity__c", "advendio__sales_price__c", "advendio__guaranteed_ai__c", "advendio__frequency__c", "advendio__clickrate__c", "advendio__rate_discount_2_custom__c", "advendio__rate_discount_3_custom__c", "advendio__rate_discount_4__c", "advendio__rate_discount_1__c", "advendio__quantity_discount_custom__c", "advendio__surchargesalesprice__c", "advendio__surchargeb3__c", "advendio__surchargeb3abs__c", "advendio__surchargeb2__c", "advendio__surchargeb2abs__c", "advendio__thirdpartycommissioncustom__c", "advendio__targetnet__c", "advendio__budgetn2__c" ] }
Rule 3: "ADvendio Rules - Individual packages (Child) - 1"
If the rule matches with an Individual item (parent), then it’ll make read-only some fields in child records.
Definition
ADvendio Rules - Individual packages (Child) - 1
:
with logicalConnector AND
(all condition should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Individual
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in child records:
make read-only the following fields:advendio__rate_discount_1__c
advendio__agency_commission__c
advendio__ac__c
Technical definition
{ name: "ADvendio Rules - Individual packages (Child)", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Individual" } ], applyRuleInChildItem: true, readonlyFields: [ "advendio__rate_discount_1__c", "advendio__agency_commission__c", "advendio__ac__c" ] }
Rule 4: "ADvendio Rules - Individual packages (Child) - 2"
If the rule matches with an Individual item (parent), then it’ll make read-only a field in child records and also it will set an action as hidden.
Definition
ADvendio Rules - Individual packages (Child) - 2
:
with logicalConnector AND
(all condition should be met):
when the 4 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Individual
advendio__ad_price__r.advendio__ad_Spec__r.advendio__fixedquantitypackage__c
==
true
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in child records:
make read-only the following field:
advendio__quantity__c
hide the following action:
delete
Technical definition
{ name: "ADvendio Rules - Individual packages (Child) - 2", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Individual" }, { fieldpath: "advendio__ad_price__r.advendio__ad_Spec__r.advendio__fixedquantitypackage__c", operator: "==", value: "true" } ], applyRuleInChildItem: true, readonlyFields: ["advendio__quantity__c"], hiddenActions: ["delete"] }
Rule 5: "ADvendio Rules - Individual packages (Child) - 3"
If the rule matches with an Individual item (parent), then it’ll set an action as hidden.
Definition
ADvendio Rules - Individual packages (Child) - 2
:
with logicalConnector AND
(all condition should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Individual
with applyRuleInChildItem: true
and
with sublogicalConnector AND
(all condition should be met):
when 1 condition are met:
advendio__componentoptional__c
!=
true
If it match with a parent record and child record at the same time, then apply the following changes in child records:
hide the actions:
delete
copy
Technical definition
{ name: "ADvendio Rules - Individual packages (Child) - 3", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Individual" } ], subLogicalConnector: "AND", subConditions: [ { fieldpath: "advendio__componentoptional__c", operator: "!=", value: "true" } ], applyRuleInChildItem: true, hiddenActions: ["delete", "copy"] }
Rule 6: "ADvendio Rules - Prorated packages (Parent)"
If the rule matches with a Prorated item (parent), then it’ll make read-only some fields in that record.
Definition
ADvendio Rules - Prorated packages (Parent)
:
with logicalConnector AND
(all condition should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Prorated
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes in the parent record:
make read-only the following fields:
advendio__ratediscount3abs__c
advendio__thirdpartycommissionabs__c
Technical definition
{ name: "ADvendio Rules - Prorated packages (Parent)", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Prorated" } ], applyRuleInChildItem: false, readonlyFields: [ "advendio__ratediscount3abs__c", "advendio__thirdpartycommissionabs__c" ] }
Rule 7: "ADvendio Rules - Prorated packages (Child)"
If the rule matches with a Prorated item (parent), then it’ll make read-only and hide some fields in child records.
Definition
ADvendio Rules - Prorated packages (Child)
:
with logicalConnector AND
(all condition should be met):
when the 3 conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername
==
Packet
advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix
==
ADvendio
advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c
==
Prorated
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in child records:
make read-only the following field:
from_until
advendio__from_date__c
advendio__until_date__c
advendio__quantity__c
advendio__sales_price__c
advendio__guaranteed_ai__c
advendio__frequency__c
advendio__clickrate__c
advendio__ratediscount1abscustom__c
advendio__ratediscount2abscustom__c
advendio__ratediscount3abscustom__c
advendio__ratediscount4abscustom__c
advendio__quantity_discount_custom__c
advendio__surchargeb3abs__c
advendio__surchargeb2abs__c
advendio__thirdpartycommissioncustom__c
advendio__thirdpartycommissioncustom__c
advendio__agency_commission__c
advendio__ac__c
advendio__ratediscount3abs__c
advendio__thirdpartycommissionabs__c
advendio__targetnet__c
advendio__budgetn2__c
Technical definition
{ name: "ADvendio Rules - Prorated packages (Child)", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername", operator: "==", value: "Packet" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.recordtype.namespaceprefix", operator: "==", value: "ADvendio" }, { fieldpath: "advendio__ad_price__r.advendio__ad_spec__r.advendio__distribution__c", operator: "==", value: "Prorated" } ], applyRuleInChildItem: true, readonlyFields: [ "from_until", "advendio__from_date__c", "advendio__until_date__c", "advendio__quantity__c", "advendio__sales_price__c", "advendio__guaranteed_ai__c", "advendio__frequency__c", "advendio__clickrate__c", "advendio__ratediscount1abscustom__c", "advendio__ratediscount2abscustom__c", "advendio__ratediscount3abscustom__c", "advendio__ratediscount4abscustom__c", "advendio__quantity_discount_custom__c", "advendio__surchargeb3abs__c", "advendio__surchargeb2abs__c", "advendio__thirdpartycommissioncustom__c", "advendio__thirdpartycommissioncustom__c", "advendio__agency_commission__c", "advendio__ac__c", "advendio__ratediscount3abs__c", "advendio__thirdpartycommissionabs__c", "advendio__targetnet__c", "advendio__budgetn2__c" ] }
Rule 8: "ADvendio Rules - Connected item"
If the rule matches with an Individual item (parent), then it’ll set an action as hidden.
Definition
ADvendio Rules - Connected item
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
advendio__connecteditem__c
!=
NULL
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes:
hide the actions:
delete
Technical definition
{ name: "ADvendio Rules - Connected item", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__connecteditem__c", operator: "!=", value: "null" } ], applyRuleInChildItem: false, hiddenActions: ["delete"] }
Rule 9: "ADvendio Rules - Connected item (Child)"
If the rule matches with an Individual item (parent), then it’ll set an action as hidden in the child records.
Definition
ADvendio Rules - Connected item (Child)
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
user.isactive
==
TRUE
with subLogicalConnector AND
(all condition should be met):
when the subConditions are met:
advendio__connecteditem__c
!=
NULL
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in child records:
hide the actions:
delete
Technical definition
{ name: "ADvendio Rules - Connected item (Child)", logicalConnector: "AND", conditions: [ { fieldpath: "user.isactive", operator: "==", value: "true" } ], subLogicalConnector: "AND", subConditions: [ { fieldpath: "advendio__connecteditem__c", operator: "!=", value: "null" } ], applyRuleInChildItem: true, hiddenActions: ["delete"] }
Rule 10: "ADvendio Rules - Disabled Split Action (Parent)"
If the rule matches with a Package item (parent), then it’ll set an action as hidden in the record.
Definition
ADvendio Rules - Disabled Split Action (Parent)
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername == Packet
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes in the parent record:
hide the actions:
split
Technical definition
{ name: "ADvendio Rules - Disabled Split Action (Parent)", logicalConnector: "AND", conditions: [ { fieldpath: "recordtype.developername", operator: "==", value: "Packet" } ], applyRuleInChildItem: false, hiddenActions: ["split"] }
Rule 11: "ADvendio Rules - Disabled Split Action (Child)"
If the rule matches with a Package item (parent), then it’ll set an action as hidden in the child records.
Definition
ADvendio Rules - Disabled Split Action (Child)
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
advendio__ad_price__r.advendio__ad_spec__r.recordtype.developername == Packet
with applyRuleInChildItem: true
: If it match with a parent record, then apply the following changes in child records:
hide the actions:
split
Technical definition
{ name: "ADvendio Rules - Disabled Split Action (Child)", logicalConnector: "AND", conditions: [ { fieldpath: "recordtype.developername", operator: "==", value: "Packet" } ], applyRuleInChildItem: true, hiddenActions: ["split"] }
Rule 12: "ADvendio Rules - Net Calculation Hide Target Net - 1"
If the rule matches with an Item (parent or child in a package or not a package item), then it’ll make the field advendio__targetnet__c
hidden in that record.
Definition
ADvendio Rules - Net Calculation Hide Target Net - 1
:
with logicalConnector OR
(any condition could be met):
when any of the conditions are met:
advendio__billing_category__c == Fixed Price
advendio__billing_category__c == CPD
advendio__billing_category__c == CPW
advendio__billing_category__c == CPMo
advendio__billing_category__c == CPY
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes in the parent record:
make hidden the following fields:
advendio__targetnet__c
Technical definition
{ name: "ADvendio Rules - Net Calculation Hide Target Net - 1", logicalConnector: "OR", conditions: [ { fieldpath: "advendio__billing_category__c", operator: "==", value: "Fixed Price" }, { fieldpath: "advendio__billing_category__c", operator: "==", value: "CPD" }, { fieldpath: "advendio__billing_category__c", operator: "==", value: "CPW" }, { fieldpath: "advendio__billing_category__c", operator: "==", value: "CPMo" }, { fieldpath: "advendio__billing_category__c", operator: "==", value: "CPY" } ], applyRuleInChildItem: false, hiddenFields: ["advendio__targetnet__c"] }
Rule 13: "ADvendio Rules - Read only fields for Budget Billing Category"
If the billing category is Budget
, then it’ll make the fields ADvendio__Quantity__c
and ADvendio__DistributionUnit__c
hidden in that record.
Definition
ADvendio Rules - Read only fields for Budget Billing Category
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
advendio__billing_category__c == Budget
with applyRuleInChildItem: false
: If it match with a parent record, then apply the following changes in the parent record:
make hidden the following fields:
"ADvendio__Quantity__c"
"ADvendio__DistributionUnit__c"
Technical definition
{ name: "ADvendio Rules - Read only fields for Budget Billing Category", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__billing_category__c", operator: "==", value: "Budget" } ], applyRuleInChildItem: false, readonlyFields: [ "ADvendio__Quantity__c", "ADvendio__DistributionUnit__c" ] }
Rule 14: "With a selected rebate in kind condition applied, the special discount is read only"
If the item has an applied commitment conditions that is rebate in kind (as a field or a related record) , then it’ll make the fields ADvendio__Rate_Discount_4__c
readOnly in that record.
Definition
ADvendio Rules - With a selected rebate in kind condition applied, the special discount is read only
:
with logicalConnector OR
(any condition could be met):
when the conditions are met:
advendio__rebateinkindcondition__c != NULL
ISREBATEINKIND()
make read only the following fields:
"ADvendio__Rate_Discount_4__c"
Technical definition
{ name: "ADvendio Rules - With a selected rebate in kind condition applied, the special discount is read only", logicalConnector: "OR", conditions: [ { fieldpath: "advendio__appliedcommitmentconditions__r", operator: "ISREBATEINKIND", value: 'true' }, { fieldpath: "advendio__rebateinkindcondition__c", operator: "!=", value: 'NULL' } ], readonlyFields: [ "advendio__rate_discount_4__c" ] }
Rule 15: "For not new items with a selected rebate in kind condition applied (new structure), the quantity is read only"
If the item is new and has an applied commitment conditions that is rebate in kind (as a related record), then it’ll make the fields ADvendio__Quantity__c
readOnly in that record.
Definition
ADvendio Rules - For not new items with a selected rebate in kind condition applied (new structure) , the quantity is read only
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
record.isNew == TRUE
ISREBATEINKIND()
make read only the following fields:
"ADvendio__Quantity__c"
Technical definition
{ name: "ADvendio Rules - For not new items with a selected rebate in kind condition applied, the quantity is read only", logicalConnector: "AND", conditions: [ { fieldpath: "record.isNew", operator: "!=", value: 'true' }, { fieldpath: "advendio__appliedcommitmentconditions__r", operator: "ISREBATEINKIND", value: 'true' } ], readonlyFields: [ "advendio__quantity__c" ] }
Rule 16: "For not new items with a selected rebate in kind condition applied (old structure), the quantity is read only"
If the item is new and has an applied commitment conditions that is rebate in kind (as a field), then it’ll make the fields ADvendio__Quantity__c
readOnly in that record.
Definition
ADvendio Rules - For not new items with a selected rebate in kind condition applied (old structure) , the quantity is read only
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
record.isNew == TRUE
advendio__rebateinkindcondition__c != NULL
make read only the following fields:
"ADvendio__Quantity__c"
Technical definition
{ name: "ADvendio Rules - For not new items with a selected rebate in kind condition applied, the quantity is read only", logicalConnector: "AND", conditions: [ { fieldpath: "record.isNew", operator: "!=", value: 'true' }, { fieldpath: "advendio__appliedcommitmentconditions__r", operator: "ISREBATEINKIND", value: 'true' } ], readonlyFields: [ "advendio__quantity__c" ] }
Rule 17: "For items without Rate Steps, Rate Calculation Quantity is hidden - 1"
If the ad price assigned to the item doesn’t have any applicable rate step (advendio__ad_price__r.advendio__totalapplicableratesteps__c
= 0), then it’ll hide the field ADvendio__RateCalculationQuantity__c
for that record.
Definition
ADvendio Rules - For items without Rate Steps, Rate Calculation Quantity is hidden - 1
:
with logicalConnector AND
(all condition should be met):
when the conditions are met:
advendio__ad_price__r.advendio__totalapplicableratesteps__c == 0
hide the following field:
"ADvendio__RateCalculationQuantity__c"
Technical definition
{ name: "ADvendio Rules - For items without Rate Steps, Rate Calculation Quantity is hidden - 1", logicalConnector: "AND", conditions: [ { fieldpath: "advendio__ad_price__r.advendio__totalapplicableratesteps__c", operator: "==", value: "0" } ], applyRuleInChildItem: false, hiddenFields: ["ADvendio__RateCalculationQuantity__c"] }