Monday, 23 October 2023

registerOverrideMethod and Lookup in D365 FO X++

 /// <summary>

/// This class is an eventhandler for projTable

/// </summary>

public class ULTProjTableEventHandler

{

    /// <summary>

    /// This method is used to oninitialized value

    /// </summary>

    /// <param name="sender">FormDataSource</param>

    /// <param name="e">FormDataSourceEventArgs</param>

    [FormDataSourceEventHandler(formDataSourceStr(ProjTable, ProjTable), FormDataSourceEventType::Initialized),

     SuppressBPWarning('BPParameterNotUsed', 'Parameter required by the event interface')]

    public static void ProjTable_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)

    {

        var overrides = ULTProjTableFormExtensionOverrides::construct();

        

        //ULTProjectCoordinator

        sender.object(fieldNum(ProjTable, ULTProjectCoordinator)).registerOverrideMethod(methodStr(FormDataObject, modified),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectCoordinator_OnModified), overrides);


        sender.object(fieldNum(ProjTable, ULTProjectCoordinator)).registerOverrideMethod(methodStr(FormDataObject, lookupReference),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectCoordinator_OnlookupReference), overrides);


        sender.object(fieldNum(ProjTable, ULTProjectCoordinator)).registerOverrideMethod(methodStr(FormDataObject, resolveReference),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectCoordinator_OnresolveReference), overrides);


        //ULTProjectTechnicalLead

        sender.object(fieldNum(ProjTable, ULTProjectTechnicalLead)).registerOverrideMethod(methodStr(FormDataObject, modified),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectTechnicalLead_OnModified), overrides);


        sender.object(fieldNum(ProjTable, ULTProjectTechnicalLead)).registerOverrideMethod(methodStr(FormDataObject, lookupReference),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectTechnicalLead_OnlookupReference), overrides);


        sender.object(fieldNum(ProjTable, ULTProjectTechnicalLead)).registerOverrideMethod(methodStr(FormDataObject, resolveReference),

            methodStr(ULTProjTableFormExtensionOverrides, ULTProjectTechnicalLead_OnresolveReference), overrides);

    }


}

----------------

/// <summary>

/// This class is create for projtable form 

/// </summary>

public class ULTProjTableFormExtensionOverrides

{

    protected void new()

    {

    }


    /// <summary>

    /// Constructs a new instance of <c>ULTProjTableFormExtensionOverrides</c> class.

    /// </summary>

    /// <returns>

    /// A <c>ULTProjTableFormExtensionOverrides</c> class.

    /// </returns>

    public static ULTProjTableFormExtensionOverrides construct()

    {

        return new ULTProjTableFormExtensionOverrides();

    }


    /// <summary>

    /// This method is used to call modified event 

    /// </summary>

    /// <param name = "_targetField">FormDataObject</param>

    public void ULTProjectCoordinator_OnModified(FormDataObject _targetField)

    {

        FormDataSource formDataSource = _targetField.dataSource();

        projTable           projTable = formDataSource.cursor();


        if (!projTable.editSubProj(fieldNum(ProjTable, ULTProjectCoordinator), projTable.ULTProjectCoordinator, projTable.orig().ULTProjectCoordinator))

        {

            projTable.ULTProjectCoordinator = projTable.orig().ULTProjectCoordinator;

        }

    }


    /// <summary>

    /// This method is used to call modified event

    /// </summary>

    /// <param name = "_targetField">FormDataObject</param>

    public void ULTProjectTechnicalLead_OnModified(FormDataObject _targetField)

    {

        FormDataSource formDataSource = _targetField.dataSource();

        projTable           projTable = formDataSource.cursor();


        if (!projTable.editSubProj(fieldNum(ProjTable, ULTProjectTechnicalLead), projTable.ULTProjectTechnicalLead, projTable.orig().ULTProjectTechnicalLead))

        {

            projTable.ULTProjectTechnicalLead = projTable.orig().ULTProjectTechnicalLead;

        }

    }


    /// <summary>

    ///  This method is called onLookupReference

    /// </summary>

    /// <param name = "_formReferenceControl">FormReferenceControl</param>

    /// <returns>Common</returns>

    public Common ULTProjectCoordinator_OnlookupReference(FormReferenceControl _formReferenceControl)

    {

        FormDataSource formDataSource =  _formReferenceControl.dataSourceObject();

        projTable           projTable           = formDataSource.cursor();


        return ProjWorkerLookup::lookupWorker(_formReferenceControl, projTable, false);

    }


    /// <summary>

    /// This method is used to call resolve reference

    /// </summary>

    /// <param name = "_formReferenceControl">FormReferenceControl</param>

    /// <returns>Common</returns>

    public Common ULTProjectCoordinator_OnresolveReference(FormReferenceControl _formReferenceControl)

    {

        FormDataSource formDataSource =  _formReferenceControl.dataSourceObject();

        projTable           projTable           = formDataSource.cursor();

        HcmWorker        hcmWorker        = HcmWorker::find(_formReferenceControl.value());


        if (hcmWorker.RecId && !ProjWorkerLookup::validateWorker(hcmWorker.RecId, projTable, false))

        {

            hcmWorker = null;

        }


        return hcmWorker;

    }


    /// <summary>

    ///  This method is called onLookupReference

    /// </summary>

    /// <param name = "_formReferenceControl">FormReferenceControl</param>

    /// <returns>Common</returns>

    public Common ULTProjectTechnicalLead_OnlookupReference(FormReferenceControl _formReferenceControl)

    {

        FormDataSource formDataSource =  _formReferenceControl.dataSourceObject();

        projTable           projTable           = formDataSource.cursor();


        return ProjWorkerLookup::lookupWorker(_formReferenceControl, projTable, false);

    }


    /// <summary>

    /// This method is used to call resolve reference

    /// </summary>

    /// <param name = "_formReferenceControl">FormReferenceControl</param>

    /// <returns>Common</returns>

    public Common ULTProjectTechnicalLead_OnresolveReference(FormReferenceControl _formReferenceControl)

    {

        FormDataSource formDataSource =  _formReferenceControl.dataSourceObject();

        projTable           projTable           = formDataSource.cursor();

        HcmWorker        hcmWorker        = HcmWorker::find(_formReferenceControl.value());


        if (hcmWorker.RecId && !ProjWorkerLookup::validateWorker(hcmWorker.RecId, projTable, false))

        {

            hcmWorker = null;

        }


        return hcmWorker;

    }


}

No comments:

Post a Comment

validate offsetLedgerDimension in d365 FO

 /// <summary> /// This class is used to validate offsetLedgerDimension /// </summary> class PNG_InventMovValidateOffsetLedgerDi...