Question

Hi, 

I am modifying the Case object in a business process which triggers on the following events:

 - Record Modified (case object)

 - Record Added (case object) 

The modify business process element causes the Record modified event to be triggered and the business process is called again. Is there a way to suppress event generation when I modify the record with Modify Data business process element?

Thanks,

Like

3 comments

Dear Hatim,

You can select fields which must be modified to trigger this element(changes expected -> in any of the selected fields).

Best regards,
Angela

Angela Reyes,

Thank you Angela. I understand that with "Changes Expected" the trigger can be constrained to go off on changes to specific fields. 

I have a use case in which I am modifying one of the Case field in a business process which is included in the "Changes Expected" list of fields. We need the business process to only trigger when the changes are made to this field from user interface however when we change it from business process using (Modify Data) element, the trigger should be suppressed. Is there a way of achieving this? 

Regards,

Hatim Hussain,

Can you please specify what's the difference between changes made by users and changes made by BP? Why do you need to divide them, what is your business task? Since you can use filters for data modified (for example start process only if case status was modified to In progress) it is unclear why do you need to divide users and BP. 

Log in or register to comment
Question

Hi, 

Is there a way to search a contact from command line by any other attribute apart from Full Name (mobile number for example). bpm'online by default searches the search term entered into command line by comparing the search term against full name.

Like

3 comments

Hello,

By default if you enter the phone number the system will show you all records where this number is present. If you see that the global search returns you full name that means either that indexation for the section is disabled (please check it in the section wizard like on the screenshot http://prntscr.com/la5mpt) or that global search is deactivated for your instance. If so you need to create a support request by writing an email to support@bpmonline.com and you need to tell the name of the instance and also provide information on this problem in the email.

Best regards,

Oscar

Oscar Dylan,

Thank you Oscar for your response. 

Is it also available in v 7.11?

Hatim Hussain,

The functionality of Global Search became available earlier then 7.11 version and if you want to find out the version when it was added then you need to search in release notes here https://academy.bpmonline.com/documents/bpmonline-release-notes-7-13-0. As for indexation in sections - then it became available in 7.12.3 version of the instance.

Please also note that you have on-site instance then you need to follow this article https://academy.bpmonline.com/documents/administration/7-12/global-sear… to set it up.

Best regards,

Oscar

Log in or register to comment
Question

Hi All,

I have this requirement of generating single Invoices for Multiple Orders placed in Specific month.

I understand that in the Out of the Box feature, BPM'Online supports in selecting multiple records and generate invoice but it generates that many number of Invoices. In other words, if I select 7 Orders using Multi-select in Orders Section and select the Invoice, it has downloaded for me 7 Invoices which is not what I would need.

Is there a way to loop through the selected Order record and generate Invoice which includes all the selected Order details.

Kindly suggest.

Like

2 comments

Hello! 

You can do it via printables. DevExpress printables allows downloading data for multiple records. Set-up any DevExpress printable, turn on "show in section" button, select multiple records and print them. It will create a single file with data from all selected records. 

Best regards,
Angela

I have not tried this, but it should be possible in a Business Process.  Initialize the invoice, Order is not a required field.  Loop through each order and add its products to the invoice.  Add anything else you want.

Log in or register to comment
Question

What are the conditions to filter and get the "Overdue invoices"?

Like

1 comments

Hello.

First of all, the invoices do not have the due date out of the box, but you can use the date field instead. You need to add a condition, that the date is less than the current date and the invoice status is not final.

Best regards,

Matt

Log in or register to comment
Question

It give me this error : 

 Cannot read property 'High' of undefined 

when I write this code:

filters.add("ActvityStatus", this.Terrasoft.createColumnFilterWithParameter(
                            this.Terrasoft.ComparisonType.EQUAL, "Status",ConfigurationConstants.Activity.Status.High));
 

why can't access the value 'High' of the lookup 'Status' of the activity object

Like

6 comments

Dear Mohamad,

Please follow the steps given by Grigory. The issue is most likely related to not indicated activity status in Configuration Constants.

The other reason could be not indicated ConfigurationConstants as a dependency in the schema. Please check, that you have added it to dependencies:

Regards,

Anastasia

I  have added it to dependenices

Mohamad, 

In this case please double-check that you have added "High" activity status to the Configuration Constants.

Regards,

Anastasia

 

 

Anastasia Botezat,

how to do that?

Dear Mohamad,

In order to set needed status you can go two ways:

1. Hard code the Id of needed status. In this case filtration will look like this, where zeros are status Id:

filters.add("ActvityStatus", this.Terrasoft.createColumnFilterWithParameter(
   this.Terrasoft.ComparisonType.EQUAL, "Status", "00000000-0000-0000-0000-00000000"));

2. Go to the system configuration, create a replacing module of ConfigurationConstants schema. Copy all the code from parent ConfigurationConstants schema. Finally, add the activity status to the activity status block in the schema.

Regards,

Anastasia

Anastasia Botezat,

Thank you

Log in or register to comment
Question

I really need to solve this question , even a part of them

-Create new filter “Attention” in the Activity section grid page (near Owner and Date filters). When turned on, only overdue activities and high priority 
 today activities should be displayed. Filter should use current user time zone.
 (using code and not filter manually)

Like

2 comments

In ActivitySectionV2 do it by analogy with this example
1) Create new filter near Owner and Date filters
{
    "operation": "insert",
    "parentName": "IsActiveFiltersContainer",
    "propertyName": "items",
    "name": "IsActiveCheckbox",
    "values": {
        "bindTo": "IsActive",
        "caption": "Активные",
        "controlConfig": {
            "className": "Terrasoft.CheckBoxEdit",
            "checkedchanged": {
                "bindTo": "onIsActiveCheckboxChecked"
            }
        }
    }
}
2)
getFilters: function () {
    var sectionFilters = this.callParent(arguments);
    this.setIsActiveFilter(sectionFilters);
    //this.setCommunicationFilter(sectionFilters);
    return sectionFilters;
},
setIsActiveFilter: function (filterCollection) {
    var isActive = this.get("IsActive");
    if (isActive) {
        if (!filterCollection.contains("IsActiveFilter")) {
            filterCollection.add("IsActiveFilter", this.Terrasoft.createColumnIsNullFilter("Account"));
        }
    } else {
        filterCollection.removeByKey("IsActiveFilter");
    }
},  
onIsActiveCheckboxChecked: function (value) {
                if (!this.get("IsSectionVisible")) {
                    return;
                }
                this.set("IsActive", value);
                this.sandbox.publish("FiltersChanged", null, [this.sandbox.id]);
                this.reloadGridData();
            },       

3)Add atribute "IsActive"

attributes: {
      "IsActive": {
          "dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
          "type": this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
           "value": true
            },
        }
}

Hello!

Please see a comment from Grigoriy above, this would help you implement your idea.

Matt

Log in or register to comment
Question

Question :

On the Product edit page, develop a new button or action for calculating product popularity. Popularity is calculated as the ratio of the number 
 of products in invoice records that contain the current product, to the total number of products in invoice records. Display the calculation result 
 as a percentage using the message window.

how to solve it by esq?

Like

1 comments

Dear Mohamad,

Please see the ESQ example below. The method can be triggered by the button click on th product page.

checkProductNumber: function() {
				var currentProduct = this.get("Id");
				var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "InvoiceProduct" });
				esq.addColumn("Product");
				esq.filters.add("Product", Terrasoft.createColumnFilterWithParameter(
					Terrasoft.ComparisonType.EQUAL, "Product", currentProduct));
				esq.getEntityCollection(function(response) {
					if (response && response.success) {
						var quantity = response.collection.collection.length;
						if (quantity > 0) {
							var esq1 = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "InvoiceProduct" });
							esq1.addColumn("Id");
							esq1.getEntityCollection(function(result) {
								if (result && result.success) {
									var total = result.collection.collection.length;
									this.showInformationDialog(quantity / total);
								}
							}, this);
						} else {
							this.showInformationDialog("This product is not indicated in any invoice.");
						}
					}
				}, this);
			}

Hope you will find it helpful.

Regards, 

Anastasia

Log in or register to comment
Question

 Please help with this question :

Configure settings so that a user cannot save an invoice if the total amount of a customer's debt (taking into account the amount of the current invoice) exceeds $4,000.

 

what this mean and how to solve it?

Like

1 comments

Hello, what you described is an object logic (validation) than can be both created and deleted with code only by a skilled developer.

In many cases our customers implement similar logic purposefully.

If you need our help in resolving this case, please, let us know. 

Log in or register to comment
Question

How to Create a new filter “Attention” in the Activity section grid page (near Owner and Date filters). When turned on, only overdue activities and high priority 
 today activities should be displayed. Filter should use current user time zone.

Please Help.

Like

3 comments

Hello,

It is better to use advanced filter and apply its settings like on the screenshot http://prntscr.com/kzo5os and save it as a folder and name it for example "Overdue activities". As a result when you open this folder you will get the list of activities that are overdue due to filtering conditions. Or you can create a dashboard that will represent the list of overdue activities due to filtering conditions specified.

Best regards,

Oscar

Oscar Dylan,

Thank you It was helpful , but I need to know how to create a new custom filter (check box) in the Activity section grid page (near Owner and Date filters) , when I check it , filter the grid  (coding )

mohamad abdallah,

Here is the academy article that describes the process of adding new buttons to the section. It also contains the list of actions that can be performed in the section. This academy article describes how to add the filter block in the section. Hope it helps!

Log in or register to comment
Question

How to calculate the  sum of a user’s activity duration in minutes, for all activities in the last 60 days , and set the value in a field (entity schema query)

Like

1 comments

Hello,

It can be achieved with the help of the business process. First of all you should add the "boolean" type field on the contact's page and on the activity page and name it for example "Is processed". After that you should create a business process with the "Simple" start event that will read "Contact" object, after that there should be "Read data" element that will read "Activity" object with the data read mode set as "Calculate function" and specify the function value as "Sum" by column "Duration (minutes)" and filter activities by field "Owner" that should have Id from the first "Read data" element that reads "Contacts" object. After that "Modified data" element should be added for the "Activity" object that should change the value of boolean field to "True". Then should go "Modify data" element that will modify data in contact section and will set value of the previous element to the specified field and that will change the value of the boolean field added at the beginning to "True" value and this element should be also interconnected via activity Id in the "How to filter records" block. After that you should make a cycle of this process and it should look like on the screenshot http://prntscr.com/kyx20n (conditional flow 2 should satisfy the condition that boolean field for "Contact" object is "False", conditional flow 4 should satisfy the condition that boolean field for "Activity" object is "False" so to read all activities and all contacts). Don't forget to filter activities by Start and End dates so to get all activities for the last 60 days.

Best regards,

Oscar

Log in or register to comment