Global form & workflow level work in d365fo x++
Global form & workflow level work in d365fo x++
Code:
[ExtensionOf(classStr(FormRun))]
final class DSFormRun_Extension
{
public void init()
{
next init();
if(LedgerParameters::find().IsMandatoryFD)
{
DSMandatoryFinancialDimensionsUtil extensionInstance;
extensionInstance = new DSMandatoryFinancialDimensionsUtil(this);
if(extensionInstance)
extensionInstance.init();
}
}
}Public class DSMandatoryFinancialDimensionsUtil
{
FormRun fRun;
boolean initialized;
public void new(FormRun _formRunInstance)
{
initialized = false;
fRun = _formRunInstance;
//register this extension with the main form
fRun.registerExtensionInstance(classStr(DSMandatoryFinancialDimensionsUtil), this);
}
public void OnValidatedWriteHandler(FormDataSource _formDataSource, FormDataSourceEventArgs _eventArgs)
{
Common _Common = _formDataSource.cursor();
FieldId FieldId = fieldName2Id(_Common.TableId, "DefaultDimension");
if(FieldId && _Common.RecId)
{
int64 DefaultDimension = _Common.(FieldId);
DSMandatoryFinancialDimensions MandatoryDimensions;
Defaultdimensionview dimensionViewtoCheck;
DimensionAttribute DimensionAttribute;
while
select DimensionAttribute
join MandatoryDimensions
where MandatoryDimensions.RefRecId == DimensionAttribute.RecId
&& MandatoryDimensions.Document == _Common.TableId
notexists join dimensionViewtoCheck
where dimensionViewtoCheck.Name == DimensionAttribute.Name
&& dimensionViewtoCheck.DefaultDimension == DefaultDimension
{
if(LedgerParameters::find().DSNotification == DSNotification::Warning)
checkFailed(strFmt("@DSALabel:DSA000265", DimensionAttribute.Name));
else
throw Error(strFmt("@DSALabel:DSA000265", DimensionAttribute.Name));
}
}
}
public void init()
{
if (initialized)
{
return;
}
initialized = true;
for(counter i=1 ; i<=fRun.form().dataSourceCount(); i++)
{
FormDataSource fds = fRun.dataSource(i);
if(DSMandatoryFinancialDimensions::findTable(new DictTable(fds.table()).id()))
{
fds.OnValidatedWrite += eventhandler(this.OnValidatedWriteHandler);
}
}
}
//Look up for Tables
[FormControlEventHandler(formControlStr(DimensionDetails, DSMandatoryFinancialDimensions_Document), FormControlEventType::Lookup)]
public static void DSMandatoryFinancialDimensions_Document_OnLookup(FormControl sender, FormControlEventArgs e)
{
FormControlCancelableSuperEventArgs formControlCancelSuper = e as FormControlCancelableSuperEventArgs;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(SYSTABLEIDVIEW), sender);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange nameQBR, typeQBR;
sysTableLookup.addLookupfield(fieldnum(SYSTABLEIDVIEW, Id));
sysTableLookup.addLookupfield(fieldnum(SYSTABLEIDVIEW, SqlName));
queryBuildDataSource = query.addDataSource(tablenum(SYSTABLEIDVIEW));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
formControlCancelSuper.CancelSuperCall();
}
[FormEventHandler(formStr(DimensionDetails), FormEventType::Initialized)]
public static void DimensionDetails_OnInitialized(xFormRun sender, FormEventArgs e)
{
sender.design().controlName(formControlStr(DimensionDetails, DSMandatoryFinancialDimension)).visible(LedgerParameters::find().IsMandatoryFD);
}
}[ExtensionOf(classStr(Workflow))]
final class Workflow_DS_Extension
{
public static server WorkflowCorrelationId activateFromWorkflowType(workflowTypeName _workflowTemplateName,
recId _recId,
WorkflowComment _initialNote,
NoYes _activatingFromWeb,
WorkflowUser _submittingUser)
{
WorkflowCorrelationId WorkflowCorrelationId = next activateFromWorkflowType( _workflowTemplateName, _recId, _initialNote, _activatingFromWeb, _submittingUser);
TableId _tableId = Workflow::getDocumentTableIdLoc(_workflowTemplateName);
Common _common = new DictTable(_tableId).makeRecord();
select _Common where _Common.RecId == _recId;
FieldId FieldId = fieldName2Id(_Common.TableId, "DefaultDimension");
boolean isValid = true;
if(FieldId)
{
int64 DefaultDimension = _Common.(FieldId);
DSMandatoryFinancialDimensions MandatoryDimensions;
Defaultdimensionview dimensionViewtoCheck;
DimensionAttribute DimensionAttribute;
while
select DimensionAttribute
join MandatoryDimensions
where MandatoryDimensions.RefRecId == DimensionAttribute.RecId
&& MandatoryDimensions.Document == _Common.TableId
notexists join dimensionViewtoCheck
where dimensionViewtoCheck.Name == DimensionAttribute.Name
&& dimensionViewtoCheck.DefaultDimension == DefaultDimension
{
checkFailed(strFmt("@DSALabel:DSA000265", DimensionAttribute.Name));
isValid = false;
}
}
if(!isValid)
{
throw error("Failed to Submit Workflow");
}
return WorkflowCorrelationId;
}
private static tableId getDocumentTableIdLoc(workflowTypeName _workflowTemplateName)
{
Query query;
WorkflowDocument workflowDocument;
SysDictWorkflowType workflowTemplate;
SysDictClass sysDictClass;
WorkflowDocument document;
;
workflowTemplate = new SysDictWorkflowType(_workflowTemplateName);
workflowDocument = classfactory.createClass(className2Id(workflowTemplate.document()));
query = workflowDocument.getQuery();
return query.dataSourceNo(1).table();
}
}
Comments
Post a Comment