Update date field of multiple records using custom Action

Hello!

 

I am trying to get the date field updated for multiple records using a custom Action.

I have referred to this article for it: Change of the field value of multiple records using custom action | Community Creatio

 

I have successfully created a pop up but, the update is not reflecting in the selected records.

I have also attached the screenshot of it and the code that I have used.

 

The code that I have used:

 



                getSectionActions: function() {

                  actionMenuItems.addItem(this.getButtonMenuItem({

                        "Caption": {bindTo: "Resources.Strings.MultiplyChangeAction"},

                        "Click": {bindTo: "showDateInfo"},

                        "Enabled": {bindTo: "isCustomActionEnabled"}

                    }));

                    // Returning of the added section action collection.

                    return actionMenuItems;

                },

             

              showDateInfo: function() {

                Terrasoft.utils.inputBox("Set Visit Date for update", function(result, arg) {

                        if (result === Terrasoft.MessageBoxButtons.YES.returnCode) {

                            var date = arg.date.value;

                         

                            var autoIds = this.getSelectedItems();

                            this.updateDate(function(context, result) {

                            }, autoIds, date);

 

                        }

                    }, [{

                        className: "Terrasoft.Button",

                        caption: "OK",

                        returnCode: "yes"

                    }, "cancel"], this,

                    {

               

                        date: {

                            dataValueType: Terrasoft.DataValueType.DATE,

                            caption: "Visit Date",

                            customConfig: {

                                className: "Terrasoft.DateEdit",

                                height: "17px"

                            }

                       

                    },          

                    },

                                         

                    {

                        defaultButton: 0,

                        style:  {

                            borderStyle: "ts-messagebox-border-style-blue ts-messagebox-border-no-header",

                            buttonStyle: "blue"

                        }

                    }

                );

            },

              updateDate: function(callback, autoIds, date) {

                        var update = Ext.create("Terrasoft.UpdateQuery", {

                            rootSchemaName: "JFLFieldSales"

                        });

                        var filters = Terrasoft.createFilterGroup();

                        filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;

                        autoIds.forEach(function(item) {

                            var productIdFilter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                            "Id", item);

                            filters.add("ProductIdFilter" + item, productIdFilter);

                        }, this);

                        update.filters.add(filters);

                        if (date) {

                            update.setParameterValue("JFLAssignmentDate", date, Terrasoft.DataValueType.Date);

                        //  update.setParameterValue("JFLAssignmentDate", time, Terrasoft.DataValueType.Date);

                        }

                        

                        update.execute(function(result) {

                            callback.call(this, result);

                        }, this);

              }

            }

        };

    });

 

 

 

I have also attached full code of the schema as a file.

 

Also, please let me know if I can update the time also as the field in the record is of type DATE_TIME.

File attachments
Like 0

Like

1 comments

Hello Malay,

 

To update the date a little customization is needed. Here is an example of my update function:

updateAccount: function(callback, autoIds, valueWarranty, valueDelivery, valueDate) {
                        var update = Ext.create("Terrasoft.UpdateQuery", {
                            rootSchemaName: "Account"
                        });
                        var filters = Terrasoft.createFilterGroup();
                        filters.logicalOperation = Terrasoft.LogicalOperatorType.OR;
                        autoIds.forEach(function(item) {
                            var accountFIlter = update.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
                            "Id", item);
                            filters.add("ProductIdFilter" + item, accountFIlter);
                        }, this);
                        update.filters.add(filters);
                        if (valueWarranty) {
                            update.setParameterValue("UsrWaranty", valueWarranty, Terrasoft.DataValueType.TEXT);
                        }
                        if (valueDelivery) {
                            update.setParameterValue("UsrDelivery", valueDelivery, Terrasoft.DataValueType.TEXT);
                        }
            			if (valueDate) {
                          	valueDate="\""+valueDate+"T00:00:00.000"+"\"";
                            update.setParameterValue("UsrDate", valueDate, Terrasoft.DataValueType.DATE);
                        }
                        update.execute(function(result) {
                            callback.call(this, result);
                        }, this);
                    }

The main idea here is in this string:

valueDate="\""+valueDate+"T00:00:00.000"+"\"";

 

If you take a look at the regular update query that is sent when manually changing the date column value you will see that the value is transferred as "2021-03-21T00:00:00.000". To successfully update the date column using the modal window you will need to pass the date value as: 2021-03-21 and then the function itself will transform the value to "2021-03-21T00:00:00.000", add it to the update query parameters and send it to the server. As a result the field will be updated.

 

Best regards,

Oscar

Show all comments