Hello!

I'm trying to show a pop up message on the mobile app when a certain condition is given.

Is there a way to do this?

I'm doing this right now:





Terrasoft.sdk.Model.addBusinessRule("OrderProduct", {

    name: "SaveValidationAprov",

    ruleType: Terrasoft.RuleTypes.Custom,

    events: [Terrasoft.BusinessRuleEvents.Save],

    executeFn: function(record, rule, column, customData, callbackConfig) {

            debugger;

        var IsFieldValid = true;

        if ( (record.get("IcoTotalAvailableStock")) < (record.get("Quantity")) ){

            alert("There is not enough stock");

            IsFieldValid = false;

        }

       

        Ext.callback(callbackConfig.success, callbackConfig.scope, [IsFieldValid]);

    }






Thanks!

})

Like 0

Like

3 comments
Best reply

Hello Fernando,

You can display a message in mobile using the following: 

Terrasoft.MessageBox.showMessage("This is a message!");

This works from code in the mobile client - as Oscar mentioned, there's no option for sending a message from the server to the mobile client, however, from within the mobile client code, you can use the above.

Ryan

Hello,

 

As stated here there is no possibility to display such popups in the mobile app. However here is an article on how to setup push notifications in the mobile app https://academy.creatio.com/docs/user/bpm_tools/bpm_process_examples/ne…

 

You can trigger it once the record is modified and perform the condition check there directly and send a push notification about the result.

 

Best regards,

Oscar

Oscar Dylan,

Thank you for your time and knowledge :)

Hello Fernando,

You can display a message in mobile using the following: 

Terrasoft.MessageBox.showMessage("This is a message!");

This works from code in the mobile client - as Oscar mentioned, there's no option for sending a message from the server to the mobile client, however, from within the mobile client code, you can use the above.

Ryan

Show all comments

Until recently we have been using the Excel Reports builder without any issue.  We have now started receiving an error (below) when we try to generate a report with calculated Net Sales Entered.  If we remove the columns or generate a different report without these columns there is no issue.  If we add the columns back we again receive the error.  This is an excel report we've had and ran for several months and just now began receiving the error.

 

A severe error occurred on the current command. The results, if any, should be discarded. Operation cancelled by user. Please check filter settings

Like 1

Like

1 comments

Hi Garrett!

I recommend checking your calculation. If the final calculation is more than 2,147,483,647 in a field, integer overflow error occurs. Also, you might want to try basic export with the same parameters or build a dashboard using your data. If errors occur in these cases, the problem is caused not by the add-on but by data.

Show all comments

Hello Community,

 

I have a requirement, when a user changes the DCM status manually validation should trigger. To achieve this I am using asynValidate function and the validation is working fine.

But the issue here is status is not restoring back automatically and also both Save and Cancel button is showing as a result when I am trying to create a record in the connected detail the validation is triggering again. I have to manually click on Cancel before I can do any changes in the details. Please refer the screenshot below.

Before validation:

After validation:

 

Is there anyway after validation it should reset back to Close like in the 1st image?

 

Thanks,

Sourav Kumar Samal

Like 0

Like

4 comments
Best reply

Anastasiia Zhuravel,

 

I have resolved the issue. To acheive the desired output I have added a small line after the error message as follows:

			MandatoryValidation: function(callback, scope){
				var DCMstatus = this.get("MarketingPlansStatus").displayValue;
				if(DCMstatus === "Business Owner Review"){
					// Some query
                                        callback.call(scope || this, {
						success: false,
                                                message: "Error message"
					});
                                        this.reloadEntity();
				}else{
					callback.call(scope || this, {
						success: true
					});
				}
			},

Note: If the asynValidate is being used in this.NewMode(), avoid adding this.reloadEntity() as this may clear all the fields.

 

Thanks,

Sourav Kumar Samal

Hello, 

 

Could you please clarify how exactly the manually validation functionality has been achieved? Was it done by code?

 

Thank you in advance!

Best regards,

Anastasiia

Anastasiia Zhuravel,

 

Yes it has been achieved by using 'asyncValidate' function. The validation will only trigger when DCM status changed to "Business Owner Review".

 

Thanks,

Sourav

Anastasiia Zhuravel,

			asyncValidate: function(callback, scope) {
				if (this.isEditMode()){
					this.callParent([function(response) {
						if (!this.validateResponse(response)) {
							return;
						}
						Terrasoft.chain(
							function(next) {
								this.MandatoryValidation(function(response) {
									if (this.validateResponse(response)) {
										next();
									}
								}, this);
							},
							function(next) {
								callback.call(scope, response);
								next();
							}, this);
					}, this]);
				}else {
					this.callParent(arguments);
				}
			},
			MandatoryValidation: function(callback, scope){
				var DCMstatus = this.get("MarketingPlansStatus").displayValue;
				if(DCMstatus === "Business Owner Review"){
					// Some query
                                        callback.call(scope || this, {
						success: false,
                                                message: "Error message"
					});
				}else{
					callback.call(scope || this, {
						success: true
					});
				}
			},

 

Anastasiia Zhuravel,

 

I have resolved the issue. To acheive the desired output I have added a small line after the error message as follows:

			MandatoryValidation: function(callback, scope){
				var DCMstatus = this.get("MarketingPlansStatus").displayValue;
				if(DCMstatus === "Business Owner Review"){
					// Some query
                                        callback.call(scope || this, {
						success: false,
                                                message: "Error message"
					});
                                        this.reloadEntity();
				}else{
					callback.call(scope || this, {
						success: true
					});
				}
			},

Note: If the asynValidate is being used in this.NewMode(), avoid adding this.reloadEntity() as this may clear all the fields.

 

Thanks,

Sourav Kumar Samal

Show all comments

Hey Everyone, 

 

I would like the user to be able to add multiple notes that are time stamped, within the opportunities modules. 

 

It's actually the functionality of the "feed" that I am after. But I don't want each feed post/note to be shared + It would be good to change the placeholder text to something rather than 'What are you working on".

 

Would it be possible to change this just for one module? With/without dev help.

 

Thanks all. 

Like 1

Like

1 comments

Hi Mark,

 

To change the "What are you working on message" you need to create a replacing module for the "SocialFeed" module (for example with the code below):

 define("SocialFeed", [], function() {
		return {
			methods: {
			}
		};
	});

and then find the WritePostHint localizable string and modify its value. After the new schema is saved and the page refreshed you will get a new message (but please note that it will be done for all feed containers in all pages). If you need this change to be applied only to one section feed then the logic of the "SocialMessageEdit" element's "placeholder" property should be modified (in the same "SocialFeed" module).

 

As for different feed posts visibility and sharing: it's a better approach to use feed channels instead of posting into some record feed in case you need to not display every single feed post in the record. The feed itself was designed to leave comments on the workflow or tag someone in the record. Or you can try enabling record permissions for the "SocialMessage" object (that stands for feed messages) and create some business process that automatically distributes access rights based on some conditions.

 

Best regards,

Oscar

Show all comments

Hi,

 

Can some one help me,

 

I am using this tutorial for making section grid editable: https://community.creatio.com/articles/editable-grid-section#comment-81…

 

And I have two errors and it doesn't work.

 

My errors are: 

-Heading for label "DataGrid" not found.

-Unable to find column by configuration: "{"className":"Terrasoft.ConfigurationGrid","generateControlsConfig":{"bindTo":"generatActiveRowControlsConfig"},"changeRow":{"bindTo":"changeRow"},"unSelectRow":{"bindTo":"unSelectRow"},"onGridClick":{"bindTo":"onGridClick"},"initActiveRowKeyMap":{"bindTo":"initActiveRowKeyMap"},"activeRowAction":{"bindTo":"onActiveRowAction"},"multiSelect":{"bindTo":"MultiSelect"},"name":"DataGrid"}" .

Like 0

Like

2 comments

Can you post the complete code? Won't be able to see what might be wrong without that.

Ryan

Hi Marko,

 

Please check my reply in the original article, this should help.

 

Best regards,

Oscar

Show all comments

Hi Team,

 

I have configured one business process for creating one notification as soon as a lookup value in a section changes. I have referred the article: https://community.creatio.com/questions/create-notification-communication-center.

 

The issue that I'm facing is not getting any count alert for the new notification received although the notification is present in the notification center info section. The alert for the new notifications count is only visible if the user is already logged in to the system.

 

 

Kindly help.

 

Thanks,

Sarika

Like 0

Like

6 comments

Hello Sarika, 

 

Could you please check if the checkbox "Run following elements in the background" is cleared for the start signal of this business process?

 

If not, please clear it, save the changes and relogin to the system. 

Let us know if the issue persists despite the provided recommendation.

 

Best regards,

Anastasiia

Hi Anastasiia, 

 

I followed your recommendation but the issue is still the same. Please suggest me what to do

Hi team,

 

Please suggest me a solution for this.

 

Thanks

Hi Sarika,

 

I am reaching out to see if you were to resolve the issue. We have a similar problem with our instance as well. 

 

Thanks

Hi Nirupama,

 

I removed the 'message is need to send' parameter from the add notification element and was able to get the notifications successfully.

 

Hope this helps in your case as well.

 

Best Regards,

Sarika

Sarika Sharma,

Thank you for your response. Really appreciate it!

Just a follow up question - did removing that parameter have any impact on the notification getting sent? Were you able to find out what it is used for?

Show all comments

Hi Community,

 

We are trying to integrate the Zadarma Widget with Creatio. Our main objective is to load this widget every time we press the "Phone" button (marked with red square in the following image).

In order to achieve this, we need to call the necessary dependencies, so it's possible to execute the "zadarmaWidgetFn" function, as you can see on the next image.

require.config({
	paths: {
		loader_phone_lib: '//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?sub_v=62',
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	},
});
 
define("CtiPanel", ["ServiceHelper", "loader_phone_lib", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

However, we are getting the following error while loading these dependencies, because one of the files "loader_phone_lib" (https://my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?s…) has other dependencies that are called through tags.

We would like to know, how can we load these dependencies, that are inside the "loader_phone_lib" file, without getting this error?

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

Like 3

Like

4 comments

Hi Pedro,

 

According to https://requirejs.org/docs/errors.html#mismatch there should be the anonymous define() method inside the script HTML tag in one of the dependencies that are loaded. So to fix the error you need to check all the steps described in the requirejs.org document.

 

Best regards,

Oscar

Hi Oscar,

 

Thank you for the response.

 

Yes, some of the scripts have the anonymous define() method inside, so by following the documentation you provided, I removed the dependencies from the "loader_phone_lib" script and added them using the code bellow:

....
require.config({
	paths: {
		zadarmaSocket: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/socket.io",
		zadarmaDetectWebRTC: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/detectWebRTC.min",
		zadarmaJssip: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/jssip.min",
		zadarmaMd5: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/md5.min",
		zadarmaWidgetAPI: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget-api.min.js?sub_v=62",
		zadarmaWidget: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/widget.min.js?sub_v=62",
		loader_phone_fn: "//my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?sub_v=62"
	}
});
 
define("CtiPanel", ["ServiceHelper", "zadarmaSocket", "zadarmaDetectWebRTC", "zadarmaJssip", "zadarmaMd5", "zadarmaWidgetAPI", "zadarmaWidget", "loader_phone_fn"], function(ServiceHelper) {
	return {
		messages: {},
		mixins: {},
		attributes: {},
		methods: {
			callPhoneNumber: function (){
				var number = this.get("PhoneNumber");
				window.console.log(number);
 
				var sipValue = "SIP";
 
				var payload = {
					sip: sipValue
				};
 
				ServiceHelper.callService("ImdZadarmaWebHookService", "ZadarmaWebRTCKey", function(response) {
					var result = JSON.parse(response.ZadarmaWebRTCKeyResult);
					window.console.log(result.key);
					zadarmaWidgetFn(result.key, 'SIP', 'square', 'en', true, "{left:'10px',top:'5px'}");
				}, payload, this);
			}
		},
		diff: []
	};
});

This piece of code manage to "fix" the previous error. However, I'm getting a new error, which is related to the Socket.Io (zadarmaSocket), as you can see on the next image:

I think this error is caused by the fact that one of the dependencies cannot reach specific functions/vars from other dependencies. I've tried to use the "shim" attribute, in order to create a sequence for loading the dependencies and it didn't work.

 

Thanks in Advance.

 

Best Regards,

Pedro Pinheiro

 

Pedro Pinheiro,

 

Hello,

 

The new code returns another error message on my side, but it happens since there is no ImdZadarmaWebHookService service and ZadarmaWebRTCKey method in my app. Can you please also share the code of this part?

 

Thank you!

 

Best regards,

Oscar

Hello Oscar Dylan,

 

The ZadarmaWebRTCKey method is responsible for requesting the WebRTC key from a specific "Client Key", "Client Secret" and SIP Number. I use this key to start the communication between the widget and Zadarma.

 

ImdZadarmaWebHookService.cs

 /* The custom namespace. */
namespace Terrasoft.Configuration.ImdZadarmaWebHookServiceNamespace
{
    using System;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using Terrasoft.Core;
    using Terrasoft.Web.Common;
    using Terrasoft.Core.Entities; 
	using System.Web;
	using System.Collections.Generic;
	using Terrasoft.Configuration.ImdZadarmaAPI;
	using System.Net.Http;
 
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ImdZadarmaWebHookService: BaseService
    {
        [OperationContract]
       	[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
		public string ZadarmaWebRTCKey(string sip){
 
            //ZadarmaApi is a class that contains all the methods to work with Zadarma API
			var zadarma = new ZadarmaApi("KEY", "SECRET");
 
 
			SortedDictionary&lt;string, string&gt; parameters = new SortedDictionary&lt;string, string&gt;();			
			parameters.Add("sip", sip);
 
            var response = zadarma.Call("/v1/webrtc/get_key/", parameters, HttpMethod.Get);
            string str = (string) response.Content.ReadAsStringAsync().Result;
            return str;
		}
    }   
}

The code for ZadarmaApi class can be found here:

https://github.com/zadarma/user-api-cs-v1/blob/master/ZadarmaAPI/ZadarmaApi.cs

 

Best Regards,

Pedro Pinheiro

Show all comments

Hi community,

 

In my UAT environment, I revoked a user's system administrator permission by removing him from the "system administrators" role.

The user continues to have the same system administrator permission.

I have tried clear the redis cache, but the problem persists.

 

 

Like 0

Like

2 comments

Hi Stefano,

 

I had a similar problem, in case the problem was that the was not sys admin but was manager of a user with sysadmin role.

And being a manager you inherit the roles and the users you are managing.

 

hope it helps,

Luis

Luis Tinoco Azevedo,

thank you Luis for your suggestion

Show all comments

Hello community,

 

I am using perform task inside section cases. The task updates the entity stage. After the stage is updated from the task I want to catch this event and reload the entity from the client side. I tried using the following approach but nothing happens

"Stage": {
				dependencies: [
					{
						columns: ["Stage"],
						methodName: "onChangeStage"
					}
				]
			}

The below script is called only when the stage is updated directly from the client side and not from a task or a business process. Is there a way to catch this event from the client side?

Like 0

Like

1 comments
Best reply

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Since the automatic changing of a stage happens outside of the context of a page, you won't receive any events from the change on the page itself. 

The only option is to either use a process, entity subprocess or entity event listener class (and starts with a signal of case modified in stage field) and if it's changed to the appropriate stage you send a signal to the client. You can see how to send a message from the server (such as from a process) to the client here: https://customerfx.com/article/sending-a-message-from-server-side-c-to-…

You'll add code to the page to listen for this message and then reloadEntity to refresh the page. 

BTW, if you want to use an entity event listener class instead of a process, I've outlined how to do that here https://customerfx.com/article/adding-code-to-listen-for-entity-events-… although using a process is quick and easy.

Ryan

Show all comments

Hello Creatio community !

I would like to call the Creatio Webservice ..../0/rest/FinAppSpecService/InheritSpecificationsForFinApp  which automatically populates the Product Terms in Application, inside a Business Process. I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem ?

Like 1

Like

11 comments
Best reply

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Hello Petrika,

 

It's possible if you create a webservice record where the POST method complete address will be {siteURL}/0/rest/FinAppSpecService/InheritSpecificationsForFinApp and in the request parameters specify the following header parameters:

 

BPMCSRF

ForceUseSession (default value set to true)

Connection (default value set to true)

 

and the following cookies parameters:

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

in the webservice settings (since the FinAppSpecService service is not anonymous). The most difficult part here is setting cookies parameters. I could only recommend the following scenario here:

 

1) Create a separate authentication service webservice request (to {siteURL}/ServiceModel/AuthService.svc/Login)

2) Specify UserName and UserPassword request body parameters:

3) Add the Set-Cookie response header parameter:

4) Validate the response by performing a test call. It should return the Set-Cookie header that will be then used in the process:

5) Create a separate business process and configure it to run once per hour or once per half a day (depending on the value of the "UserSessionTimeout" system setting). The set-Cookie response header should be parsed to extract values for the

 

BPMSESSIONID

UserName

BPMLOADER

BPMCSRF

.ASPXAUTH

 

headers. It can be done by means of the script-task. Extracted values should be set as values for the system settings created separately (one per each header).

 

6) In your process where you need to call the FinAppSpecService in the "Call webservice" element set the values for the cookie parameters as values from the system settings from step 5. And also specify the value for the BPMCSRF header parameter.

 

7) Add all other request body parameters and call the service.

 

This approach should work since we simulate the Postman call of the same service, but set cookie parameters and header parameters via the separate business process and system settings.

 

Best regards,

Oscar

Thank you very much for you response Oscar. It was very helpful.

Is there any article or example in the academy regarding point 5, parsing set-Cookie response header to extract values (inside a script task) ?

Petrika,

 

This is the task that should be covered by the C# code, using substring method for example. It's something as if you had a task to substring the "test" word from the "Hello test wordl!" string. Please find the way using the topics as the following:

 

https://stackoverflow.com/questions/9505400/extract-part-of-a-string-be…

 

Please also notice that the cookies values length is always constant and all of them start with the cookie name and the "=" character and end with the ";" symbol. This shouldn't be a difficult task.

 

Once string parts are extracted you can set them as parameter values (here is the Academy article that may be useful) and use these parameters in formulas to set parameter values to correspondent system settings.

 

Best regards,

Oscar

Oscar Dylan,

BPMSESSIONID is generated in the set-Cookie response header, because it seems that it's not found there ? I managed to extract everything else as required

Petrika,

 

Sorry, made a little mistake. BPMSESSIONID cookie is not returned as a response to the /AuthService.svc/Login call, but as a result of the first call to any other working endpoint like /0/odata/Account after authentication. Just try it in Postman and check the response headers in the next request that goes after AuthService request.

 

Best regards,

Oscar

Oscar ,

When i make a request from postman to another web-service the BPMSessionId is generated, I tested it.

Are you suggesting that i put the BPMSESSIONID as a reponse parameter to the InheritSpecificationsForFinApp, not as a request parameter ?

If i understand correctly.

 

Petrika,

If you're calling a configuration service, there's no need to actually use it as a service. It's simply a C# class that you can use directly.

For example, something like this: 

var svc = new Terrasoft.Configuration.FinAppSpecService();
svc.InheritSpecificationsForFinApp()

Depending on how the configuration service is implemented, you might need to also pass a UserConnection to it, which means you'd need to modify the service to allow this to be passed in.

You had mentioned: "I can not call it in a c# class because the the constructor of FinAppSpecService class does not accept UserConnection as e parameter. Which is the proper way to solve this problem?"

Why not just add two constructors to the class? One that is the default constructor and one that accepts a UserConnection? In the class you could add a method that either returns your private UserConnection variable (passed in by code consuming the class directly) or the one from the session (or BaseService) if being used as a service. I do it this way often and it is far more easy to consume the class directly than to call as a service when it's not needed to be used as a service (not to mention the extra overhead of using it as a service rather than consuming it directly)

Ryan

Ryan Farley,

 

FinAppSpecService() class constructor doesnt allow UserConnection as an argument. I can not modify the FinAppSpecService class because its part of the configuration. 

 

Ryan Farley,

Are you suggesting that i copy the 

FinAppSpecService  class to my package and make proper modifications to it ?

Petrika,

I was assuming this was your class, that you could modify, not a configuration one that was uneditable by you. 

I assume that FinAppSpecService inherits BaseService? If so, it has a UserConnection property that is protected (that does have a setter) as well as a protected constructor that accepts a UserConnection. Since they are protected you should be able to access them if your class is derived from it. 

it might work to just make a new class that inherits from the FinAppSpecService that allows a UserConnection to be passed? I've not tried that but it might work - just to throw out some ideas.

Something like this: 

public class UsrFinAppSpecServiceWrapper : FinAppSpecService
{
    public void SetUserConnection(UserConnection)
    {
        this.UserConnection = UserConnection;
    }
}

Then to use it:

var svc = new Terrasoft.Configuration.UsrFinAppSpecServiceWrapper();
svc.SetUserConnection(UserConnection);
svc.InheritSpecificationsForFinApp();

Again, I've not tested/tried that before, but I would assume something like this could work? If it does, still far easier route than calling it as a service IMO.

Ryan

Ryan Farley,

Ryan the response i get from the back-end 

is the same as the reponse i get from the front-end 

Still When i call this web-service from the back-end my goal isnt achieved. As you can see the detail of product terms isnt automaticalluy generated

Dont know if am missing something here

Thank you Petrika

Show all comments