Showing posts with label PU-20. Show all posts
Showing posts with label PU-20. Show all posts

Default parameters can be wrapped In extension classes COC


Default parameters can be wrapped In extension classes




In Build-8.1 you can override the default parameter by using class extension COC.


Code reference 

There is the method in HCMWORKER table isEmployee in which you can see the default value set with _validFrom & _validto.


  public HcmIsEmployee isEmployee(
        utcdatetime   _validFrom = DateTimeUtil::utcNow(),
        utcdatetime   _validTo = _validFrom
    )
    {
        HcmIsEmployee   hcmIsEmployee = NoYes::No;
        HcmEmployment   hcmEmployment;
        unchecked(Uncheck::XDS)
        {
            if (prmisDefault(_validFrom) && prmisDefault(_validTo))
            {
                select firstonly RecId from hcmEmployment
                where hcmEmployment.Worker == this.RecId
                &&    hcmEmployment.EmploymentType == HcmEmploymentType::Employee;
            }
            else if (_validFrom == _validTo)
            {
                select firstonly ValidTimeState(_validFrom) RecId from hcmEmployment
                where hcmEmployment.Worker == this.RecId
                &&    hcmEmployment.EmploymentType == HcmEmploymentType::Employee;
            }
            else
            {
                select firstonly ValidTimeState(_validFrom, _validTo) RecId from hcmEmployment
                where hcmEmployment.Worker == this.RecId
                &&    hcmEmployment.EmploymentType == HcmEmploymentType::Employee;
            }

            if (hcmEmployment.RecId != 0)
            {
                hcmIsEmployee = NoYes::Yes;
            }

            return hcmIsEmployee;
        }
    }


So we created extension class of Hcmworker with name of Demo_Extension and override the method using COC.



[ExtensionOf(tableStr(HcmWorker))]
final class Demo_Extension
{

    public HcmIsEmployee isEmployee(
        utcdatetime   _validFrom,
        utcdatetime   _validTo 
    )
    {
        HcmIsEmployee   hcmIsEmployee = NoYes::No;
        HcmEmployment   hcmEmployment;
      
        next isEmployee(_validFrom,_validTo);

               unchecked(Uncheck::XDS)
        {
           if (_validFrom == _validTo)
            {
                select firstonly ValidTimeState(_validFrom) RecId from hcmEmployment
                where hcmEmployment.Worker == this.RecId
                &&    hcmEmployment.EmploymentType == HcmEmploymentType::Employee;
            }
            else
            {
                select firstonly ValidTimeState(_validFrom, _validTo) RecId from hcmEmployment
                where hcmEmployment.Worker == this.RecId
                &&    hcmEmployment.EmploymentType == HcmEmploymentType::Employee;
            }

            if (hcmEmployment.RecId != 0)
            {
                hcmIsEmployee = NoYes::Yes;
            }

            return hcmIsEmployee;
        }
    }

}

Now perform build & Sync on your module..

Support Faryal's Cusine


Virtual Fields Vs Computed Fields

  Virtual Field: A virtual field in D365FO is a field that doesn't have a direct representation in the database. It's a field that y...