Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

What are Hidden Tab Rules in Campaign Builder

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

Tip

Hidden Tab Rules determine which fields can't be changed, which actions are hidden, or how child records behave based on specific criteria

...

to ensure a smooth and controlled operation.

Info

You can find these rules in the campaignBuilderConfigs.js file under the TAB_RULES section.

...

List of Hidden Tab Rules

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.

...

with applyRuleInChildItem: true: If it match matches with a parent record, then apply the following changes in its child records:

...

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/code

Code Block
languagejs
{
    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"
    ]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the 3 conditions are met:

...

with applyRuleInChildItem: false: If it match matches with a parent record, then apply the following changes in the parent record:

...

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/code

Code Block
languagejs
{
    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"
    ]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the 3 conditions are met:

...

with applyRuleInChildItem: true: If it match matches 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/code

Code Block
languagejs
{
    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"
    ]
  }

...

If the rule matches with an Individual item (parent), then it’ll make read-only a field in child records and also it will also set an action as hidden.

Definition

...

with logicalConnector AND (all condition conditions should be met):

when the 4 conditions are met:

...

hide the following action:

delete

Technical definition/code

Code Block
languagejs
  {
    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"]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the 3 conditions are met:

...

with sublogicalConnector AND (all condition conditions should be met):

when 1 condition are is met:

advendio__componentoptional__c != true

If it match matches 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/code

Code Block
languagejs
  {
    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"]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the 3 conditions are met:

...

advendio__ratediscount3abs__c
advendio__thirdpartycommissionabs__c

Technical definition/code

Code Block
languagejs
{
    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"
    ]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the 3 conditions are met:

...

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/code

Code Block
languagejs
{
    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"
    ]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the conditions are met:

...

with applyRuleInChildItem: false: If it match matches with a parent record, then apply the following changes:

hide the actions:

delete

Technical definition/code

Code Block
languagejs
  {
    name: "ADvendio Rules - Connected item",
    logicalConnector: "AND",
    conditions: [
      {
        fieldpath: "advendio__connecteditem__c",
        operator: "!=",
        value: "null"
      }
    ],
    applyRuleInChildItem: false,
    hiddenActions: ["delete"]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the conditions are met:

...

with subLogicalConnector AND (all condition conditions should be met):

when the subConditions are met:

...

with applyRuleInChildItem: true: If it match matches with a parent record, then apply the following changes in child records:

hide the actions:

delete

Technical definition/code

Code Block
languagejs
  {
    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"]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the conditions are met:

...

with applyRuleInChildItem: false: If it match matches with a parent record, then apply the following changes in the parent record:

hide the actions:

split

Technical definition/code

Code Block
languagejs
  {
    name: "ADvendio Rules - Disabled Split Action (Parent)",
    logicalConnector: "AND",
    conditions: [
      {
        fieldpath:
          "recordtype.developername",
        operator: "==",
        value: "Packet"
      }
    ],
    applyRuleInChildItem: false,
    hiddenActions: ["split"]
  }

...

with logicalConnector AND (all condition conditions should be met):

when the conditions are met:

...

with applyRuleInChildItem: true: If it match matches with a parent record, then apply the following changes in child records:

hide the actions:

split

Technical definition/code

Code Block
languagejs
  {
    name: "ADvendio Rules - Disabled Split Action (Child)",
    logicalConnector: "AND",
    conditions: [
      {
        fieldpath: "recordtype.developername",
        operator: "==",
        value: "Packet"
      }
    ],
    applyRuleInChildItem: true,
    hiddenActions: ["split"]
  }

...

with applyRuleInChildItem: false: If it match matches with a parent record, then apply the following changes in the parent record:

make hidden the following fields:

advendio__targetnet__c

Technical definition/code

Code Block
languagejs
{
    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 conditions should be met):

when the conditions are met:

...

with applyRuleInChildItem: false: If it match matches with a parent record, then apply the following changes in the parent record:

...

"ADvendio__DistributionUnit__c"

Technical definition/code

Code Block
languagejs
{
    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 condition 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.

...

ADvendio Rules - With a selected rebate in kind condition applied, the special discount is read-only:

with logicalConnector OR (any condition could be met):

...

"ADvendio__Rate_Discount_4__c"

Technical definition/code

Code Block
{
    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 condition that is rebate in kind (as a related record), then it’ll make the fields ADvendio__Quantity__c readOnly in that record.

...

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 conditions should be met):

when the conditions are met:

...

make read only the following fields:

"ADvendio__Quantity__c"

Technical definition/code

Code Block
{
    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 condition that is rebate in kind (as a field), then it’ll make the fields ADvendio__Quantity__c readOnly in that record.

...

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 conditions should be met):

when the conditions are met:

...

make read only the following fields:

"ADvendio__Quantity__c"

Technical definition/code

Code Block
{
    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"
    ]
}

...

with logicalConnector AND (all condition conditions should be met):

when the conditions are met:

...

"ADvendio__RateCalculationQuantity__c"

Technical definition/code

Code Block
{
    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"]
}

Rule 18: "ADvendio Rules - Set Ad Price and Media Campaign as read-only - Parent"

Always make the fields ADvendio__Ad_Price__c, ADvendio__Media_Campaign__c and CurrencyIsoCode read-only for Child Items

Definition

ADvendio Rules - Set Ad Price and Media Campaign as read-only - Child:

with logicalConnector AND (all conditions should be met):

when the conditions are met:

user.isactive == true

make read only the following fields:

"ADvendio__Ad_Price__c"

"ADvendio__Media_Campaign__c"

"CurrencyIsoCode"

Technical definition/code

Code Block
{
    name: "ADvendio Rules - Set Ad Price and Media Campaign as read only - Child",
    logicalConnector: "AND",
    conditions: [
      {
        fieldpath: "user.isactive",
        operator: "==",
        value: "true"
      }
    ],
    applyRuleInChildItem: true,
    readonlyFields: ["ADvendio__Ad_Price__c", "ADvendio__Media_Campaign__c", "CurrencyIsoCode"]
  }