Mobile app
approval
#Orders
Contract
7.12
sales_enterprise

Hi - Is it possible to have the approvers, approve the orders / contracts via bpmonline mobile app? if so, how to set it up? - We are not seeing any references to this in the documentations.

regards,

Ganesh

Like 0

Like

1 comments

Dear Ganesh,

There is no out of the box functionality for approvals in mobile application in the current release. But you can develop your own approvals logic for mobile application taking the existing one (desktop one) as an example. In order to have approvals in mobile application You need to create a similar detail, develop similar functions and distribute the access rights accordingly. 

There are no example or guidelines created yet, but your one can be the first example published!

With best regards,

Oliver WIngston

 

Show all comments

Hello, 

I am trying to overide the Opportunities "Buyer Name" behavior to only search for the Contact and not the Account records. 

I have found the schema and object (I believe) in OpportunityPageV2 that is responsible for this behavior, but everything I have tried does not seem to want to work.

Does anyone have any suggestions on how I could make this work?

 

Like 0

Like

3 comments

Dear Philip,

You have found the correct solution by yourself. You need to replace the schema and change the following line:

"multiLookupColumns": ["Contact", "Account"]

Only contacts should be left there for you to accomplish the task.

Lisa

Lisa Brown,

Hi Lisa, 

I did change "multiLookupColumns": ["Contact", "Account"]" to "multiLookupColumns": ["Contact"]" but that did not give me the outcome I was looking for. 



Do I call something other than "multiLookupColumns"? 

Philip Wierciszewski,

 

The brackets are not necessary. I was able to achieve the task with just the following code:

 

Matt

Show all comments
7.11
sales_enterprise

Hi Team, 

I am trying to setup Questionnaire management  but not able to fallow the flow given in market place, 

Need to understand what i have missed. 

 

Regards

Chandrakanth JK 

Like 1

Like

2 comments

Dear Chandrakanth,

This is the third party application that was not developed by Terrasoft. On the page of the application you can check contacts of the developers who designed Questionnaire management. You are free to ask them any questions about installation, setup and work of their application.

Best Regards,

Peter

Thanks Peter 

Show all comments
7.11
sales_enterprise

Hello Community!

I need set up a custom section with access by record enabled and remove the createdOn user of the delete permitions.

Is a easy way (without create a business process) to setup the default Read, Edit, delete option for the create user?

http://prntscr.com/jgbqp8

Regards,

 

Like 0

Like

1 comments

Dear Federico,

It is the basic system logic to grant the person created a record with full access rights for this record. Unfortunately, there is no such option to eliminate the deleting access rights for record owner/creator via [Object permissions] section.

It can only be done by creating a simply business-process starting on record creating, reading the Contact from Created By column and deleting the access rights via [Change access rights] process element.

With best regards,

Oliver Wingston

Show all comments
Opportunity
#Orders
7.11
sales_enterprise

Hello Community! 

When you add a new Order from opportunity > New OrderProduct the Order keep saved but when you close the order this not refresh the order detail in opportunity. 

What can do to keep the order in chage status (save button enable) after add OrderProduct? 

Regrards,

 

Like 0

Like

1 comments

Dear Federico,

Could you please add some screenshots to make more clear your issue? I have tried to follow your instructions and do not see any problem.

Show all comments

Hi community!

 

How can i execute a sql query like : 



INSERT INTO [DestinationTable] (fields)

SELECT field1 field2, field3 ..

FROM [SourceTable]

I can't use ESQ and .Net "SqlCommand" class ask a SqlConnection and not a UserConnection ...



Can you help me?

Best regards,

Davyd

 

Like 0

Like

1 comments

Hi community!



I finally found the solution!!! : using the Class CustomQuery like this:

var userConnection = Get<UserConnection>("UserConnection");

string sql =" ......."; 

CustomQuery myQuery = new CustomQuery(userConnection);

myQuery .SqlText = sql;

using (DBExecutor dbExecutor = userConnection.EnsureDBConnection())

{

    dbExecutor.CommandTimeout = 0;

    myQuery .Execute();

}

return true;

Show all comments
detail
7.11
sales_enterprise

Hello Community!

Is posible get a field in js from detail before save them? I need them to make a validation before save.

I'm using BaseFildsDetail.

Regards,

 

Like 0

Like

3 comments

You need to override the saveAsyncValidate method on the page and read the value from the database via ESQ in the method. Then you need to send the validation result on callback of the ESQ. You an find an example in the BaseEntityPage module in the saveAsyncValidate method. 

Eugene Podkovka,

I'm using a field detail so the detail field is wait to save when the edit page is save. Is posible save the detail before save the edit page?

I don't know what is "field detail". If  you are about an editable grid, then the previous answer will work. 

Show all comments
Client-side
ActivityPage
Javascript
sales_enterprise

Hello, 

I am wondering if anyone could help me solve this issue:

I am trying to have a calculation on the client side figure out how much time is between now (current time) and a due date set on the page.

1: I am grabbing the date from the dueDate field on the page and setting it to a variable 

2: Getting the current date and time and setting that to a variable

3 & 4: Initializing int (Number) variables via meta programming standards (not critical step)

5: set a while loop, checking if boolean/checkbox is checked off.

6: Subtracting values to find the difference with Math.abs();

7: defining the variable even further with Math.ceil();

8: Setting the value to a field on the page, with "this.set" 

This was working before I added the while() condition, am I going wrong somewhere?

I have already been trying to figure this out for 3 hours so hopefully someone can see my mistake and teach me something new, haha. 

 

Thanks, Community!

 

File attachments
Like 0

Like

3 comments

I would do something like this

define("ActivityPageV2", [], function() {
	return {
		entitySchemaName: "Activity",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		methods: {
			onDueDateChanged: function() {
				var now = new Date();
				var dueDate = this.get("DueDate");
				var diffHrs = this.getDateDiff(now, dueDate, "hours");
				this.set("KwlString1", diffHrs.toString());
			},
			getDateDiff: function(firstDate, secondDate, identifier) {
				var diffMs = (secondDate - firstDate); // milliseconds between firstDate & secondDate
				var diffDays = Math.floor(diffMs / 1000 / 60 / 60 / 24);
				var diffHrs = Math.floor(diffMs / 1000 / 60 / 60);
				var diffMins = Math.floor(diffMs / 1000 / 60);
				switch (identifier) {
					case "milliseconds":
						return diffMs;
					case "minutes":
						return diffMins;
					case "hours":
						return diffHrs;
					case "days":
						return diffDays;
					default:
						return diffMs;
				}
			}
		},
		attributes: {
			"OnDueDateChangeAttribute": {
				dependencies: [
					{
						columns: ["DueDate"],
						methodName: "onDueDateChanged"
					}
				]
			}
		},
		rules: {},
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "STRING8bd032e4-6e0f-4e1c-afdb-2ecf1041382b",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 9,
						"layoutName": "Header"
					},
					"bindTo": "KwlString1",
					"enabled": true
				},
				"parentName": "Header",
				"propertyName": "items",
				"index": 17
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Eugene Podkovka,

Thank you for your quick response. It works well, but I was wondering how you would modify the method to: 

  1. Only set the "diffHours" once the page is initialized.
  2. Go into a while loop checking "while a checkbox is unchecked - run loop" that would set the hours/minutes/seconds remaining every second (or n time to create a "live" feel to the process).
  3. Once checkbox is checked, stop entire process and save current time. 

I added the a while loop to check if the boolean/checkbox is false (0) and it seems to be working.

As for getting this while loop to run after initialization, this is where I am having troubles, and after going through bpm'online's and the Mozilla Foundation's Documentation I turn to you, Eugene.

methods: {
	onDueDateChanged: function() {
		var now = new Date();
		var completeTask = this.get("UsrCompleteTask");
		var dueDate = this.get("DueDate");
		var diffHrs = this.getDateDiff(now, dueDate, "minutes");
        while(completeTask == 0) {
			this.set("UsrSTRING1", diffHrs.toString());
		}
	},
	getDateDiff: function(firstDate, secondDate, identifier) {
		var diffMs = (secondDate - firstDate); // milliseconds between firstDate & secondDate
			var diffDays = Math.floor(diffMs / 1000 / 60 / 60 / 24);
			var diffHrs = Math.floor(diffMs / 1000 / 60 / 60);
			var diffMins = Math.floor(diffMs / 1000 / 60);
			switch (identifier) {
				case "milliseconds":
					return diffMs;
				case "minutes":
					return diffMins;
				case "hours":
					return diffHrs;
				case "days":
					return diffDays;
				default:
					return diffMs;
			}
		}
	},

Any knowledge on how to create this would be greatly appreciated, and thanks again on your previous response! 







 

  1. Only set the "diffHours" once the page is initialized.

Please override the "onEntityInitialized" method and set the "diffHours" there.

2. Go into a while loop checking "while a checkbox is unchecked - run loop" that would set the hours/minutes/seconds remaining every second (or n time to create a "live" feel to the process).

3. Once checkbox is checked, stop entire process and save current time. 

If you need to track when people physically work on an activity then It's a very bad idea. Just let people manage how much time they spend on a task by themselves. 

Anyway, technically it would be more correct to save a current date time value when the checkbox is checked and then save it when the checkbox is unchecked. Then calculate the difference. 

 

Show all comments

 Require flows or steps to solve the practical scenarios.

Like 0

Like

5 comments

Hello!

Could you please specify your question and provide us the task?

Best regards,

Angela

In the list of the "Accounts" section, display only the customers with A and B category, whose last year's total sales exceeded $50,000

please drop your mail id then i will sent all scenarios solutions.Hope it will be helpful.

Hi,

The point of the certification is to check the knowledge of the partner and his ability to use and configure the system according to the business task. It is very important for us to see that the person who actually takes the tests, comes up with the solution on his own. Thus, we will remove the case above from the certification and will replace it with another one.

We kindly ask you not to cheat as in this case the results do not show the real knowledge level and we will be forced to take the measures for the users who either ask the questions from the certification on our community or answer them.

Thank you for your understanding. 

Lisa

Show all comments
sales_enterprise

Not able to raise an order from Mobile app, and getting an error, 

 

 

Like 0

Like

3 comments

Hello,

To process the error you get while creating the order or synchronizing the mobile app, please click on Send report button so that we will be able to get a mobile bug report and analyze it.

Best regards,

Lily

Model Name: Redmi Note 4

Platform: Android

Platform Version: 7.0

Resolution: 360x640

IsOnlineMode: true

SyncInService: false

UIVersion: UIV2

ApplicationVersion: 7.12.2

ApplicationMajorVersion: 7.12

BackgroundSyncMode: Always

ServerUrl: https://017897-sales-enterprise.bpmonline.com/

ContactId: 76929f8c-7e15-4c64-bdb0-adc62d383727

CultureName: en-US

ApplicationRevision: 3

WorkplaceCode: FieldForceWorkplace

ProductInfo: {"ProductName":"bpm'online sales","ProductEdition":"enterprise","CustomerId":"303","Version":{"Major":7,"Minor":12,"Build":0,"Revision":2702,"MajorRevision":0,"MinorRevision":2702}}

CurrentDateTime: Fri Apr 06 2018 17:53:46 GMT+0530 (IST)



Type: Terrasoft.ODataException

Message: An error occurred while processing this request.

AdditionalInfo: {"error":{"code":"","message":{"lang":"en-US","value":"An error occurred while processing this request."},"innererror":{"message":"Object reference not set to an instance of an object.","type":"System.NullReferenceException","stacktrace":"   at Terrasoft.Core.Entities.Services.ServiceContext.SaveChanges()\r\n   at System.Data.Services.DataService`1.BatchDataService.HandleBatchContent(Stream responseStream)"}}}

Stack trace: 

    at Class.showException (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:54762:42)

    at Class.defaultExceptionHandler (file:///android_asset/www/appV2/MobileApp/app/controller/BaseConfigurationPageController.js:509:24)

    at Class.onDataSavingFailed (file:///android_asset/www/appV2/MobileApp/app/controller/BaseRecordPageController.js:413:8)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Class.failure (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:32658:9)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Class.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:60355:21)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Class.processFailedResponse (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:19582:7)

    at Class.failure (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:19713:10)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Object.requestItemFailure (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:35748:12)

    at Class.onRequestFailure (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:35516:12)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Class.<anonymous> (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:35752:10)

    at Object.callback (file:///android_asset/www/appV2/Common/lib/SenchaTouch/sencha-touch-all-debug.js:10397:26)

    at Class.callFailure (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:36673:7)

    at Class.<anonymous> (file:///android_asset/www/appV2/Common/Terrasoft.Mobile.Combined.js:36660:12)

    at file:///android_asset/www/appV2/Common/lib/datajs/datajs-1.0.3.js:282:13

    at XMLHttpRequest.xhr.onreadystatechange (file:///android_asset/www/appV2/Common/lib/datajs/datajs-1.0.3.js:1053:25)

 

Hello,

It seems that there are some errors in configuration. I recommend you to go to System designer -> Advanced settings -> Configuration and Compile all items. Then fix the errors if some occur. We also recommend to make sure that the details you added in the Mobile application wizard are added correctly. 

Best regards,

Lily

Show all comments