Hello,
I need to make a button visible based on a few conditions
1. If current user contact record has a lookup value of "Approver"
and
2. If account record of the current user contact has lookup value "Enterprise"
Since there are 2 tables to be queried, I understand I need to use callbacks and chaining. This does not seem to work well for me. I have also tried passing a callback function within a callback function, but still its not working well. Can someone please give an example of multiple callbacks?
Thanks
Like
Please refer to the below threads.
1. https://community.creatio.com/articles/getentity-schema-works-asynchron….
2. https://community.creatio.com/articles/how-can-we-use-asyncvalidate-fun….
BR,
Bhoobalan Palanivelu.
There's no need for the multiple callbacks since this can be done in a single ESQ query. For example, the ESQ below retrieves both the current user's Type value as well as the current user's account Type value in the same call.
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Contact"
});
esq.addColumn("Type");
esq.addColumn("Account.Type", "AccountType");
esq.getEntity(Terrasoft.SysValue.CURRENT_USER_CONTACT.value, function (result) {
if (result.success) {
var conType = result.entity.values.Type,
accType = result.entity.values.AccountType;
if ((conType && conType.displayValue == "Approver")
&& (accType && accType.displayValue == "Enterprise")) {
// do something
}
}
}, this);However, to nest a ESQ in a callback of another ESQ it would look like this:
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Contact"
});
esq.addColumn("Type");
esq.addColumn("Account");
esq.getEntity(Terrasoft.SysValue.CURRENT_USER_CONTACT.value, function (result) {
if (result.success) {
var conType = result.entity.values.Type,
account = result.entity.values.Account;
if (conType && conType.displayValue == "Approver") {
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Account"
});
esq.addColumn("Type");
esq.getEntity(account.value, function (result) {
if (result.success) {
var accType = result.entity.values.Type;
if (accType && accType.displayValue == "Enterprise") {
// do something
}
}
}, this);
}
}
}, this);Ryan