protected void createWorker(){ DirPersonName dirPersonName; DirPerson dirPerson; HcmWorker newHcmWorker; CompanyInfo companyInfo; HcmPosition hcmPosition; HcmPositionDuration hcmPositionDuration; HcmPositionDetail hcmPositionDetail, fromHcmPositionDetail; FirstName firstName; LastName lastName; ValidFromDateTime startDate; ValidToDateTime endDate; HcmPersonnelNumberId workerId; workerId = 'Worker-01'; firstName = 'Worker First name'; firstName = 'Worker Last name'; startDate = DateTimeUtil::utcNow(); endDate = DateTimeUtil::applyTimeZoneOffset(DateTimeUtil::maxValue(), DateTimeUtil::getUserPreferredTimeZone()); ttsBegin; dirPersonName.FirstName = firstName; dirPersonName.LastName = lastName; companyInfo = CompanyInfo::find(); newHcmWorker = HcmWorker::findByPersonnelNumber(workerId, true); //Hire new Worker if Worker not found if(!newHcmWorker) { fromHcmPositionDetail = HcmPositionDetail::findByPosition(11111111);// default position details to creating a new worker // Create a position with position details and duration hcmPosition.clear(); hcmPosition.initValue(); hcmPosition.PositionId = NumberSeq::newGetNum(NumberSeqReference::findReference(extendedTypeNum(HcmPositionId)), true).num(); hcmPosition.insert(); buf2Buf(fromHcmPositionDetail, hcmPositionDetail); hcmPositionDetail.Position = hcmPosition.RecId; hcmPositionDetail.ValidFrom = startDate; hcmPositionDetail.ValidTo = DateTimeUtil::maxValue(); hcmPositionDetail.insert(); hcmPositionDuration.initValue(); hcmPositionDuration.Position = hcmPosition.RecId; hcmPositionDuration.ValidFrom = startDate; hcmPositionDuration.ValidTo = DateTimeUtil::maxValue(); hcmPositionDuration.insert(); newHcmWorker = HcmWorker::find(HcmWorkerTransition::newHireHcmWorker( dirPersonName, workerId, hcmPosition.RecId, startDate, endDate, startDate, endDate, companyInfo.RecId, HcmEmploymentType::Employee)); } // Updating an existing worker else { // Updating an existing worker DirPersonName if (newHcmWorker) { dirPersonName = DirPersonName::find(newHcmWorker.Person); if(dirPersonName.FirstName != firstName || dirPersonName.LastName != lastName) { dirPersonName.clear(); dirPersonName.FirstName = firstName; dirPersonName.LastName = lastName; dirPerson.initValue(); dirPerson.updateName(dirPersonName); if (dirPerson.validateWrite()) { dirPerson.insert(); dirPersonName.Person = dirPerson.RecId; dirPersonName.ValidFrom = DateTimeUtil::minValue(); dirPersonName.ValidTo = DateTimeUtil::maxValue(); if (dirPersonName.validateWrite()) { dirPersonName.insert(); } } newHcmWorker.Person = dirPerson.RecId; if (newHcmWorker.validateWrite()) { newHcmWorker.update(); } } //Update worker assignment HcmWorkerTransition::newUpdateHcmEmployment( HcmEmployment::findByWorkerLegalEntity(newHcmWorker.RecId, companyInfo.RecId), startDate, endDate); } } ttsCommit; }
If you found value in what I share, I've set up a Buy Me a Coffee page as a way to show your support.
Buy Me a CoffeeNo comments. Be the first one to comment on this post.
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics 365 FO.
Authors are allowed to set their own "buy me a coffee" link.
Join us.