Hi,

 

We have a object for Sets in our Main Application. We are thinking of having a Mini page when we are saving a new record in our set object. So when a user adds a new entry to our Sets record page then when he is going to save it, there should be a pop-up to decide which entries they want to add and then when he selects them, then all data should be added to the record. How should I do this? I can make a process for adding a mini page?

Like 0

Like

0 comments
Show all comments

Hi Everyone,

 

We have the following business process in which we check if there are any previous Orders at the same time or even within 11 hours. If yes, then it will assign the Shift as double, if not then it will assign it as a single shift. However, there are 2 issues we are having.

 

  1. When there is an order at 12:00-13:00 and another order at 13:00-14:00 then technically it should be assigned as a double shift. But our current process still assigns a single shift.
  2. We need to add more checks to the previous order. For example: If the same team is assigned to the same location, then it should still be a single set. How can I do that? 

Kindly see the images for the process. Thanks! 

Like 0

Like

0 comments
Show all comments

Can anyone knows HOW TO ADD POP CONFIRMATION MESSAGE for selecting Yes or No in Freedom UI

Like 0

Like

2 comments

Hello,

I have an article showing how to do this for Freedom UI here:

https://customerfx.com/article/showing-a-message-dialog-or-confirmation…

Ryan

Thank you Ryan

Show all comments

Is it possible to change the colours/colour progression used for subsequent sections of a donut chart widget? We currently want to define that one value of a boolean on a lookup should be displayed in green, and the other red, but a generalised way of doing this would be very helpful for future reference - e.g. to specify the set and order of colours used in some way. We're currently on 8.1.0.6820 Any help would be greatly appreciated!

Like 1

Like

1 comments

Hello,

Unfortunately, at the moment it is impossible to customize colors in charts. However, a task has already been registered in our R&D team to add the option to customize colors in charts, in future releases. In case you would like to check  what stage this task is at, I am sending you the task number: PR-6359.

Show all comments

Can anyone tell how I can Navigate to a Page by clicking on button in Freedom UI  by using (customcode)

Like 0

Like

2 comments

You can do that with no code using the actions: 

  • Open new record (to open a page in add mode)
  • Open existing record (to open a page in edit mode)
  • Open specific page (to choose a specific page. This could be a section list page, or a specific page for a record if a record has multiple pages defined for it)

If you want to do this in code, these articles will help: 

Ryan

Thank you @Ryan for answering my question ,Do you have exact example where we are Navigating to Page by clicking on button.

Show all comments

Hi I would like to export my custom package with all elements in it to deploy to another instance of Creatio. How can I tell if the package I have has all the elements of my custom application.

Like 0

Like

0 comments
Show all comments

Hi,

Quick question, does the new feature to be released in 8.1.1 "Attachment search. You can now search for attachments in the Freedom UI component by name using global search. Creatio indexes attachment names automatically." also search in email attachements (when someone annexes an excel or word, etc..)

Thanks,

Damien

Like 1

Like

0 comments
Show all comments

Is it possible to set the default Date & time format for all users in the system? Or at least change the format connected with the language? (it is not possible to set format for the user you can select the language with the default format) 

 

Like 1

Like

2 comments

Yes please !

Hello Paulina, 

 

Thank you for your question!

Unfortunately, there is no basic system setting to change the time zone for already existing system users.

You can use the SQL script for this purpose. 

Please note that the DateTimeFormatId column value refers to the SysLanguage table and the TimezoneId value refers to the Code column in Timezone table so the SQL script will be the following: 

UPDATE SysAdminUnit SET DateTimeFormatId = 'value from SysLanguage', TimeZoneId = 'Code column value from TimeZone table' WHERE ContactID IS NOT NULL

All you need to do is to add the proper IDs you'd like to change the values to.  

For example, here is the script with values which will set Date and Time format for all users to English and timezone to GMT:

UPDATE SysAdminUnit SET DateTimeFormatId = '910eb38b-c00f-4d84-8e4a-853a62476b68', TimeZoneId = 'GMT Standard Time' WHERE ContactID IS NOT NULL 

Regards,

 

Orkhan

Show all comments

Is it possible to cancel a DCM transition from JS code? I believe it used to be possible in the classic UI, but I can't find any info on achieving it in Freedom UI. Trying to intercept the call with a handler for `crt.EntityStageProgressBarStageChangedHandlerRequest` allows "cancelling" it in a sense, as we can prevent the continuation of the handler chain by not performing the `return await next?.handle(request);` call, similar to how you would omit the `this.callParent(arguments)` when using classic UI, which does prevent the change from happening/further processing, but this leaves the selected stage highlighted instead of visually returning it back to the actually active stage. I'm currently using version 8.1.0

Like 0

Like

1 comments

Hello!

In order to cancel a DCM transition you will have to add a handler for the system request crt.SaveRecordRequest, which is executed when you click the Save button on the record editing page.

In this example, we also added crt.HandleViewModelAttributeChangeRequest, which is executed whenever the value of an attribute changes, and an "IsStageChanged" attribute to control the Stage state. This way we check if a Stage attribute (LookupAttribute_ioghn6a) has been changed and prevent it from being saved. You can adjust this code according to your business needs:
 

...
	viewModelConfigDiff: /**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/[
			{
				"operation": "merge",
				"path": [
					"attributes"
				],
				"values": {
					...
					"IsStageChanged":{
						value: false
					}
				}
			},
 
		]/**SCHEMA_VIEW_MODEL_CONFIG_DIFF*/,
 
		handlers: /**SCHEMA_HANDLERS*/[
			{
				request: "crt.SaveRecordRequest",
				handler: async (request, next) => {
 
					if(await request.$context.LookupAttribute_ioghn6a && await request.$context.IsStageChanged){
						request.$context._notifyService.show({message: 'Cannot set status'});
						return false;
					}
 
					const saveResult = await next.handle(request);
					if(saveResult){
						request.$context.IsStageChanged = false;
					}
 
					return saveResult;
				}
			}, 
			{
				request: "crt.HandleViewModelAttributeChangeRequest",
				handler: async (request, next) => {
 
					if (request.attributeName === 'LookupAttribute_ioghn6a' && request.value != request.oldValue && request.oldValue) {
						request.$context.IsStageChanged = true;
					}
					return next?.handle(request);
				},
			}
		]/**SCHEMA_HANDLERS*/,
...

 

Show all comments

There is a requirement in which I have to make printable visible on the basis of data in the connected object. I followed this article https://customerfx.com/article/showing-or-hiding-printables-based-on-a-value-for-the-selected-record-in-creatio/.

 

It is working fine on the combined mode in edit page and only showing printable which is matching with the condition, but the same is not reflecting on the separate mode in edit page and showing the complete list of printable.

 

Is there something which I am missing or any other workaround ?

Methods which I have added on section is :

initQueryColumns: function(esq) {

                                                          this.callParent(arguments);

 

                                                          if (!esq.columns.contains("Id")) {

                                                                        esq.addColumn("Id");

                                                          }

                                           },

 

                                           GetDocumentCollection: function() {

                                                                        var recObj = [];

 

                                                                        var id =  this.get("GridData").get(this.get("ActiveRow")).get("Id");

                                                                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Document" });

                                                                        esq.addColumn("UsrDocumentName.Name");

                                                                        esq.filters.add("UsrTransactions", Terrasoft.createColumnFilterWithParameter(

                                                                                      Terrasoft.ComparisonType.EQUAL, "UsrTransaction", id));

                                                                        esq.getEntityCollection(function(result) {

                                                                                      var response = result.collection;

                                                                                      var hasRecord = (response.collection.length !== 0);

                                                                                      if(hasRecord) {

                                                                                      result.collection.each(function(item) {

                                                                                                    recObj.push(item.get("UsrDocumentName.Name"));

                                                                                      });

                                                                                      }

                                                                        this.set("DocumentCollection",recObj);

                                                                                     

                                                                        }, this);

                                                         

                                           },

                                           initCardPrintForms: function() {

                                                          this.callParent(arguments);

                                                          var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);

                                                          if (Ext.isEmpty(printMenuItems)) return;

                                                         

                                                          printMenuItems.each(function(item) {

                                                                        item.set("Visible", {bindTo: "getPrintMenuItemVisible"});

                                                          }, this);

                                           },

                                           getPrintMenuItemVisible: function(reportId) {

                                                          if (Ext.isEmpty(this.get("ActiveRow"))) return true;

                                                          var Id = this.get("GridData").get(this.get("ActiveRow")).get("Id"),

                                                                        printMenuItems = this.get(this.moduleCardPrintFormsCollectionName),

                                                                        item = printMenuItems.find(reportId);

                                                          this.GetDocumentCollection();

                                                          if (Ext.isEmpty(item)) return;

                                                          var ReportName = item.get("Caption");

                                                          var DocCollection = this.get("DocumentCollection");

                                                          if(DocCollection === undefined){

                                                                        return false;

                                                          }

                                                          else{

                                                                        if(DocCollection.includes(ReportName)){return true;}

                                                                        else{return false;}

                                                                                     

                                                          }

                            

                                           }

Methods which I have added on edit page is :

                                                         GetDocumentCollection: function() {

                                          

                                                                        var recObj = [];

                                                                        var id =  this.get("Id");

                                                                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Document" });

                                                                        esq.addColumn("UsrDocumentName.Name");

                                                                        esq.filters.add("UsrTransactions", Terrasoft.createColumnFilterWithParameter(

                                                                                      Terrasoft.ComparisonType.EQUAL, "UsrTransaction", id));

                                                                        esq.getEntityCollection(function(result) {

                                                                                      var response = result.collection;

                                                                                      var hasRecord = (response.collection.length !== 0);

                                                                                      if(hasRecord) {

                                                                                      result.collection.each(function(item) {

                                                                                                    recObj.push(item.get("UsrDocumentName.Name"));

                                                                                      });

                                                                                      }

 

                                                                        this.set("DocumentCollection",recObj);

 

                                                                        }, this);

                                                         

                                           },

                                           initCardPrintForms: function() {

                                                          this.callParent(arguments);

 

                                                          var printMenuItems = this.get(this.moduleCardPrintFormsCollectionName);

                                                          if (Ext.isEmpty(printMenuItems)) return;

 

                                                          printMenuItems.each(function(item) {

                                                                        item.set("Visible", {bindTo: "getPrintMenuItemVisible"});

                                                          }, this);

                                           },

                                                                                      getPrintMenuItemVisible: function(reportId) {

                                                          //this.GetDocumentCollection();

                                                          var Id = this.get("Id"),

                                                                        printMenuItems = this.get(this.moduleCardPrintFormsCollectionName),

                                                                        item = printMenuItems.find(reportId);

                                                          if (Ext.isEmpty(item)) return;

                                                          this.GetDocumentCollection();

                                                          var ReportName = item.get("Caption");

                                                          var DocCollection = this.get("DocumentCollection");

                                                          if(DocCollection === undefined){

                                                                        return false;

                                                          }

                                                          else{

                                                                        if(DocCollection.includes(ReportName)){return true;}

                                                                        else{return false;}

                                                                                     

                                                          }

                            

                                           }

Like 0

Like

1 comments

Hello,

In order to filter printables in edit mode, both in your page and section replacing schemas, you need to replace a method preparePrintFormsMenuCollection. Inside this method, you should leave base method as is (the code before and after comments below), and only change the code between the comments to create the logic that fits your business needs:
 

preparePrintFormsMenuCollection: function(printForms) {
    printForms.eachKey(function (key, item) {
        if (!item.get("Caption")) {
            item.set("Caption", item.get("NonLocalizedCaption"));
        }
        item.set("Tag", key);
        if (item.get("TypeColumnValue")) {
            item.set("Visible", { bindTo: "getPrintMenuItemVisible" });
        }
        //Here is your logic for filtering of printables
        /*************************************************************************/
        /* YOUR CODE, for example 
        var currentState = this.get("State");
        var currentStateDisplayValue = currentState.displayValue;
        var currentStateDisplayValueToLower = currentStateDisplayValue?.toLowerCase();
        var isStateEmpty = Ext.isEmpty(currentState);
        if (!isStateEmpty && currentStateDisplayValue && item.get("Caption").includes(currentStateDisplayValueToLower)) {
        item.set("Visible", true);
        }
        else {
        item.set("Visible", false);
        }
        */
        /*************************************************************************/
    }, this);
}

 

Show all comments