How can I change the currency symbol displayed in dashboard ?

I just configured to Euro the Base currency settings, but it has no effect.

Like 0

Like

2 comments

Dear Stefano,

 

In order to change the dollar sign to the euro please navigate to the metric dashboard settings, click on the "How to display" tab:

 

After that please press the "Format" record and insert the euro sign in front of the {} brackets (so when you save it would look like this: €{0}).

You may see the result in the screenshot below.

Regards,

Danyil

Thank you Danyil!

Show all comments

Dear,

On an account page, in the tab "Associated with", our users got the error:

"The value of the AUM column cannot be obtained because it has not been loaded."

For my part, with a supervisor account, i don't have the error.

Does anybody as an idea to solve this issue ?

Thank you,

Nicolas

 

 

Like 1

Like

1 comments

Solved, rights have been put on the column

i remove the rights and it is ok

Show all comments

Hi-

So I made a script to pull data from the SQL log. I need to get that data to a local file. I started to set it on a timer- but then was at a loss on how to move the process any further. 

Any ideas out there? 

Like 0

Like

1 comments

Dear Heather,

 

So you made the script that takes the logs from the website database server through Creatio?  Could you please explain your business task? 

As far as I understand, your user need to have DB admin rights to get the SQL server logs to call for them through Creatio DB. But what is the purpose of getting logs trough Creatio, if your DB user already has admin rights to get them from DB server?  If you want to implement it to cloud instance, unfortunately you will not be able get the logs due to lack of rights. 

So this is how I understood your idea of getting logs. If I understood you incorrectly, could you please give some more details on your task so that I could think of some solution?

Thank you.

 

Regards,

Dean

Show all comments

Hi Community,

 

I am running a configuration service from client side inside onEntityInitialized() method using ServiceHelper.callService. How can I run the configuration service in the background mode? I just notice, client side page freezes until such time execution is done. I want client side to be responsive while configuration service is running

 

Thanks 

Like 0

Like

2 comments

Hi Fulgen,

Using ServiceHelper.callService *is* asynchronous - you can test this by placing a line if code after the call and it should reach that line before the service returns. Could it be that something else is blocking?

Ryan

Ryan Farley,

 

Hi Ryan, thanks for your reply, lookup fields data and details data will not load until such time configuration service execution is done. Any idea how can I fix this?

Show all comments

Dear Community,

 

This article shows us how to create a detail with an editable list.

The next step for us is to add an option to open this record like how you can open a page in the City lookup: https://prnt.sc/x79h2l

How do we add this functionality? 

 

Thank you in advance!

 

Kind regards,

Yosef

Like 0

Like

3 comments
Best reply

Hello Yosef,

I have an article outlining how to do this here https://customerfx.com/article/adding-an-edit-button-to-the-selected-ro…

Hope this helps. 

Ryan

Hello Yosef,

I have an article outlining how to do this here https://customerfx.com/article/adding-an-edit-button-to-the-selected-ro…

Hope this helps. 

Ryan

Ryan Farley,

Works like a charm!

I do however recommend adding the following for consistency:

{
  "className": "Terrasoft.Button",
  "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
  "tag": "edit",
  "markerValue": "edit",
  "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
},

This way you get the same icon as the other details.

 

Kind regards,

Yosef

Yosef,

That is true, I do have that in the article as well (it's at the end of the article), however at the time I was doing this for a system where they wanted the "edit" action more obvious to users. However, for consistency with the rest of Creatio, I'd go the route of using the icon as well.

Glad it worked for you.

Ryan

Show all comments

Is there a declarative way to display fields from a lookup on an entity's edit page? For example, if I have a Contact record whose Owner field is set and I want to display the Owner's Job Title as a read-only field on the Contact's edit page, is it possible to do without adding some code to the onEntityInitialized method to manually set another attribute which a field is based on to the value of the Job Title field? I can load the field with the record using lookupListConfig as below, but any way I try to specify that this field should be displayed on the page results in errors or nothing happening:

    attributes: {
        "Owner": {
            lookupListConfig: {
                columns: ["JobTitle"]
            }
        }
    }
// ...
    diff: [
        // example of one attempted method to add the lookup field which doesn't work:
        {
            "operation": "insert",
            "parentName": "ContactGeneralInfoBlock",
            "propertyName": "items",
            "name": "OwnerJobTitle",
            "values": {
                "bindTo": "Owner.JobTitle",
                "layout": {
                    "column": 0,
                    "row": 4,
                    "colSpan": 12
                },
                "enabled": false
            }
        }
    ]

 

Obviously as mentioned this could be done using code, but if it's possible to do declaratively that would definitely be my preferred option - is this possible?

Like 0

Like

4 comments

I don't know of a declarative way to do this. You'd need this in a few parts:

  1. Add some text virtual attributes to the page and then add those to the diff as readonly
  2. Populate those attributes when a lookup item is selected which could be done by adding the columns to the lookupListConfig columns. You'd need to wire up a change attribute for the lookup to retrieve those values and populate the attributes.
  3. onEntityInitialized you'd need to retrieve those values using an ESQ to populate the virtual attributes again.

Ryan

As a side comment, I'd love to be able to declaratively add fields like this, the system could just make them read-only if they are on a connected entity. That would be fantastic.

Hi Ryan, thanks for the reply. Yeah, I have a way to populate the fields in code, but I was just wondering if there was a declarative way to do so - as you say, it would be a great addition to Creatio and I hoped I was just missing something already there!

 

For anyone else searching for this, my solution slightly differed from yours in using the lookupListConfig to pull the lookup entity's additional field(s) when loading the record, which means you don't have to run an additional ESQ, which saves hits on the DB. It also uses the dependencies attribute rather than the change attribute, but that's just my personal preference as I believe they'd work the same:

 

    attributes: {
        "Owner": {
            lookupListConfig: {
                columns: ["JobTitle"]
            }
        },
        "OwnerJobTitle": {
            type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
            dataValueType: Terrasoft.DataValueType.TEXT,
            dependencies: [
                {
                    columns: ["Owner"],
                    methodName: "setPickMapFields"
                }
            ]
        }
    },
    methods: {
        onEntityInitialized: function() {
            this.callParent(arguments);
            this.setPickMapFields();
        },
 
        setPickMapFields: function() {
            const owner = this.get("Owner");
            if(owner) {
                this.set("OwnerJobTitle", owner.JobTitle.displayValue);
            } else {
                this.set("OwnerJobTitle", null);
            }
        }
    },
    diff: [
        {
            "operation": "insert",
            "parentName": "ContactGeneralInfoBlock",
            "propertyName": "items",
            "name": "OwnerJobTitle",
            "values": {
                "bindTo": "OwnerJobTitle",
                "layout": {
                    "column": 0,
                    "row": 4,
                    "colSpan": 12
                },
                "enabled": false
            }
        }
    ]

 

Does the job, but it does lack the clarity that a declarative system would provide!

Harvey Adcock,

That's great Harvey, thanks for the update. I was under the impression that adding columns to the lookupListConfig would only load them on selection, great to know that those come along when the lookup data is loaded as well!

Ryan

Show all comments

Hi Community,

 

I have seen the DataServices, OData 4 & OData3 which allow third-party tools to perform CRUD operations in Creatio using AuthService form authentication.

 

I want to know If there is any service like above which have OAuth 2 implemented so that instead of AuthService authentication, third-party tools can use OAuth 2 authentication with Creatio?

Like 0

Like

2 comments

Hi Akshit, 

 

Please check the link below to get some general information about integration with OAuth :

 

https://academy.creatio.com/docs/user/no-code_customization/web_service…

 

And also the particular example of integration with Office 365 :

 

https://academy.creatio.com/docs/user/setup_and_administration/base_int…

 

Best Regards, 

 

Bogdan L.

You can find some info for setup oauth environment here Set up OAuth 2.0 authorization for integrated applications | Creatio Academy

Show all comments

Is there any way to apply multiple sorting rules on section page? 

 

For example, on case page I need to sort the list by priority first if the priority is same then, apply the status rule. 

 

One more thing I want to apply this rule as by Default so every time any user visit case section page, the user by default sees the list in given as above manner. 

 

If anyone has any information regarding the same do let me know.

Like 1

Like

1 comments

Hi Meet,

 

Not sure it's possible in the current Creatio logic since here is the part of DataGrid object declaration from the BaseDataView schema:

"operation": "insert",
                "name": "DataGrid",
                     ...........
                    "sortColumn": {"bindTo": "sortColumn"},
                    "sortColumnDirection": {"bindTo": "GridSortDirection"},
                    "sortColumnIndex": {"bindTo": "SortColumnIndex"},

As we can see there are three main parameters that are responsible for grid sorting: sortColumn, sortColumnDirection and sortColumnIndex. Each of them calls either the sortColumn function or changeSorting function from the GridUtilitiesV2 schema where the value is set for these attributes. And the problem is that these functions can only get one column as an argument.

 

Overriding this logic won't be an easy task since there are two functions and the DataGrid object that should be modified. Our core R&D team has a problem registered on their end to make it possible to sort the grid using several columns and this idea is added to the system functionality improvement roadmap. So it's better to wait until the out-of-the-box solution is deployed and tested.

 

Best regards,

Oscar

Show all comments

Hello Community, 

 

I have requirements to show How much time has passed till case has been registered in the system. 

 

But the real catch is, the information I have to show on Section list like shown as below.

Here I want to add Passed time column near Resolution time. 

Passed time is time passed till registration of Case. 

 

And also, I want to do same on Dashboard’s list view.

Like 0

Like

1 comments

Hello Meet,

 

Here is an example of how I did it on my side:

 

1) Create a button in the CaseSection schema:

{
					"operation": "insert",
					"name": "CustomButtonContainer",
					"parentName": "ActionButtonsContainer",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						"items": []
					}
 
				},
				{
					"operation":"insert",
					"name": "RecalculateTimeSpent",
					"parentName": "CustomButtonContainer",
					"propertyName": "items",
					"values": {
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": {bindTo: "Resources.Strings.RecalculateTimeSpentButtonCaption"},
						"click": {bindTo: "updateCaseTimePassed"},
						"style": Terrasoft.controls.ButtonEnums.style.RED
					}
				}

As a result the button will appear in the section:

Also don't forget to add the localizable value with "RecalculateTimeSpentButtonCaption" caption.

 

2) Create a string column in the "Case" object with "UsrTimePassedFromCreation" code and Text (250 characters) data type. Save and publish the object.

 

3) Display this created string column in the "Cases" section.

 

4) Add these methods to the CaseSection schema:

updateCaseTimePassed: function(){
				const today = new Date();
				for (let i = 0; i<this.get("GridData").collection.items.length;i++){
					let recordId = this.get("GridData").collection.items[i].values.Id;
    				let result = (today - this.get("GridData").get(recordId).get("CreatedOn")).toString(); //ms
					let diffDays = Math.floor(result / 86400000); //days
					let diffHrs = Math.floor((result % 86400000) / 3600000); // hours
					let diffMins = Math.round(((result % 86400000) % 3600000) / 60000); // minutes
					let resultMessage = diffDays + " days " + diffHrs + " hours " + diffMins + " minutes";
					let updateQuery = Ext.create("Terrasoft.UpdateQuery", {
							rootSchemaName: "Case"
						});
						let filters = updateQuery.filters;
						let caseIdFilter = updateQuery.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
								"Id", recordId);
						filters.add("caseIdFilter", caseIdFilter);
						updateQuery.setParameterValue("UsrTimePassedFromCreation", resultMessage, Terrasoft.DataValueType.TEXT);
						updateQuery.execute();
				}
				this.sleep(2000);
				this.updateSection();
			},
			sleep: function(milliseconds) {
  				const date = Date.now();
  				let currentDate = null;
  					do {
    					currentDate = Date.now();
  					} while (currentDate - date < milliseconds);
			}

5) Refresh the page and check the result - the values should populate for all records in the grid upon clicking the added button:

So you will periodically need to click the button to update information on the case time spent. Also you can add additional check for the case status so not to update records that are in "Resolved" or "Closed" status or you can build a filter with cases that are in the "In progress" status and use the button on them only.

 

Also please note that since the data is updated in the database directly you will see the same data in any dashboard representing cases.

 

Best regards,

Oscar

Show all comments
Question

Dear all,

Is it possibile to set record author when it is imported? 

Like 0

Like

1 comments

Dear all,

 

I think I found the solution to my problem.

The owner field of the account entity is the author of the record

Can you confirm is it the right way ?

Show all comments