Skip to main content

Notifications

Announcements

No record found.

Finance | Project Operations, Human Resources, ...
Unanswered

HcmWorkerRecId handling

(1) ShareShare
ReportReport
Posted on by
Hi,

When creating project quotation, there is a field that we can fill called WorkerSalesTaker. This field accepts workers that have a valid employment date.

So what I did, is first i looked for users email who have a person (to make sure email is unique)
Then i looked for workers in general even if they don't have a user, because project quotation allow adding a worker that doesn't have an email (i know that the system allows more than worker to have the same email, but there is nothing more to do, that's why I checked the user's person at first)

How can I simplify this or is what i did good?
    private void setWorkerSalesResponsible(LogisticsElectronicAddressLocator _email, SalesQuotationTable _salesQuotationTable)    {        HcmWorker                   hcmWorker;        LogisticsElectronicAddress  logisticsElectronicAddress;        Logisticslocation           logisticslocation;        DirPartyLocation            dirPartyLocation;        DirPerson                   dirPerson;        DirPersonUser               dirPersonUser;        userInfo                    userInfo;        select userInfo where userInfo.networkAlias == _email            join RecId from dirPersonUser where dirPersonUser.User == userInfo.id            join RecId from hcmWorker where hcmWorker.Person == dirPersonUser.PersonParty;        if(userInfo)        {            _salesQuotationTable.WorkerSalesResponsible = hcmWorker.RecId;        }        else        {            select firstonly RecId from logisticsElectronicAddress                where logisticsElectronicAddress.Locator == _email                    && logisticsElectronicAddress.Type == LogisticsElectronicAddressMethodType::Email                join RecId from logisticslocation where logisticslocation.RecId == logisticsElectronicAddress.Location                join RecId from dirPartyLocation where dirPartyLocation.Location == logisticslocation.RecId                join RecId from dirPerson where dirPerson.RecId == dirPartyLocation.Party                join RecId from hcmWorker where hcmworker.Person == dirPerson.RecId;                if(hcmWorker)                {                    _salesQuotationTable.WorkerSalesResponsible = hcmWorker.RecId;                }        }    }

Also DirPersonUserEntity has this where condition but I don't know from where it came as there are no ranges in the entity. And not sure if i should handle this in my above code

 
  • Suggested answer
    Waed Ayyad Profile Picture
    Waed Ayyad 7,304 Super User 2025 Season 1 on at
    HcmWorkerRecId handling
    Hi 
     
    Is your issue resolved?
     
    Thanks,
    Waed Ayyad
    Please mark this answer as "Verified" if it solved your issue. In order to help others who will face a similar issue in the future
     
  • Suggested answer
    Waed Ayyad Profile Picture
    Waed Ayyad 7,304 Super User 2025 Season 1 on at
    HcmWorkerRecId handling
    Hi,
     
    In order to get "workers that have a valid employment date." you should add HcmEmployment table to your query, 
     
    Select validTimestate(systemDateGet()) worker from hcmEmplyment
     join hcmWorker 
       where hcmEmplyment.Worker == hcmWorker.RecId
     join dirPersonUser
        where hcmWorker.Person == dirPersonUser.PersonParty
    join userInfo
        where  dirPersonUser.User == userInfo.id
         &&    userInfo.networkAlias == _email
     
    Give it a try and tell me the result.
     
    Thanks,
    Waed Ayyad
    Please mark this answer as "Verified" if it solved your issue. In order to help others who will face a similar issue in the future
     
     
  • Waed Ayyad Profile Picture
    Waed Ayyad 7,304 Super User 2025 Season 1 on at
    HcmWorkerRecId handling
    private void setWorkerSalesResponsible(LogisticsElectronicAddressLocator _email, SalesQuotationTable _salesQuotationTable) {
      HcmWorker hcmWorker;
      LogisticsElectronicAddress logisticsElectronicAddress;
      Logisticslocation logisticslocation;
      DirPartyLocation dirPartyLocation;
      DirPerson dirPerson;
      DirPersonUser dirPersonUser;
      userInfo userInfo;
    
      select userInfo where userInfo.networkAlias == _email
      join
      RecId from dirPersonUser where
      dirPersonUser.User == userInfo.id
      join
      RecId from hcmWorker where hcmWorker.Person == dirPersonUser.PersonParty;
    
      if (userInfo) {
        _salesQuotationTable.WorkerSalesResponsible = hcmWorker.RecId;
      } 
      else
      {
        select firstonly RecId from logisticsElectronicAddress where logisticsElectronicAddress.Locator == _email 
      && logisticsElectronicAddress.Type == LogisticsElectronicAddressMethodType::Email join RecId from logisticslocation where logisticslocation.RecId == logisticsElectronicAddress.Location join RecId from dirPartyLocation where dirPartyLocation.Location == logisticslocation.RecId join RecId from dirPerson where dirPerson.RecId == dirPartyLocation.Party join RecId from hcmWorker where hcmworker.Person == dirPerson.RecId; if (hcmWorker) { _salesQuotationTable.WorkerSalesResponsible = hcmWorker.RecId; } } }
    I reformatted the code in order to read it better.
     
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Vahid Ghafarpour – Community Spotlight

We are excited to recognize Vahid Ghafarpour as our February 2025 Community…

Congratulations to the January Top 10 leaders!

Check out the January community rock stars...

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 292,234 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 230,994 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Product updates

Dynamics 365 release plans