Hi,

Almost everything is said in the title.

We can open the section wizard for the "Case" section but when we try to access to the "Page", the pending icon keeps on turning and nothing happens, even after a long period, while it works fine with other sections.

Thanks

Eric

Like 0

Like

7 comments

Dear Eric,

While opening the Section wizard for the Case section, please open web browser console (click F12 in Chrome) and check if there are any errors to be fixed. 

Best regards,

Lily

Lily Johnson,

Lily,

Here is what the browser consoe shows.

Thanks

Dear Eric,

Usually, when you are not able open page in Section Wizard, this means, that something went wrong in the diff section of page schema. 

In order to check this, please go to system configuration: System Designer --> Advanced settings --> new window of system configuration will open --> Go to Schemas tab --> search for CasePageV2 --> open it.

In the diff: /**SCHEMA_DIFF*/ [{}]/**SCHEMA_DIFF*/ section look for double-inserts of same item. Judging from the error, look for "DeclarerCommentsDetail" insert. Make sure, that this is the only insert through all package levels in CasePageV2.

To make sure the issue is related to particularly this detail, please try to comment the insert --> save schema --> clear browser cache and open section wizard.

Hope you find it helpful.

Regards,

Anastasia

 

Anastasia Botezat,

Can't find the "DeclarerCommentsDetail" in the CasePageV2 shema tab.

Here is a copy of the shema concerned.

If you could tell me what is going wrong with it.

Thanks

Eric

define("CasePageV2", ["FormatUtils", "NetworkUtilities", "BusinessRuleModule",

        "ConfigurationEnums", "CasesEstimateLabel", "ServiceDeskConstants", "CasePageUtilitiesV2",

        "css!CasePageV2CSS", "css!CasesEstimateLabel", "css!MiniPageViewGeneratorCSS"],

    function(FormatUtils, NetworkUtilities, BusinessRuleModule, Enums, CasesEstimateLabel, ServiceDeskConstants) {

        return {

            entitySchemaName: "Case",

            mixins: {

                /**

                 * @class CasePageUtilitiesV2 implements quick save cards in one click.

                 */

                CasePageUtilitiesV2: "Terrasoft.CasePageUtilitiesV2"

            },

            messages: {

                /**

                 * @message UpdateResolvedButtonMenu

                 * It is need to update the collection of menu items quick save button after changing status.

                 * @param {Object} config menu

                 */

                "UpdateResolvedButtonMenu": {

                    mode: this.Terrasoft.MessageMode.PTP,

                    direction: this.Terrasoft.MessageDirectionType.PUBLISH

                },

                /**

                 * @message OnResolvedButtonMenuClick

                 * Event menu selection buttons quick save.

                 * @param {Object} config menu

                 */

                "OnResolvedButtonMenuClick": {

                    mode: this.Terrasoft.MessageMode.PTP,

                    direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE

                },

                /**

                 * @message UpdateOpenCaseDetail

                 * Update changes about contact and account.

                 */

                "UpdateOpenCaseDetail": {

                    mode: this.Terrasoft.MessageMode.PTP,

                    direction: this.Terrasoft.MessageDirectionType.PUBLISH

                },

                /**

                 * @message GetCaseIdOpenCaseDetail

                 * Informs identifier of current case.

                 */

                "GetCaseIdOpenCaseDetail": {

                    mode: this.Terrasoft.MessageMode.PTP,

                    direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE

                },

                /**

                 * @message CallCustomer

                 * Make a call for customer.

                 */

                "CallCustomer": {

                    "mode": Terrasoft.MessageMode.PTP,

                    "direction": Terrasoft.MessageDirectionType.PUBLISH

                }

            },

            attributes: {

                /**

                 * Reason closure code default.

                 */

                "DefCaseClosureCode": {

                    dataValueType: this.Terrasoft.DataValueType.GUID,

                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN

                },

                /**

                 * Close card after save

                 */

                "IsCloseOnSave": {

                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,

                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    value: false

                },

                /**

                 * Caption for ResolvedMenu button.

                 */

                "ResolvedButtonMenuCaption": {

                    dataValueType: this.Terrasoft.DataValueType.TEXT,

                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN

                },

                /**

                 * Collection name drop-down menu function button is empty.

                 */

                "IsResolvedButtonMenuEmpty": {

                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN,

                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    value: false

                },

                /**

                 *  Collection name drop-down menu in the function button.

                 */

                "ResolvedButtonMenuItems": {

                    dataValueType: this.Terrasoft.DataValueType.COLLECTION

                },

                /**

                 * Informs the name of active tab of open cases.

                 */

                "ActiveOpenCasesTabName": {

                    dataValueType: this.Terrasoft.DataValueType.TEXT,

                    type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN

                },

                /**

                 * Contact column value.

                 */

                "Contact": {

                    dependencies: [

                        {

                            columns: ["Contact"],

                            methodName: "onContactColumnChanged"

                        }

                    ]

                },

                /**

                 * Account column value.

                 */

                "Account": {

                    dependencies: [

                        {

                            columns: ["Account"],

                            methodName: "onAccountColumnChanged"

                        }

                    ]

                },

                /**

                 * SolutionDate column caption value.

                 */

                "SolutionDateCaption": {

                    dataValueType: this.Terrasoft.DataValueType.COLLECTION,

                    dependencies: [

                        {

                            columns: ["SolutionDate"],

                            methodName: "onPlanedDateChanged"

                        },

                        {

                            columns: ["Status"],

                            methodName: "onPlanedDateChanged"

                        }

                    ]

                },

                /**

                 * IsSolutionOverdue column flag.

                 */

                "IsSolutionOverdue": {

                    dataValueType: this.Terrasoft.DataValueType.BOOLEAN

                },

                /**

                 * Status column value.

                 */

                "Status": {

                    lookupListConfig: {

                        columns: ["IsFinal", "IsResolved", "IsPaused"],

                        filter: function() {

                            var status = this.get("OriginalStatus");

                            var filterGroup = new this.Terrasoft.createFilterGroup();

                            if (!status || status.IsFinal) {

                                filterGroup.add("emptyFilter", this.Terrasoft.createColumnIsNullFilter("Id"));

                                return filterGroup;

                            }

                            filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;

                            filterGroup.add("StatusFilter", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL,

                                "[CaseNextStatus:NextStatus].Status", this.get("OriginalStatus").value));

                            filterGroup.add("StatusFilterCurrent", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL,

                                "Id", this.get("OriginalStatus").value));

                            return filterGroup;

                        }

                    }

                },

                /**

                 * SatisfactionLevel column value.

                 */

                "SatisfactionLevel": {

                    lookupListConfig: {

                        columns: ["Point"],

                        orders: [

                            {

                                columnPath: "Point",

                                direction: this.Terrasoft.OrderDirection.DESC

                            }

                        ]

                    }

                },

                /**

                 * RespondedOn column value.

                 */

                "RespondedOn": {

                    dependencies: [

                        {

                            columns: ["Status"],

                            methodName: "onStatusChanged"

                        }

                    ]

                },

                /**

                 * Priority column value.

                 */

                "Priority": {

                    dataValueType: this.Terrasoft.DataValueType.LOOKUP,

                    lookupListConfig: {

                        orders: [

                            {

                                columnPath: "Priority"

                            }

                        ]

                    }

                }

            },

            details: /**SCHEMA_DETAILS*/{

                "ContactCasesDetail": {

                    "schemaName": "ContactOpenCasesDetail",

                    "entitySchemaName": "Case",

                    "filter": {

                        "masterColumn": "Contact",

                        "detailColumn": "Contact"

                    }

                },

                "AccountCasesDetail": {

                    "schemaName": "AccountOpenCasesDetail",

                    "entitySchemaName": "Case",

                    "filter": {

                        "masterColumn": "Account",

                        "detailColumn": "Account"

                    }

                },

                "Files": {

                    "schemaName": "FileDetailV2",

                    "entitySchemaName": "CaseFile",

                    "filter": {

                        "masterColumn": "Id",

                        "detailColumn": "Case"

                    }

                },

                "ContactCommunication": {

                    "schemaName": "CommunicationInCaseDetail",

                    "filter": {

                        "masterColumn": "Contact",

                        "detailColumn": "Contact"

                    }

                }

            }/**SCHEMA_DETAILS*/,

            diff: /**SCHEMA_DIFF*/[

                {

                    "operation": "remove",

                    "name": "HeaderContainer"

                },

                {

                    "operation": "insert",

                    "name": "ResolvedButton",

                    "parentName": "LeftContainer",

                    "propertyName": "items",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.BUTTON,

                        "caption": {

                            "bindTo": "ResolvedButtonMenuCaption"

                        },

                        "style": this.Terrasoft.controls.ButtonEnums.style.GREEN,

                        "classes": {

                            "textClass": ["actions-button-margin-right"],

                            "wrapperClass": ["actions-button-margin-right"]

                        },

                        "click": {"bindTo": "onResolvedButtonMenuClick"},

                        "menu": {

                            "items": {"bindTo": "ResolvedButtonMenuItems"}

                        },

                        "visible": {

                            "bindTo": "IsResolvedButtonMenuEmpty",

                            "bindConfig": {

                                "converter": function(value) {

                                    return !value;

                                }

                            }

                        }

                    }

                },

                {

                    "operation": "insert",

                    "name": "ProcessingTab",

                    "values": {

                        "caption": {"bindTo": "Resources.Strings.ProcessingTabCaption"},

                        "items": []

                    },

                    "parentName": "Tabs",

                    "propertyName": "tabs",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "ParametersTab",

                    "values": {

                        "caption": {

                            "bindTo": "Resources.Strings.ParametersTabCaption"

                        },

                        "items": []

                    },

                    "parentName": "Tabs",

                    "propertyName": "tabs",

                    "index": 1

                },

                {

                    "operation": "insert",

                    "name": "FilesTab",

                    "values": {

                        "caption": {

                            "bindTo": "Resources.Strings.FilesTabCaption"

                        },

                        "items": []

                    },

                    "parentName": "Tabs",

                    "propertyName": "tabs",

                    "index": 2

                },

                {

                    "operation": "insert",

                    "name": "Files",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.DETAIL

                    },

                    "parentName": "FilesTab",

                    "propertyName": "items"

                },

                //ProcessingTab

                {

                    "operation": "insert",

                    "name": "CaseProcessing_gridLayout",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.GRID_LAYOUT,

                        "items": []

                    },

                    "parentName": "ProcessingTab",

                    "propertyName": "items",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "Subject",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "bindTo": "Subject"

                    },

                    "parentName": "CaseProcessing_gridLayout",

                    "propertyName": "items"

                },

                //RightContainerTab

                {

                    "operation": "insert",

                    "name": "RightContainerTab",

                    "values": {

                        "caption": {

                            "bindTo": "Resources.Strings.RightContainerTabCaption"

                        },

                        "items": []

                    },

                    "parentName": "RightTabs",

                    "propertyName": "tabs",

                    "index": 0

                },

                //ParametersTab

                {

                    "operation": "insert",

                    "name": "CaseParameters_gridLayout",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.GRID_LAYOUT,

                        "items": []

                    },

                    "parentName": "ParametersTab",

                    "propertyName": "items",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "RegisteredOn",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 1,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "RegisteredOn",

                        "enabled": false

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "ResponseDate",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 2,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "ResponseDate",

                        "labelConfig": {

                            "visible": true

                        }

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "SolutionDateParameters",

                    "values": {

                        "layout": {

                            "column": 12,

                            "row": 1,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "SolutionDate",

                        "enabled": false

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "FirstSolutionProvidedOn",

                    "values": {

                        "layout": {

                            "column": 12,

                            "row": 2,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "FirstSolutionProvidedOn",

                        "enabled": false

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "SolutionProvidedOn",

                    "values": {

                        "layout": {

                            "column": 12,

                            "row": 3,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "SolutionProvidedOn",

                        "enabled": false

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "ClosureDate",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 5,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "ClosureDate",

                        "enabled": false

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "ClosureCode",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 6,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "ClosureCode",

                        "contentType": this.Terrasoft.ContentType.ENUM

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "Origin",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "contentType": this.Terrasoft.ContentType.ENUM,

                        "bindTo": "Origin"

                    },

                    "parentName": "CaseParameters_gridLayout",

                    "propertyName": "items"

                },

                // Feedback control group

                {

                    "operation": "insert",

                    "name": "FeedbackControlGroup",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.CONTROL_GROUP,

                        "items": [],

                        "caption": {

                            "bindTo": "Resources.Strings.FeedbackGroupCaption"

                        }

                    },

                    "parentName": "ParametersTab",

                    "propertyName": "items",

                    "index": 2

                },

                {

                    "operation": "insert",

                    "name": "FeedbackControlGroup_gridLayout",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.GRID_LAYOUT,

                        "items": []

                    },

                    "parentName": "FeedbackControlGroup",

                    "propertyName": "items",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "SatisfactionLevel",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 12,

                            "rowSpan": 1

                        },

                        "bindTo": "SatisfactionLevel",

                        "contentType": this.Terrasoft.ContentType.ENUM

                    },

                    "parentName": "FeedbackControlGroup_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "SatisfactionLevelComment",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 1,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "bindTo": "SatisfactionLevelComment",

                        "contentType": this.Terrasoft.ContentType.LONG_TEXT

                    },

                    "parentName": "FeedbackControlGroup_gridLayout",

                    "propertyName": "items"

                },

                // SolutionLabel

                {

                    "operation": "insert",

                    "name": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "SolutionCaptionContainer",

                        "selectors": {"wrapEl": "#SolutionCaptionContainer"},

                        "layout": {

                            "column": 16,

                            "row": 4,

                            "colSpan": 6,

                            "rowSpan": 1

                        },

                        "markerValue": "SolutionCaptionContainer",

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "wrapClass": ["estimate-caption-container"],

                        "items": []

                    },

                    "parentName": "CaseParameters_gridLayout"

                },

                {

                    "operation": "insert",

                    "name": "SolutionTimerImageContainer",

                    "parentName": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "TimerImageContainer",

                        "selectors": {"wrapEl": "#TimerImageContainer"},

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "wrapClass": ["timer-image-container"],

                        "visible": {

                            "bindTo": "isSolutionTimerImageVisible"

                        },

                        "markerValue": "SolutionTimerImageContainer",

                        "afterrerender": {

                            "bindTo": "renderCaptionStyle"

                        },

                        "afterrender": {

                            "bindTo": "renderCaptionStyle"

                        },

                        "items": []

                    },

                    "index": 10

                },

                {

                    "operation": "insert",

                    "name": "SolutionMinutesCaption",

                    "parentName": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "SolutionMinutesCaption",

                        "labelClass": ["estimate-caption-label"],

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {

                            "bindTo": "getSolutionDateMinute"

                        },

                        "visible": {

                            "bindTo": "isSolutionHourVisible"

                        }

                    },

                    "index": 3

                },

                {

                    "operation": "insert",

                    "name": "SolutionEstimateSeconds",

                    "parentName": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "SolutionEstimateSeconds",

                        "labelClass": ["estimate-caption-label blink"],

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": ":",

                        "visible": {

                            "bindTo": "isSolutionHourVisible"

                        }

                    },

                    "index": 2

                },

                {

                    "operation": "insert",

                    "name": "SolutionCaptionLabel",

                    "parentName": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "SolutionCaptionLabel",

                        "labelClass": ["estimate-caption-label day"],

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {

                            "bindTo": "getSolutionDateDay"

                        },

                        "visible": {

                            "bindTo": "isSolutionCaptionVisible"

                        },

                        "afterrerender": {"bindTo": "renderCaptionStyle"},

                        "afterrender": {"bindTo": "renderCaptionStyle"}

                    },

                    "index": 1

                },

                {

                    "operation": "insert",

                    "name": "SolutionCaptionPrefix",

                    "parentName": "SolutionCaptionContainer",

                    "propertyName": "items",

                    "values": {

                        "id": "SolutionCaptionPrefix",

                        "labelClass": ["estimate-caption-label prefix"],

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {

                            "bindTo": "getSolutionCaptionPrefix"

                        },

                        "visible": {

                            "bindTo": "isSolutionCaptionVisible"

                        }

                    },

                    "index": 0

                },

                //Profile container

                {

                    "operation": "insert",

                    "name": "Priority",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 5,

                            "rowSpan": 1

                        },

                        "bindTo": "Priority",

                        "contentType": this.Terrasoft.ContentType.ENUM,

                        "labelConfig": {

                            "visible": false

                        },

                        "change": {

                            bindTo: "setPriorityField"

                        },

                        "iconsVisible": true,

                        "wrapClass": ["priority-edit-class"]

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "StatusContainer",

                    "values": {

                        "layout": {

                            "column": 5,

                            "row": 0,

                            "colSpan": 9,

                            "rowSpan": 1

                        },

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "classes": {

                            "wrapClassName": ["caseStatusContainer"]

                        },

                        "items": []

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "StatusValue",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {"bindTo": "getStatusValue"},

                        "markerValue": "StatusValue"

                    },

                    "parentName": "StatusContainer",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "NumberContainer",

                    "values": {

                        "layout": {

                            "column": 14,

                            "row": 0,

                            "colSpan": 10,

                            "rowSpan": 1

                        },

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "classes": {

                            "wrapClassName": ["caseNumberContainer"]

                        },

                        "items": []

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "NumberValue",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {"bindTo": "getNumberValue"},

                        "markerValue": "NumberValue"

                    },

                    "parentName": "NumberContainer",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "SolutionDate",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 1,

                            "colSpan": 16,

                            "rowSpan": 1

                        },

                        "bindTo": "SolutionDate",

                        "labelConfig": {

                            "visible": true

                        },

                        "enabled": false

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "Contact",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 2,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "bindTo": "Contact"

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "Account",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 3,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "bindTo": "Account"

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "Category",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 4,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "bindTo": "Category",

                        "enabled": {

                            "bindTo": "IsCategoryEnabled"

                        },

                        "contentType": this.Terrasoft.ContentType.ENUM

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "CreatedOnContainer",

                    "values": {

                        "layout": {

                            "column": 0,

                            "row": 9,

                            "colSpan": 24,

                            "rowSpan": 1

                        },

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "classes": {

                            "wrapClassName": ["caseCreatedOnContainer"]

                        },

                        "items": []

                    },

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "CreatedOnValue",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {"bindTo": "getCreatedOnDate"},

                        "markerValue": {"bindTo": "CreatedOnValue"},

                        "visible": {"bindTo": "isEditMode"}

                    },

                    "parentName": "CreatedOnContainer",

                    "propertyName": "items"

                },

                {

                    "operation": "insert",

                    "name": "CaseProfile_gridLayout",

                    "values": {

                        "generator": "MiniPageViewGenerator.generatePartial",

                        "itemType": this.Terrasoft.ViewItemType.GRID_LAYOUT,

                        "classes": {

                            "wrapClassName": ["profileContainer"]

                        },

                        "items": []

                    },

                    "parentName": "RightContainerTab",

                    "propertyName": "items",

                    "index": 9

                },

                /*SolutionLabel*/

                {

                    "operation": "insert",

                    "name": "SolutionCaptionProfile",

                    "parentName": "CaseProfile_gridLayout",

                    "propertyName": "items",

                    "values": {

                        "layout": {

                            "column": 16,

                            "row": 1,

                            "colSpan": 8,

                            "rowSpan": 1

                        },

                        "markerValue": "SolutionCaptionContainerProfile",

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "wrapClass": ["profile-estimate-caption-container"],

                        "items": []

                    }

                },

                {

                    "operation": "insert",

                    "name": "SolutionCaptionValueProfile",

                    "parentName": "SolutionCaptionProfile",

                    "propertyName": "items",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.LABEL,

                        "caption": {"bindTo": "getSolutionCaptionValue"},

                        "markerValue": "SolutionCaptionValueProfile",

                        "visible": {"bindTo": "isSolutionHourVisible"},

                        "labelClass": ["estimate-caption-label"],

                        "hint": {

                            "bindTo": "getSolutionCaptionHint"

                        }

                    }

                },

                //Right container contact communication detail

                {

                    "operation": "insert",

                    "parentName": "RightContainerTab",

                    "propertyName": "items",

                    "name": "ContactCommunication",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.DETAIL,

                        "visible": false

                    },

                    "index": 9

                },

                //Right container open cases detail

                {

                    "operation": "insert",

                    "name": "OpenCasesControlGroup",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.CONTROL_GROUP,

                        "items": [],

                        "caption": {

                            "bindTo": "Resources.Strings.OpenCasesControlGroupCaption"

                        },

                        "visible": false

                    },

                    "parentName": "RightContainerTab",

                    "propertyName": "items",

                    "index": 10

                },

                {

                    "operation": "insert",

                    "name": "OpenCasesDetail",

                    "parentName": "OpenCasesControlGroup",

                    "propertyName": "items",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.CONTAINER,

                        "visible": {"bindTo": "getRightTabsContainerVisible"},

                        "items": []

                    }

                },

                {

                    "operation": "insert",

                    "name": "OpenCasesTabs",

                    "parentName": "OpenCasesDetail",

                    "propertyName": "items",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.TAB_PANEL,

                        "activeTabChange": {"bindTo": "activeOpenCasesTabChange"},

                        "activeTabName": {"bindTo": "ActiveOpenCasesTabName"},

                        "classes": {"wrapClass": ["tab-panel-margin-bottom"]},

                        "collection": {"bindTo": "OpenCasesTabsCollection"},

                        "tabs": []

                    }

                },

                {

                    "operation": "insert",

                    "name": "ContactCasesTab",

                    "values": {

                        "caption": {

                            "bindTo": "Resources.Strings.ContactTabCaption"

                        },

                        "visible": {

                            "bindTo": "ContactOpenCasesTabVisibility"

                        },

                        "items": []

                    },

                    "parentName": "OpenCasesTabs",

                    "propertyName": "tabs",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "ContactCasesDetail",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.DETAIL

                    },

                    "parentName": "ContactCasesTab",

                    "propertyName": "items",

                    "index": 0

                },

                {

                    "operation": "insert",

                    "name": "AccountCasesTab",

                    "values": {

                        "caption": {

                            "bindTo": "Resources.Strings.AccountTabCaption"

                        },

                        "items": []

                    },

                    "parentName": "OpenCasesTabs",

                    "propertyName": "tabs",

                    "index": 1

                },

                {

                    "operation": "insert",

                    "name": "AccountCasesDetail",

                    "values": {

                        "itemType": this.Terrasoft.ViewItemType.DETAIL

                    },

                    "parentName": "AccountCasesTab",

                    "propertyName": "items",

                    "index": 0

                }

            ]/**SCHEMA_DIFF*/,

            methods: {

                /**

                 * Returns Case created on hint.

                 * @protected

                 * @returns {String}

                 */

                getSolutionCaptionHint: function() {

                    var prefix = this.getSolutionCaptionPrefix();

                    return prefix ? prefix.replace(":", "") : "";

                },

                /**

                 * Returns Case created on caption.

                 * @protected

                 * @returns {String}

                 */

                getSolutionCaptionValue: function() {

                    var prefix = "";

                    var day = this.getSolutionDateDay();

                    var minutes = this.getSolutionDateMinute();

                    return FormatUtils.getDateCaption(prefix, day, minutes);

                },

                /**

                 * Returns Case status.

                 * @protected

                 * @returns {String}

                 */

                getStatusValue: function() {

                    var status = this.get("Status");

                    return status ? status.displayValue : "";

                },

                /**

                 * Returns Case number.

                 * @protected

                 * @returns {String}

                 */

                getNumberValue: function() {

                    var number = this.get("Number");

                    return number ? number.replace("-", "") : "";

                },

                /**

                 * @inheritDoc BasePageV2#onCloseCardButtonClick

                 * @overridden

                 */

                onCloseCardButtonClick: function() {

                    this.hideBodyMask({

                        uniqueMaskId: "case"

                    });

                    this.callParent(arguments);

                },

                /**

                 * Checks need to change the owner and if so replace

                 * @param {Object} status The new status

                 */

                changeOwner: function(status) {

                    var isPortalUser = this.Terrasoft.CurrentUser.userType === this.Terrasoft.UserType.SSP;

                    if (status.value === ServiceDeskConstants.CaseState.InProgress && !isPortalUser) {

                        var owner = this.get("Owner");

                        var contact = this.Terrasoft.SysValue.CURRENT_USER_CONTACT;

                        if ((!owner) || (contact && owner && (owner.value !== contact.value))) {

                            this.set("Owner", contact);

                        }

                    }

                    if (status.value === ServiceDeskConstants.CaseState.Reopened) {

                        this.set("Owner", null);

                    }

                },

                /**

                 * Processing saving case after selecting menu item quick save button.

                 * @protected

                 * @param {Object} config Config menu

                 */

                saveCard: function(config) {

                    if (config.IsSetClosureCode && config.ClosureCode && !this.get("ClosureCode")) {

                        this.set("ClosureCode", config.ClosureCode);

                    }

                    var status = config.Status;

                    this.set("Status", status);

                    this.changeOwner(status);

                    this.set("IsCloseOnSave", config.IsCloseOnSave);

                    if (config.IsCloseOnSave) {

                        this.save();

                    } else {

                        this.save({

                            callback: this.Ext.emptyFn,

                            isSilent: true,

                            callBaseSilentSavedActions: true

                        });

                    }

                },

                /**

                 * Processing selecting menu item quick save button

                 * @protected

                 * @param {Object} config Config menu

                 */

                onResolvedButtonMenuClick: function(config) {

                    if (!config) {

                        var resolvedButtonMenuItems = this.get("ResolvedButtonMenuItems");

                        if (!resolvedButtonMenuItems.isEmpty()) {

                            config = resolvedButtonMenuItems.collection.items[0].values.Tag;

                        } else {

                            return;

                        }

                    }

                    var status = config.Status;

                    if (!status) {

                        return;

                    }

                    this.showBodyMask({

                        uniqueMaskId: "case"

                    });

                    this.asyncValidate(function(result) {

                        if (result.success) {

                            this.saveCard.call(this, config);

                        } else {

                            this.hideBodyMask({

                                uniqueMaskId: "case"

                            });

                            this.showInformationDialog(result.message);

                        }

                    }, this);

                },

                /**

                 * Initializes of initial values of model.

                 * @overridden

                 */

                init: function() {

                    this.statusDefSysSettingsName = "CaseStatusDef";

                    this.callParent(arguments);

                    this.initCollection();

                    this.set("ResolvedButtonMenuCaption", this.get("Resources.Strings.ResolvedButtonCaption"));

                },

                /**

                 * @inheritdoc BasePageV2#onDestroy

                 * @overridden

                 */

                onDestroy: function() {

                    this.hideBodyMask({

                        uniqueMaskId: "case"

                    });

                    this.callParent(arguments);

                },

                /**

                 * @inheritdoc BasePageV2#onRender

                 * @overridden

                 */

                onRender: function() {

                    this.callParent(arguments);

                    this.renderCaptionStyle();

                },

                /**

                 * @inheritdoc Terrasoft.BasePageV2#initTabs

                 * @overridden

                 */

                initTabs: function() {

                    this.callParent(arguments);

                    var defaultRightTabName = this.getDefaultOpenCasesTabName();

                    if (!defaultRightTabName) {

                        return;

                    }

                    this.setActiveOpenCasesTab(defaultRightTabName);

                    this.set(defaultRightTabName, true);

                    this.initCasePageMessages();

                },

                /**

                 * Initializes messages on page.

                 * @protected

                 */

                initCasePageMessages: function() {

                    var contactSubscriberId = this.sandbox.id + "_detail_ContactCasesDetailCase";

                    this.sandbox.subscribe("GetCaseIdOpenCaseDetail", function() {

                        return this.get("Id");

                    }, this, [contactSubscriberId]);

                    var accountSubscriberId = this.sandbox.id + "_detail_AccountCasesDetailCase";

                    this.sandbox.subscribe("GetCaseIdOpenCaseDetail", function() {

                        return this.get("Id");

                    }, this, [accountSubscriberId]);

                },

                /**

                 * Returns the first tab name of open cases.

                 * @protected

                 * @virtual

                 * @return {String} Name of first tab of open cases.

                 */

                getDefaultOpenCasesTabName: function() {

                    var tabsCollection = this.get("OpenCasesTabsCollection");

                    if (tabsCollection.isEmpty()) {

                        return "";

                    }

                    var firstTab = tabsCollection.getByIndex(0);

                    var defaultTabName = firstTab.get("Name");

                    return defaultTabName;

                },

                /**

                 * Sets open cases active tab.

                 * @protected

                 * @virtual

                 * @param {String} tabName Tab name.

                 */

                setActiveOpenCasesTab: function(tabName) {

                    this.set("ActiveOpenCasesTabName", tabName);

                },

                /**

                 * Open cases tab change event handler.

                 * @protected

                 * @virtual

                 * @param {Terrasoft.BaseViewModel} activeTab Active bab.

                 */

                activeOpenCasesTabChange: function(activeTab) {

                    var activeTabName = activeTab.get("Name");

                    var tabsCollection = this.get("OpenCasesTabsCollection");

                    tabsCollection.eachKey(function(tabName, tab) {

                        var tabContainerVisibleBinding = tab.get("Name");

                        this.set(tabContainerVisibleBinding, false);

                    }, this);

                    this.set(activeTabName, true);

                },

                /**

                 * @inheritdoc Terrasoft.LookupQuickAddMixin#checkRightsCallback

                 * @overridden

                 */

                extractValuePairsFromFilters: function(entitySchema, columnName, lookupFilters) {

                    if (columnName === "Contact") {

                        lookupFilters = this.Ext.create("Terrasoft.Collection");

                        this.set("Account", null);

                    }

                    this.callParent(arguments);

                },

                /**

                 * Contact change event handler.

                 * @protected

                 */

                onContactColumnChanged: function() {

                    var contact = this.get("Contact");

                    var subscriberId = this.sandbox.id + "_detail_ContactCasesDetailCase";

                    var updateConfig = {

                        masterRecordId: contact ? contact.value : this.Terrasoft.GUID_EMPTY,

                        reloadAll: true

                    };

                    this.sandbox.publish("UpdateOpenCaseDetail", updateConfig, [subscriberId]);

                    this.updateDetail({

                        detail: "ContactCommunication"

                    });

                },

                /**

                 * Account change event handler.

                 * @protected

                 */

                onAccountColumnChanged: function() {

                    var account = this.get("Account");

                    var subscriberId = this.sandbox.id + "_detail_AccountCasesDetailCase";

                    var updateConfig = {

                        masterRecordId: account,

                        reloadAll: true

                    };

                    this.sandbox.publish("UpdateOpenCaseDetail", updateConfig, [subscriberId]);

                },

                /**

                 * @inheritdoc Terrasoft.BasePageV2#onSaved

                 * @overridden

                 */

                onSaved: function() {

                    this.callParent(arguments);

                    var response = arguments[0];

                    this.hideBodyMask({

                        uniqueMaskId: "case"

                    });

                    if (response.success) {

                        if (this.get("IsCloseOnSave")&& !this.get("NextPrcElReady")) {

                            this.onCloseCardButtonClick();

                        } else {

                            var statusId = this.get("Status").value;

                            if (this.get("IsInChain") || this.sandbox.moduleName === "ProcessCardModuleV2") {

                                this.getResolvedButtonMenu.call(this, statusId);

                            } else {

                                this.sandbox.publish("UpdateResolvedButtonMenu", statusId,

                                    [this.sandbox.id]);

                            }

                        }

                    }

                },

                /**

                 * @inheritDoc Terrasoft.BaseSectionV2#subscribeSandboxEvents

                 * @overridden

                 */

                subscribeSandboxEvents: function() {

                    this.callParent(arguments);

                    var resolvedClickSubscriberId = this.sandbox.id;

                    this.sandbox.subscribe("OnResolvedButtonMenuClick", function() {

                        var tagMenuItem = arguments[0];

                        this.onResolvedButtonMenuClick(tagMenuItem);

                    }, this, [resolvedClickSubscriberId]);

                },

                /**

                 * @inheritDoc BasePageV2#onEntityInitialized

                 * @overridden

                 */

                onEntityInitialized: function() {

                    if (this.isAddMode() || this.isCopyMode()) {

                        this.setCaseNumber();

                        this.setPriorityImage();

                    }

                    this.Terrasoft.SysSettings.querySysSettingsItem(this.statusDefSysSettingsName, function(value) {

                        this.set("StatusDefSysSettingsValue", value);

                    }, this);

                    this.Terrasoft.SysSettings.querySysSettingsItem("CaseClosureCodeDef", function(value) {

                        this.set("DefCaseClosureCode", value);

                    }, this);

                    this.updateOriginals();

                    var contact = this.get("Contact");

                    if (contact && !this.get("Account")) {

                        var account = contact.Account;

                        if (account) {

                            this.set("Account", account);

                        }

                    }

                    this.set("PreviousStatus", this.get("Status"));

                    this.set("IsCategoryEnabled", this.isNew || !this.get("Category"));

                    this.callParent(arguments);

                    this.setDateDiff();

                    this.renderCaptionStyle();

                    var status = this.get("Status");

                    var statusId = status ? status.value : this.get("StatusDefSysSettingsValue");

                    this.getResolvedButtonMenu(statusId);

                    if (!this.isNewMode()) {

                        this.setControlsValue();

                    }

                },

                setPriorityImage: function() {

                    var priority = this.get("Priority");

                    if (!priority) {

                        return;

                    }

                    var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                        rootSchemaName: "CasePriority"

                    });

                    esq.addColumn("Image");

                    esq.filters.add("defaultPriorityFilter", this.Terrasoft.createColumnFilterWithParameter(

                        this.Terrasoft.ComparisonType.EQUAL, "Id", priority.value));

                    esq.getEntityCollection(function(result) {

                        if (!result.success) {

                            return;

                        }

                        var item = result.collection.getItems()[0];

                        if (!item) {

                            return;

                        }

                        var image = item.get("Image");

                        var updatedValue = {};

                        updatedValue.value = item.get("Id");

                        updatedValue.primaryImageValue = image.value;

                        this.set("Priority", updatedValue);

                    }, this);

                },

                /**

                 * Application and updating css-styles after rerendering component.

                 * @protected

                 * @virtual

                 */

                renderCaptionStyle: function() {

                    if (CasesEstimateLabel.isCaptionVisible(this)) {

                        CasesEstimateLabel.setCaptionStyle(this);

                    }

                },

                /**

                 * Solution Date change event handler.

                 * @protected

                 * @virtual

                 */

                onPlanedDateChanged: function() {

                    if (!this.get("Status")) {

                        return;

                    }

                    this.setDateDiff();

                    this.renderCaptionStyle();

                },

                /**

                 * Calculation the date difference for Response date and solution date.

                 * @protected

                 * @virtual

                 */

                setDateDiff: function() {

                    if (!CasesEstimateLabel.isCaptionVisible(this)) {

                        return;

                    }

                    CasesEstimateLabel.calculateDateDiff("SolutionDate", "SolutionDateCaption",

                        "IsSolutionOverdue", this);

                },

                /**

                 * Sets the date and time for Solution Date.

                 * @protected

                 * @returns {string} String line with the days and hours

                 */

                getSolutionDateDay: function() {

                    var isOverdue = this.get("IsSolutionOverdue");

                    return CasesEstimateLabel.setDayDiff("SolutionDateCaption", isOverdue, this);

                },

                /**

                 * Sets the minutes for Solution Date.

                 * @protected

                 * @returns {string} String line with the minutes

                 */

                getSolutionDateMinute: function() {

                    return CasesEstimateLabel.getDateMinute("SolutionDateCaption", this);

                },

                /**

                 * Display hours for Solution Date.

                 * @protected

                 * @returns {Boolean} Hours visibility flag

                 */

                isSolutionHourVisible: function() {

                    return (CasesEstimateLabel.isHourVisible("SolutionDateCaption", this) && this.isSolutionCaptionVisible());

                },

                /**

                 * Displays image from Solution Date.

                 * @protected

                 * @returns {Boolean} Timer image and solution caption visibility flag

                 */

                isSolutionTimerImageVisible: function() {

                    return (this.isTimerImageVisible() && this.isSolutionCaptionVisible());

                },

                /**

                 * Displays clock container.

                 * @protected

                 * @returns {Boolean} Timer image visibility flag

                 */

                isTimerImageVisible: function() {

                    var status = this.get("Status");

                    if (!status) {

                        return false;

                    }

                    return !(status.IsPaused || status.IsFinal || status.IsResolved);

                },

                /**

                 * Flag of Solution caption.

                 * @protected

                 * @returns {Boolean} Solution caption visibility flag

                 */

                isSolutionCaptionVisible: function() {

                    var CaseStatus = this.get("Status");

                    var solutionDate = CasesEstimateLabel.isSolutionDate(this);

                    return ((CasesEstimateLabel.isCaptionVisible(this) && solutionDate && CaseStatus &&

                    (!CaseStatus.IsFinal && !CaseStatus.IsResolved && !CaseStatus.IsPaused)) ||

                    (this.get("IsSolutionOverdue") && CasesEstimateLabel.isCaptionVisible(this) && solutionDate));

                },

                /**

                 * Gets prefix for Solution Date.

                 * @protected

                 * @returns {string} Solution caption

                 */

                getSolutionCaptionPrefix: function() {

                    return this.get("IsSolutionOverdue") ?

                        this.get("Resources.Strings.DelayHeaderCaptionSuffix") :

                        this.get("Resources.Strings.LeftHeaderCaptionSuffix");

                },

                /**

                 * @inheritDoc CasePageV2#getLookupQueryFilters

                 * @overridden

                 */

                getLookupQueryFilters: function(columnName) {

                    var parentColumnName = this.get("ParentColumnName");

                    var parentFilters = this.get(parentColumnName + "Filters");

                    var filterGroup = this.callParent([columnName]);

                    if (columnName === parentColumnName && parentFilters) {

                        filterGroup.add(parentFilters);

                    }

                    return filterGroup;

                },

                /**

                 * @inheritDoc CasePageV2#getLookupQuery

                 * @overridden

                 */

                getLookupQuery: function(filterValue, columnName, isLookup) {

                    var parentColumnName = this.get("ParentColumnName");

                    var parentFilters = this.get(parentColumnName + "Filters");

                    var prepareListColumnName = this.get("PrepareListColumnName");

                    var prepareListFilters = this.get(prepareListColumnName + "Filters");

                    var entitySchemaQuery = this.callParent([filterValue, columnName, isLookup]);

                    if (columnName === prepareListColumnName && prepareListFilters) {

                        entitySchemaQuery.filters.add(prepareListColumnName + "Filter", prepareListFilters);

                    }

                    if (columnName === parentColumnName && parentFilters) {

                        entitySchemaQuery.filters.add(parentColumnName + "Filter", parentFilters);

                    }

                    return entitySchemaQuery;

                },

                /**

                 * Updates information about initial object data.

                 * @protected

                 * @param {Boolean} isNull Cleaning flag of initial data

                 */

                updateOriginals: function(isNull) {

                    var status = isNull ? null : this.get("Status");

                    this.set("OriginalStatus", status);

                    if (status) {

                        this.set("IsOriginalStatusPaused", status.IsPaused);

                    }

                    this.set("OriginalSolutionProvidedOn", isNull ? null : this.get("SolutionProvidedOn"));

                },

                /**

                 * Sets the Number of Case.

                 * @protected

                 */

                setCaseNumber: function() {

                    this.getIncrementCode(function(response) {

                        this.set("Number", response);

                    });

                },

                /**

                 * Non-empty field check for "Contact" and "Account".

                 * @param {Function} callback

                 * @param {Terrasoft.BaseSchemaViewModel} scope Execution context of callback-function

                 */

                validateAccountOrContactFilling: function(callback, scope) {

                    var account = this.get("Account");

                    var contact = this.get("Contact");

                    var result = {

                        success: true

                    };

                    if (this.Ext.isEmpty(account) && this.Ext.isEmpty(contact)) {

                        result.message = this.get("Resources.Strings.RequiredContactOrAccountMessage");

                        result.success = false;

                    }

                    callback.call(scope || this, result);

                },

                /**

                 * The handler that checks whether the status is resolved.

                 * @protected

                 * @virtual

                 * @param {Object} status Case status

                 */

                handleResolvedStatus: function(status) {

                    if (status.IsResolved) {

                        if (!this.get("SolutionProvidedOn")) {

                            this.set("SolutionProvidedOn", new Date());

                        }

                        if (!this.get("FirstSolutionProvidedOn")) {

                            this.set("FirstSolutionProvidedOn", new Date());

                        }

                    }

                },

                /**

                 * Clears "SolutionProvidedOn" if the status has been changes from "IsResolved" to not "IsFinal".

                 * @param {Object} status Case status

                 */

                clearSolutionProvidedOn: function(status) {

                    var previousStatus = this.get("PreviousStatus");

                    if (!status.IsFinal && previousStatus.IsResolved && this.get("SolutionProvidedOn")) {

                        this.set("SolutionProvidedOn", 0);

                    }

                },

                /**

                 * The handler that checks whether the status "IsFinal".

                 * If the status is final, sets "ClosureDate" and "ClosureCode".

                 * @param {Object} status Case status

                 */

                handleFinalStatus: function(status) {

                    if (status.IsFinal && !this.get("ClosureDate")) {

                        this.set("ClosureDate", new Date());

                        if (this.get("OriginalSolutionProvidedOn")) {

                            this.set("SolutionProvidedOn", this.get("OriginalSolutionProvidedOn"));

                        }

                        if (!this.get("ClosureCode")) {

                            this.set("ClosureCode", this.get("DefCaseClosureCode"));

                        }

                    } else {

                        this.set("ClosureDate", null);

                        this.set("ClosureCode", null);

                    }

                },

                /**

                 * "Status" change event handler.

                 * Changing the status from initial status to any other, sets the "RespondedOn" field by current date and time.

                 * @protected

                 */

                onStatusChanged: function() {

                    var status = this.get("Status");

                    if (!status) {

                        return;

                    }

                    if (this.isStatusDef() === false && !this.get("RespondedOn")) {

                        this.set("RespondedOn", new Date());

                    }

                    var originalStatus = this.get("OriginalStatus");

                    if (!originalStatus) {

                        return;

                    }

                    if (this.isNew || originalStatus !== status) {

                        this.handleFinalStatus(status);

                        this.handleResolvedStatus(status);

                        this.handlePausedStatus(status);

                    }

                    this.clearSolutionProvidedOn(status);

                    this.set("PreviousStatus", status);

                },

                /**

                 * The handler that checks whether the status is equal to "IsPaused".

                 * If the is "IsPaused", status is cleared

                 * @param {Object} status Case status

                 */

                handlePausedStatus: this.Terrasoft.emptyFn,

                /**

                 * Checks whether the field "RespondedOn" is not empty or it has been changed.

                 * @protected

                 * @returns {Boolean} RespondedOn updating flag

                 */

                needUpdateRespondedOn: function() {

                    return this.get("RespondedOn") && this.changedValues && this.changedValues.RespondedOn;

                },

                /**

                 * Checks whether the field "SolutionProvidedOn" is not empty or it has been changed.

                 * @protected

                 * @returns {Boolean} SolutionProvidedOn updating flag

                 */

                needUpdateSolutionProvidedOn: function() {

                    return this.get("SolutionProvidedOn") && this.changedValues && this.changedValues.SolutionProvidedOn;

                },

                /**

                 * Checks whether the field "FirstSolutionProvidedOn" is not empty or it has been changed.

                 * @protected

                 * @returns {Boolean} FirstSolutionProvidedOn updating flag

                 */

                needUpdateFirstSolutionProvidedOn: function() {

                    return this.get("FirstSolutionProvidedOn") && this.changedValues && this.changedValues.FirstSolutionProvidedOn;

                },

                /**

                 * Checks whether "Status" column value and system settings "StatusDefSysSettingsValue" value are equal.

                 * @protected

                 * @returns {Boolean} Default status flag

                 */

                isStatusDef: function() {

                    var status = this.get("Status");

                    var statusDefSysSettingsValue = this.get("StatusDefSysSettingsValue");

                    if (!status || !statusDefSysSettingsValue) {

                        return;

                    }

                    return statusDefSysSettingsValue.value === status.value;

                },

                /**

                 * Fills the field of duplicate controls.

                 * @protected

                 */

                setControlsValue: function() {

                    var category = this.get("Category");

                    var origin = this.get("Origin");

                    var priority = this.get("Priority");

                    if (category) {

                        this.set("ParametersCategory", category);

                    }

                    if (origin) {

                        this.set("ParametersOrigin", origin);

                    }

                    if (priority) {

                        this.set("ParametersPriority", priority);

                    }

                },

                /**

                 * Forms the case date of creation.

                 * @protected

                 * @virtual

                 * @return {String} Case date of creation.

                 */

                getCreatedOnDate: function() {

                    var createdOn = this.get("CreatedOn");

                    var caption = this.get("Resources.Strings.CreatedOnCaption") + " ";

                    return createdOn ? caption + FormatUtils.smartFormatDate(createdOn) : "";

                },

                /**

                 * Checks the rights, validates values, saves values

                 * If necessary, recalculates the value of the "RespondedOn" before saving

                 * @protected

                 * @virtual

                 */

                save: function() {

                    if (this.needUpdateRespondedOn()) {

                        this.set("RespondedOn", new Date());

                    }

                    if (this.needUpdateSolutionProvidedOn()) {

                        this.set("SolutionProvidedOn", new Date());

                    }

                    if (this.needUpdateFirstSolutionProvidedOn()) {

                        this.set("FirstSolutionProvidedOn", new Date());

                    }

                    var solutionRemainsSetter = this.get("SolutionRemainsSetter");

                    if (solutionRemainsSetter) {

                        this.set("SolutionRemains", solutionRemainsSetter);

                    } else {

                        this.set("SolutionRemains", 0);

                    }

                    this.set("IsCategoryEnabled", this.isNew || !this.get("Category"));

                    this.updateOriginals();

                    this.callParent(arguments);

                },

                /**

                 * @inheritDoc CasePageV2#asyncValidate

                 * @overridden

                 */

                asyncValidate: function(callback, scope) {

                    this.callParent([function(response) {

                        var chainCheckResponse = function(next) {

                            if (!this.response.success) {

                                this.callback.call(this.scope, this.response);

                            } else {

                                next();

                            }

                        };

                        var chainValidateAccountOrContact = function(next) {

                            var self = this;

                            this.scope.validateAccountOrContactFilling(function(response) {

                                self.response = response;

                                next();

                            }, this.scope);

                        };

                        var chainInvokeCallback = function() {

                            this.callback.call(this.scope, this.response);

                        };

                        var chainScope = {

                            scope: scope || this,

                            response: response,

                            callback: callback

                        };

                        this.Terrasoft.chain(chainCheckResponse, chainValidateAccountOrContact, chainInvokeCallback, chainScope);

                    }, this]);

                },

                /**

                 * @inheritDoc CasePageV2#onGridRowChanged

                 * @overridden

                 */

                onGridRowChanged: function() {

                    var result = this.callParent(arguments);

                    this.updateOriginals(true);

                    return result;

                },

                /**

                 * Sets context help identifier.

                 * @protected

                 */

                initContextHelp: function() {

                    this.set("ContextHelpId", 1063);

                    this.callParent(arguments);

                },

                /**

                 * Sets priority field caption.

                 * @protected

                 * @param {Object} item Selected list

                 */

                setPriorityField: function(item) {

                    item.displayValue = "";

                }

            },

            rules: {

                "Contact": {

                    "FiltrationContactByAccount": {

                        "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,

                        "autocomplete": true,

                        "autoClean": true,

                        "baseAttributePatch": "Account",

                        "comparisonType": this.Terrasoft.ComparisonType.EQUAL,

                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,

                        "attribute": "Account"

                    }

                },

                "ClosureCode": {

                    "EnableClosureCodeOnFinalState": {

                        ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,

                        property: BusinessRuleModule.enums.Property.ENABLED,

                        conditions: [

                            {

                                leftExpression: {

                                    type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,

                                    attribute: "Status",

                                    attributePath: "IsFinal"

                                },

                                comparisonType: this.Terrasoft.ComparisonType.EQUAL,

                                rightExpression: {

                                    type: BusinessRuleModule.enums.ValueType.CONSTANT,

                                    value: true

                                }

                            },

                            {

                                leftExpression: {

                                    type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,

                                    attribute: "Status",

                                    attributePath: "IsResolved"

                                },

                                comparisonType: this.Terrasoft.ComparisonType.EQUAL,

                                rightExpression: {

                                    type: BusinessRuleModule.enums.ValueType.CONSTANT,

                                    value: true

                                }

                            }

                        ]

                    },

                    "RequireClosureCodeOnFinalState": {

                        ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,

                        property: BusinessRuleModule.enums.Property.REQUIRED,

                        conditions: [{

                            leftExpression: {

                                type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,

                                attribute: "Status",

                                attributePath: "IsFinal"

                            },

                            comparisonType: this.Terrasoft.ComparisonType.EQUAL,

                            rightExpression: {

                                type: BusinessRuleModule.enums.ValueType.CONSTANT,

                                value: true

                            }

                        }]

                    }

                },

                "ClosureDate": {

                    "EnableClosureDateOnFinalState": {

                        ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,

                        property: BusinessRuleModule.enums.Property.ENABLED,

                        conditions: [{

                            leftExpression: {

                                type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,

                                attribute: "Status",

                                attributePath: "IsFinal"

                            },

                            comparisonType: this.Terrasoft.ComparisonType.EQUAL,

                            rightExpression: {

                                type: BusinessRuleModule.enums.ValueType.CONSTANT,

                                value: true

                            }

                        }]

                    }

                }

            }

        };

    });

 

 

Dear Eric,

Do you have CasePageV2 already created in the Custom package? If yes, please share it. In case there is no schema in any of your custom packages (if you have more than one), are you setting up Cases section via Section Wizard for the first time? Have you ever saved Case page with Section Wizard?

Thank you in advance!

Anastasia Botezat,

I do have a CasePage one but no CasePageV2 in our unique Custom package.

Eric

Dear Eric,

As of an information provided, I can assume this is due to double insert of the "DeclarerCommentsDetail" element, as error says. Please take a look at all CasePageV2 schemas you find in the system for double-inserts.

Also, you can eliminate the possibility issue related to this field in the following way: Create a new replacing schema for CasePageV2 in Custom package. In the diff section remove the field:

{
"operation": "remove",
"name": "DeclarerCommentsDetail"
}

In this was you will remove extra insert and be able to open page.

In case any of the above won't help, please contact bpm'online support team. 

Regards,

Anastasia

Show all comments

Hi,

We'd like to hide/display section parts depending on functional roles.

Is there a way yo do that ?

Thanks

Eric

Like 0

Like

3 comments

Dear Eric,

Please check this topic: https://community.bpmonline.com/questions/hide-field-specific-user

best regards,

Lily

Lily Johnson,

So no way to define rules according to current user functional roles ?

Dear Eric,

You can set up only some permissions to the section columns as it is described on our academy: https://academy.bpmonline.com/documents/customer-center/7-11/columns-permissions-detail-object-permissions-section

In case you cannot achieve your goal with the help pf column permissions and business rules (https://academy.bpmonline.com/documents/service-enterprise/7-11/setting-business-rules) you can develop the additional logic but it is not easy. 

You need to create EntitySchemaQuery to select the data from the SysUser or SysAdminUnit tables (https://academy.bpmonline.com/documents/technic-sdk/7-11/use-entityschemaquery-implementation-client) and then implement business rules with the help of development tools: https://academy.bpmonline.com/documents/technic-sdk/7-11/setting-edit-page-fields-using-business-rules but we do not have any examples of such complex implementation.

Best regards,

Lily

Show all comments

Hi,

Is there any way to avoid having to logoff/login each time something is updated in a section or else, to see it operational in the application ?

Thanks in advance

Eric

Like 0

Like

2 comments

Hi Eric,

We have the suggestion to avoid logging out/in registered already and we will consider improving the functionality in the further releases.

Thank you for your feedback!

Dear Eric,

There is no need to log out of the system now. After you make the changes you just can refresh the page (without emptying the cache) and the changes will be applied.

Lisa

Show all comments

Hello!

I hope you can help me!

I want to hide the "Contact" button from the Quick Add Menu

How could I do this?

King Regards,

Ezequiel

Like 0

Like

1 comments

Hi,

There is the lookup called  Quick Add menu setup:

Image.png



You can apply the necessary changes there. Please note that you need to log out and back it for the changes to be applied. 

Show all comments

Hi all,

I ve an issue with Workspace console on a ninject extention library : 

Error: Could not load file or assembly 'file:///C:\BPMOnline\Build\PF1_DMS_Studio\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Ninject.Extensions.Factory.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)

 

The version is Studio v7.11.3.1715

Like 0

Like

4 comments
Best reply

Issue resolved.

For the benefit of other users... it was fixed by going on the DLL file properties and pressing Unblock.

Regards,

Artur

Please try adding the Ninject.Extensions.Factory.dll file into the package that you're trying to install. If it's not possible, please add the library to the target application.

Thanks for your reply. I removed the Ninject.Extensions.Factory.dll from the workspaceconole folder in order to solve this issue.

Hello,

I'm facing a similar issue when running WorkspaceConsole.exe, but I'm not being able to resolve it using any of the 2 methods above (adding External Assembly or removing Ninject.Extensions.Factory.dll file from the folder).

Any other suggestions?

 

Thanks,

Artur

Issue resolved.

For the benefit of other users... it was fixed by going on the DLL file properties and pressing Unblock.

Regards,

Artur

Show all comments

Is there any way to implement on a Detail Group when the user wants to Add a new record the option to choose between Add Existing & Add New?

Somethink Like when you want to add a user to a department/functional role, of course must be an add existin & add new options, I want to implemet the same on some of my details, but dont' know how

Some ideas, samples?

 

Thanks in advance

Like 0

Like

5 comments

 

I think this is is MUST BE on bpm'online, so to avoid data duplication, for example if you're on Accounts Module and want to add a Contact, always add a new one, if it existing, bpm'online don't care about this and create a duplicate record with the obvious problems. :-(

Dear Julio, please open the code of the UsersDetailV2 schema and find how to create the functionality. All of the code is in the schema so it won't be hard to find the solution.

The fact that the functionality is missing in bpm'online is a great opportunity for you as the partner. Please feel free to create a marketplace application that will provide the described functionality.

Hi all, some body had idea how to solve this? I understand it must be a MUST HAVE, what do you think?

Julio.Falcon_Nodos,

 

Hello Julio,

 

As was mentioned previously, such functionality cannot be achieved with basic system tools but with a help of additional development. 



We have registered a query for our responsible R&D team to consider implementing such functionality in the upcoming releases, but as of now there is no ETA. 

I will assign this case to mentioned project to increase it's priority. 



Best regards,

Anastasiia

Show all comments

Can I hide/unhide a detail fields group using business rule? If there is a way in page designer please share an example.

 

Thanks!

Like 0

Like

4 comments

Hi,

 In the current version there is no possibility to hide tab on a certain condition within user tools. Though it is already planned by our R&D team for further releases. For now it requires additional development. Please find a discussion which can be useful -  https://community.bpmonline.com/discussion/10833 There are the parts of the code that are used to make the detail visible for the certain group of users only, you can change it for the functionality to meet your needs. 

Lisa

Hi Lisa, 

That link does not lead anywhere. Could you please repost the photo for I am also interested in exploring this possibility.

 

 

Dear Philip,

Here is the link: https://community.bpmonline.com/questions/hide-detail-specific-user

Regards,

Lily

This feature is implemented in Creatio 7.16.3 release via business rules

Show all comments

How can I build a custom Radiobutton list/Checkbox list in BPM'Online Designer? Is there a way? I know you can use looksups to select a single item but I need something like a Radiobuttonlist or checkboxlist to select multiple items.

Appreciate your insight!

Like 0

Like

2 comments

Hello,

You can check the topic about multiselect within the lookup: https://community.bpmonline.com/search?search_api_fulltext=multiselect&field_tags=&sort_by=search_api_relevance

Maybe it can help you to achieve your goal.

Otherwise, you can set a few fields of boolean type one by one on the Section wizard page to make them checked/unchecked.

Please also examine the articles in our development guide regarding radio buttons: https://academy.bpmonline.com/documents/technic-sdk/7-11/controls-introduction

Best regards,

Lily

 

Thanks

Show all comments

Hi,

We do need to add a custom lookup field in a custom section to be created.

I created an object in the custom package using the same structure as an existing lookup object (AccountCategory).

The object has been saved and published correctly and i can't find it in the list of objects when i try to create a new lookup table.

Can't find any help in the online documentation.

Thanks in advance for your help.

Eric 

Like 0

Like

2 comments

Hello!



We generally recommend you to add new lookup field from the page designer deirectly. http://prntscr.com/iha3ti

This way the object will be registered automatically.

After that you can access the required lookup in the [Lookups] section and populate it with data. There you have to click New Lookup and  make sure you are entering the correct value for the Title or Name, while creating a new lookup table . 

In case you want to use the object you have created, please make sure that the parent object for the one you have registered is a [Base lookup] object and you are entering either the correct Title or the Name (the name generally contains a code Usr, if you have created the object in the Custom package).

Best regards,

Matt

 

Thanks

 

Show all comments

Hi all,

I try to retrieve a schema by its name (on the client side), I've seen it in the standard, just can't remember where it was ...

 

Like 0

Like

2 comments

Dear Jerome,

You can find the schema by the name in the configuration (System Designer -> Advanced settings -> Configuration). Please note that there may be a few schemas with the same name belonging to different packages. The schemas with the user customization are placed in the Custom package and if there is no schema in that package you'll need to create it to be able to apply any changes. 

Lisa

Sorry, I mean by script. Not on the UI.

Something like .EntitySchemaManager.GetInstanceByName("SysSchema") in C#

Show all comments