Hi community!

How are you?

I hope you can help me!

How could you add a record totalizer in a detail?

The following image shows what I need

Something similar to what there is at the section level...

King Regards!

 

Ezequiel

Like 0

Like

2 comments

Dear Ezequiel,

The following functionality cannot be achieved with the help of the user tools. In case you want to develop this feature you can inspect it in the section for the example of the implementation.

Moreover, in case you do not want to implement such functionality yourself you can contact your account manager in order to get some help.

Warm regards,

Matt

Hi Ezequiel, you can install from marketplace (there're  lot of free usefull app/templates) the app to do waht you need, please see https://marketplace.bpmonline.com/app/detail-summaries-bpmonline

Enjoy It,

Julio Falcón

Show all comments

Hello,

When a new contact is created, we need the Contact's address to be defaulted to its Account's address when the Contact page loads. How can this be done?

Like 0

Like

3 comments

Dear Allen,

The easiest way to achieve your goal is by creating a business process. Please use the example below and feel free to modify it in the way you need.

Best regards,

Lily

Lily Johnson,

Hi Lily and Allen,

I implemented a similar solution for a client and it worked really well on version 7.12.3. However, client´s environment were updated tonight and on version Version 7.12.4.924, the page doesn´t load (neither refresh) when the process is getting the default values.

However, if I close the record and reopen it, the values were properly entered.

Any thoughts?

Thanks.

Danilo Lage,

Hello! Can you please send an email to support@bpmonline.com with detailed description of this case? We'll be glad to help!

Best regards,

Angela

Show all comments

Hi everyone!

How are you? I hope you can help me!

I want hide the "Search Contact" option of the Command Line

How can I do this? I attached image

Regards!

Like 0

Like

3 comments

It's possible only by c# development. If you need to avoid users from seeing contacts, you can set that up in the "object permissions" section.

Hi Eugene!

how are you?

Thanks for your answer!

How can i do this by c# development?

I can not restrict access because internally by code I use contact data. If I restrict access, I could not work with that data

King Regards

 

Ezequiel

The functionalify is in the getDefaultCList method in the CommandLineModule schema. It's a base schema and you'll not be able to override it in a way that we use for overriding pages and sections. Please investigate the base documentation of Ext.js and find a way on how to change the method. https://www.sencha.com/products/extjs/

Show all comments

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

Hello,

How can the Attachment detail on an Account record be customized to include other columns(like CreatedOn & CreatedBy) from the Attachment object? Currently only the file name is displayed.

Thank you

Like 0

Like

3 comments

Dear Allen,

You can find the example of the implementation in the academy article below:

https://academy.bpmonline.com/documents/technic-sdk/7-11/displaying-additional-columns-attachments-tab

Warm regards,

Matt

Thanks Matt! The columns are available after the implementing the customization. However the columns are not sortable. Is there a way to make the column headers trigger the sort operation when they are clicked on?

Dear Allen,

The following detail cannot be sorted out of the box due to its nature, it is not meant to store a large number of files initially. We recommend you to inspect the details, where the sorting is present and recreate the behavior in your detail, if it is required. Also, you can check one of the many marketplace applications that allow you to work with files more efficiently.

Warm regards,

Matt

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
Question

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
Question

Hello everybody,

I'm currently developing a c# class called by a script task from a process.

It works fine but i want to log any messages. I don't want to log in classic log file but in data table like AuditLog in order to see them from administration... 

How can i do that?

Thanks in advance

Davyd

Like 0

Like

2 comments

Hi Davyd. You can create a new object based on "base object". Then add a new text250 field and specify the field as a primary display value (advanced settings in the object). Publish the object. Then create a new lookup in a "Lookups" section based on the new object. Check that you can add and delete data into the lookup.

Then use ESQ to write log messages into the object. 

https://academy.bpmonline.com/documents/technic-sdk/7-11/crud-operation…

You'll see the messages in the lookup. 

Thanks! I'm going to do that!

 

Show all comments
Question

How to active the enrich data function on the accounts when the solution is used on premise ?

Thanks

Like 0

Like

2 comments

Dear Eric,

Here are the instructions on how to set up account enrichment on-site: https://academy.bpmonline.com/documents/service-enterprise/7-11/setting-additional-parameters-and-integrations#HT_specs_accounts_data_enrichment_setup

Please scroll down to 'How to set up data enrichment'

Best regards,

Lily

 

Thanks Lily.

Show all comments