Hi Community,



I'm hoping to add conditional formatting to a lookup field on an edit page (UsrColour).



UsrColour lookup = Id (Guid), Name (String), Hex (String).

 

Ideally, I'd like the colour to change based on the lookup value and for the colour to come from the Hex field in the Colour lookup. Alternatively, hard coding the colours into the page code would be an acceptable alternative.



I can format the field using the article below but not conditionally:

Adding Custom CSS Style Sheets in Creatio (formerly bpm’online) | Customer FX

 

Any assistance would be greatly appreciated.

Like 0

Like

2 comments
Best reply

hi Cristopher Montgomery,



This thread helps to add the custom CSS on condition based.

Please check this Custom CSS for a field/label based on Condition .



BR,

Bhoobalan Palanivelu.

hi Cristopher Montgomery,



This thread helps to add the custom CSS on condition based.

Please check this Custom CSS for a field/label based on Condition .



BR,

Bhoobalan Palanivelu.

Exactly what I need. Much appreciated.

Show all comments

Hi,

 

I need to filter contact list that is displayed when logging a call activity through Section Actions Dashboard. Below is the code I have added for the same:

1. Replaced CallMessagePublisherPage

 define("CallMessagePublisherPage", ["ConfigurationConstants"],
	function(ConfigurationConstants) {
		return {
			entitySchemaName: "Activity",
			mixins: {},
			attributes: {
				"Contact": {
					"lookupListConfig": {
						"columns": ["Account"],
						"filters": [
							function() {
									var config = this.getListenerRecordData();
									var additionalInfo = config.additionalInfo;
									var account=additionalInfo.account.value;
									var filterGroup = Ext.create("Terrasoft.FilterGroup");
									if(account){
									filterGroup.add("ContactFilter",
										Terrasoft.createColumnFilterWithParameter(
											Terrasoft.ComparisonType.EQUAL,
											"Account",
											account,
											Terrasoft.DataValueType.LOOKUP)
											);
									}
									return filterGroup;
							}
							]
					}
				}
			},
			methods: {
						setDefaultCallDirection: function() {
							var query = this.Ext.create("Terrasoft.EntitySchemaQuery", {
								rootSchemaName: "CallDirection"
							});
							query.addColumn("Name");
							var recordId = ConfigurationConstants.Activity.ActivityCallDirection.Outgoing;
							query.getEntity(recordId, function(result) {
								this.setDefaultCallDirectionQueryHandler(result);
							}, this);
						}
					},
			diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
		};
	}
);

 

2. Replaced SectionActionsDashboard

  define("SectionActionsDashboard", ["SectionActionsDashboardResources"], function(resources) {
    return {
        methods: {
				onGetRecordInfoForPublisher: function() {
					var info = this.callParent(arguments);
					info.additionalInfo.account = this.getAccountEntityParameterValue(info.relationSchemaName);
					return info;
				},
				getAccountEntityParameterValue:function(relationSchemaName){
					switch(relationSchemaName){
						case "Lead":
							return this.getMasterEntityParameterValue("QualifiedAccount");
						case "Contact":
						case "Opportunity":
						case "Order":
							return this.getMasterEntityParameterValue("Account");
						case "Account":
							return {"value":this.getMasterEntityParameterValue("Id")};
						default:
							return {};
					}
 
				}
		}
    };
});

With above code, I get the below result in Account section when I open the window to select contact.

Above is the expected result. But when typing in the name on the lookup field instead of opening the selection window all contacts that match the text are displayed(not filtered by Account)

Any idea how to apply the same filter when pulling the list by typing in the lookup field?

 

Like 0

Like

3 comments
Best reply

Hi,

 

Please also add the following method to the CallMessagePublisherPage:

getLookupQuery: function(filterValue, columnName) {
					var esq = this.callParent(arguments);
					var filterGroup = this.getLookupQueryFilters(columnName);
					esq.filters.addItem(filterGroup);
					return esq;
				},

and refresh the page after that. This should result in the needed filtration in the list view of the lookup.

Hi,

 

Please also add the following method to the CallMessagePublisherPage:

getLookupQuery: function(filterValue, columnName) {
					var esq = this.callParent(arguments);
					var filterGroup = this.getLookupQueryFilters(columnName);
					esq.filters.addItem(filterGroup);
					return esq;
				},

and refresh the page after that. This should result in the needed filtration in the list view of the lookup.

That works, thank you!

Hello everyone. Thanks for the article, it was very helpful. Perhaps you can tell me how to filter the list of emails address via Account? That is displayed when registering email sending activity via the Section Actions toolbar? Thanks!

Show all comments

Hello Community,

 

I want to add a custom upload icon to the attachments on Freedom UI pages. It seems the default icons given were from angular material (mat-icon). Is there a way to add a custom icon ?

Thanks in Advance!

 

Regards

Pavan Manne

Like 1

Like

3 comments
Best reply

Hello,



There is no such opportunity. We've registered it in our R&D team backlog for consideration and implementation in future application releases.

 

Thank you for helping us to improve our product. 

Hello,



There is no such opportunity. We've registered it in our R&D team backlog for consideration and implementation in future application releases.

 

Thank you for helping us to improve our product. 

Hello Bogdan,

 

Any update on this case?

Pavan Manne,

Hello,

 

Our responsible R&D team is informed about the need of this functionality and consider implementing it in the upcoming releases, but there is no ETA as of now. 

 

Best regards,

Anastasiia

Show all comments

Hi Team!

 

Can you help us on how to add static folders to:

1. custom section?

2. Creatio OOTB section, where the static folders functionality is not available by default (for example, Contracts)?



I've tried inserting folder of Static type into %Section%Folder, but it works only for the sections where static folder already available in UI. 



Thanks in advance!

Like 0

Like

3 comments

Hello,

 

1. Please be informed that static folders functionality is not available in the custom section. We have created a corresponding query for our R&D team.

 

2. In the basic system version only the following section can have static folders:

employees

process library

process journal

lookups

system settings

As for the Contacts section, static folders are available with the "Marketing" product only.

Is this going to be added at some point? It seems dumb not to have it everywhere. 

Hello!

 

Unfortunately, this functionality is still not available. Our team is working on it, but we can not provide an ETA for it. 

Show all comments

Good day!


I need help to understand an error during install of package.

Terrasoft.Core.Packages.Exceptions.InvalidDescriptorInFileSystemException: Invalid discripter: 
Reading of property "Type" is not supported 
Path: UsrTest ---> Terrasoft.Common.InvalidObjectStateException: Reading of property "Type" is not supported
   at Terrasoft.Core.Packages.PackageFileStorage.Read(DataReader reader, Package package) 
   at Terrasoft.Core.Packages.PackageFileStorage.b__201_0(JsonDataReader reader, Package package) 
   at Terrasoft.Core.Packages.PackageFileStorage.InitializeDescriptor[T](Action2 initializeDescriptor, String descriptorFilePath, T descriptor) 
   at Terrasoft.Core.Packages.PackageFileStorage.CreatePackageDescriptorBasedOnDirectory(String directoryPath, Action2 initializeDescriptor) 
   --- End of inner exception stack trace --- 
   --- End of inner exception stack trace --- 
   at Terrasoft.Core.AppInstallation.Packages.Operations.PackageZipOperations.ThrowIfPackageStorageItemErrorsExist(PackageStorage packageStorage) 
   at Terrasoft.Core.AppInstallation.Packages.Operations.PackageZipOperations.Load() 
   at Terrasoft.Core.AppInstallation.Packages.Backup.ZipPackageBackupManager.ComposePackages(String sourcePackagesPath, String tempFilesPath) 
   at Terrasoft.Core.AppInstallation.Packages.Backup.ZipPackageBackupManager.CreateBackup(String sourcePackagesPath, String tempFilesPath, String backupPath, String code) 
   at Terrasoft.Core.ServiceModelContract.PackageInstaller.PackageInstallerServiceInternal.<>c__DisplayClass25_0.b__0() 
   at Terrasoft.Core.ServiceModelContract.PackageInstaller.BaseInstallerServiceInternal.InvokeWithLogging(Action action) 

Install log is in the attachment.



It works without any errors and is imported correctly in other systems (on versions higher).



Is there something I can change in the package? Or is it a problem in the system I import package in?   

How can I fix this?



Thank you in advance!

File attachments
Like 1

Like

2 comments

Hello,

 

The cause of the problem is the difference between the versions of websites of Сrеаtio that you used during the development of your package versus installation.

Kalymbet Anastasia,

Dear Anastasia, 



Thank you for expllanaition. Is there any possibility to make my package suitable for versions lower than original?

Show all comments

Hello!



I setup Pivot table on Portal main page. And in setup it is displayed like Pivot. But when I login as portal user, I see this data like simple list. Is it possible to display Pivot on Portal?



Thank you!

Vladimir

Like 1

Like

1 comments

Hello Vladimir!

 

Thank you for bringing this question to us. By default portal users can't see Pivot tables for several reasons. First of all - they should have a feature PivotTable active (this can be done on https://YOUR_WEBSITE_DOMAIN/0/Features page).

The second reason can not be overcome in the actual version, I am afraid. It will be solved in the 8.0.7 release. Pivot tables have a different directory from other dashboards. Their path is not available for Portal users as of now.

 

Best Regards,

Dan

Show all comments

When images preview works perfectly in sections, it doesn't work in the same sections on portal.

How to enable attachment preview for portal users?



Kind regards,

Vladimir

Like 2

Like

1 comments

Greetings,



Unfortunately, this is a known issue, which is already being worked on by our R&D team and will be improved within the future releases. 

Show all comments

Hi All,

 

I have created two types of contracts (Loyalty and General) and the default "Subordinate contract" detail is only showing in one page(General). So when creating a Subordinate contract by clicking on the (+) icon, I can see both options.

Is there a way to hide the Loyalty option from there?

Like 0

Like

4 comments
Best reply

Hi Champi,

I believe in this conversation you will find an answer to your task.

Hello Champi,



Your business task could be achieved only by development. 



Please refer to this post.

Hi Bogdan,

 

Thank you for the reply.

In the post you shared, the solution is given to remove the (+) icon logically. But what I need to achieve is to have the (+) icon and only remove one option from there.

For an example, If the user clicks the + icon of the detail on "General Contract" page, it should only show the "General" option. Same goes with the Loyalty page.

Will you be able to help me with this please??

Hi Champi,

I believe in this conversation you will find an answer to your task.

Hi Dmytro Vovchenko,​​​​​​​

 

Thank you so much for your assistance. That solution works like a charm yes

Show all comments

Hello,

We would like to add the City of an Account in the Visit Scheduler container. How can that be achieved ?

Thank you

Sasori

Like 0

Like

8 comments

Hello team,

Any update on this ?

Sasori Oshigaki,

Hello,

This title is composed in the schema ActivitySectionGridRowViewModel and its method getScheduleItemTitle and if you want to change the title, you need to modify this method. Keep in mind that you cannot simply override schema ActivitySectionGridRowViewModel, you need to write a new nodule with a code similar to ActivitySectionGridRowViewModel with the exception of the needed method and connect your new schema to the base schemas similar to an old ActivitySectionGridRowViewModel

Hi Creatio,

I have managed to retreive the City Valye.

My last hurdle is how to set the retrieved city string value to a global attribute inside the ESQ, because as you know ESQ is aysnc.

 

This is the Global attribute:

attributes: {
		"CityNameEsq": {
		dataValueType: this.Terrasoft.DataValueType.TEXT,
		type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
		}	
	},

This is the method:

getScheduleItemTitle: function() {
		    this.callParent(arguments);
			var title = this.get("Title");
			var account = this.get("Account");
			var accountGuid = this.get("Account").value;
 
				var recordId = this.get("Account").value;
					var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
						rootSchemaName: "Account"
					});
					esq.addColumn("City.Name", "CityName");
					esq.getEntity(recordId, function(result) {
						if (!result.success) {
							// For example, error processing/logging.
							this.showInformationDialog("Data query error");
							return;
						}
						this.set("CityNameEsq", result.entity.get("CityName"));

Sasori Oshigaki,



Here is a sample to get the result of an asynchronous function using Terrasoft.chain

getMyEntity: function(callback) {
    var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
        rootSchemaName: schemaName
    });
    ...
    esq.getEntity(recordId, function(response) {
        ...
        if (callback) {
            callback.call(this);
        }
    }, this)
},
globalMethod: function() {
    Terrasoft.chain(
        function(next) {
            this.getMyEntity(function() {
                next();
            });
        },
        function() {
            this.doAfterGettingEntity();
        },
        this
    );
}

Also, please check this article's getentity method to synchronous!



 

 

BR,

Bhoobalan Palanivelu.

Bhoobalan Palanivelu,

Thank you very much Bhoobalan. As always you help is much appreciated.

I am still not getting the wanted result.

Here is the entire module code

define("SasActivitySectionGridRowViewModel", ["ActivitySectionGridRowViewModel","ActivitySectionGridRowViewModelResources"
	],
		function() {
 
	/**
	 * @class Terrasoft.configuration.ActivitySectionGridRowViewModel
	 */
	Ext.define("Terrasoft.configuration.SasActivitySectionGridRowViewModel", {
		alternateClassName: "Terrasoft.SasActivitySectionGridRowViewModel",
        override: "Terrasoft.ActivitySectionGridRowViewModel",
	    attributes: {
					"CityNameEsq": {
						dataValueType: this.Terrasoft.DataValueType.TEXT,
						type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
					}
 
				},
		/**
		 * ########## ######## ######### ######## # ##########.
		 * @return {String} ######## ######### ######## # ##########.
		 */	
		getScheduleItemTitle: function() {
			Terrasoft.chain(
			function(next) {
				this.GetCityName(function() {
					next();
				});
			},
				function() {
				this.getTitleInfo();
			},
			this
		);
		},
 
		GetCityName: function(callback)
		{
			debugger;
			var recordId = this.get("Account").value;
			var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
				rootSchemaName: "Account"
			});
			esq.addColumn("City.Name", "CityName");
			esq.getEntity(recordId, function(response) {
				if (!result.success) {
					this.showInformationDialog("Data query error");
					return;
				}
				this.set("CityNameEsq", result.entity.get("CityName"));
			}, this);
		},
 
		getTitleInfo: function()
		{
			var title = this.get("Title");
			var account = this.get("Account");
			var accountDisplayValue = (account) ? account.displayValue + ": " : "";
			return Ext.String.format("{0}{1}", accountDisplayValue, title,this.get("CityNameEsq"));
		}
 
	});
 
	return Terrasoft.SasActivitySectionGridRowViewModel;
});

What am in doing wrong here. Because i get

Sasori Oshigaki,



Can you please try to add in this method  getScheduleItemTitle: function()

 this.callParent(arguments);

 

Hi Bhoobalan,

Still getting the same result

after applying 

this.callParent(arguments);
	getScheduleItemTitle: function() {
			this.callParent(arguments);
			Terrasoft.chain(
			function(next) {
				this.GetCityName(function() {
					next();
				});
			},
				function() {
				this.getTitleInfo();
			},
			this
		);
 
		},

 

The esq async logic may be pretty complicated. if you have a debug mode enabled, please turn it off, this may fix the issue. If it, not the case, try to change the title in the method getScheduleItemTitle without using ESQ by setting some test value, maybe the problem isn't in the async logic but in the method itself.

Show all comments

Hi community,

To show conversion rate in dashboard we use sales pipeline. Is there a way to show conversion rate without sales pipeline. For example "To show conversion rate in leads between qualification to closed won". Is there a way to implement it. Also suggest best chart to do this.

Thanks in advance.

 

Regards,

Manideep Korni

Like 1

Like

2 comments

Hello Korni,

 

As I understand your need - you want the same info that the pipeline contains, but to be displayed in a different way. In the pipeline, the general data is just being calculated in a specific way. What you can do is create a new dashboard with the same calculation mechanism. The sales pipeline is just a classical view of this kind of chart with pre-calculations done in the background.

 

Please check the article below to see the details of how the formula should be built:

https://academy.creatio.com/docs/user/sales_tools/long_sales/sales_pipe…

 

Best Regards,

Dan

Hi Manideep, 



I always like to show the conversion rate as a metric. It's not possible with OOTB tools, but you can use the marketplace app below. 

 

Here you can simply do the calculation of conversion rate (however that might be in your case), then display it. 



https://marketplace.creatio.com/app/calculated-metrics-creatio&nbsp;



Note: Currently this will only work on classic UI pages without development.

Show all comments