Because the system can not query data of activities by "Recid", we have to change it to query with the activity number. We will use Coc for class FormRunDataHelper when users press the link from the email.
using Microsoft.Dynamics.AX.Framework.Utilities.UrlHelper;
[ExtensionOf(classStr(FormRunDataHelper))]
final class FormRunDataHelper_C_DEV_Extension
{
/// <summary>
/// ApplyRequestQueryParameter
/// </summary>
/// <param name = "_requestQueryParameter">_requestQueryParameter</param>
/// <param name = "logger">logger</param>
/// <returns>can apply/not</returns>
public boolean ApplyRequestQueryParameter(RequestQueryParameter _requestQueryParameter, IRecordContextLogger logger)
{
boolean apply;
smmActivities smmActivities;
apply = next ApplyRequestQueryParameter(_requestQueryParameter, logger);
FormRun formRunInstance = this.formRun();
if (formRunInstance)
{
FormDataSource fds = this.FindDataSource(_requestQueryParameter.DataSource);
if(fds.table() == tableNum(smmActivities))
{
for (int i = 0; i < _requestQueryParameter.GetFieldValueCount(); i++)
{
str field = _requestQueryParameter.getField(i);
str value = _requestQueryParameter.getValue(i);
smmActivities = smmActivities::findWithRecId(str2Num(value));
value = smmActivities.ActivityNumber;
int fieldid = fieldName2Id(fds.table(), 'ActivityNumber');
str tableName = tableId2Name(fds.table());
FormDataSource masterDataSource = fds.masterObjectSet();
Query query = null;
if (masterDataSource)
{
query = masterDataSource.queryRun().query();
}
fds.queryRunQueryBuildDataSource().addRange(fieldid).value(value);
apply = true;
}
}
}
return apply;
}
}
Generate a deep link for the "Get a link" from the activities form.
using Microsoft.Dynamics.AX.Framework.Utilities;
[ExtensionOf(formStr(FormRunGetLinkAction))]
final class FormRunGetLinkAction_F_DEV_Extension
{
/// <summary>
/// run
/// </summary>
public void run()
{
str linkGenerate;
smmActivities smmActivities;
next run();
// DEV_Phase2_BugFix - Start
if (this.args() && this.args().caller() && this.args().callerType() == UtilElementType::Form)
{
FormRun callingForm = this.args().caller();
if (
this.args().dataset() == tableNum(smmActivities) &&
callingForm.isRootNavigable()
&& callingForm.isListDetailsStyle()
&& (callingForm.getViewOption() == FormViewOption::Details || callingForm.getViewOption() == FormViewOption::Header)
)
{
smmActivities = smmActivities::findWithRecId(this.args().record().RecId);
linkGenerate = CreateDeepLinkBSL::buildAXURL(callingForm.args().menuItemName(), callingForm.args().menuItemType(), formDataSourceStr(smmActivities,smmActivities), fieldstr(smmActivities, ActivityNumber), smmActivities.ActivityNumber );
Link.text(linkGenerate);
}
}
// DEV_Phase2_BugFix - End
}
}
Comments
Post a Comment