Data entity methods in d365fo.
Mon Oct 28 2024 15:51:59 GMT+0000 (Coordinated Universal Time)
Saved by @Manjunath
Data entity methods in d365fo mapEntityToDataSource // This method is hitting while updating and inserting // we can assign datasource1 recid values to child data source. // public void mapEntityToDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx) { if (_entityCtx.getDatabaseOperation() == DataEntityDatabaseOperation::Insert || _entityCtx.getDatabaseOperation() == DataEntityDatabaseOperation::Update) { if (_dataSourceCtx.name() == dataEntityDataSourceStr(MyEntity, MyDataSource)) { TestCustomer testCustomer = _entityCtx.getRuntimeContextByName( dataEntityDataSourceStr(MyEntity, TestCustomer)).getBuffer(); this.CustomerRecid = testCustomer.recid; } } super(_entityCtx, _dataSourceCtx); } ------------------------------------------------------------------------------------------------------------- postGetStagingData // After inserting into staging this method will trigger // Ref: LedgerJournalEntity public static void postGetStagingData(DMFDefinitionGroupExecution _dmfDefinitionGroupExecution) { MyStaging staging; ttsbegin; while select forupdate staging where staging.DefinitionGroup == _dmfDefinitionGroupExecution.DefinitionGroup && staging.ExecutionId == _dmfDefinitionGroupExecution.ExecutionId && staging.TransferStatus == DMFTransferStatus::NotStarted { staging.Field1 = staging.Field2 + '-' + staging.Field3; staging.Field4 = staging.Field5; staging.update(); } /*update_recordset staging setting OperationalEntityId = curExt() where staging.DefinitionGroup == _dmfDefinitionGroupExecution.DefinitionGroup && staging.ExecutionId == _dmfDefinitionGroupExecution.ExecutionId && staging.TransferStatus == DMFTransferStatus::NotStarted;*/ ttscommit; } ------------------------------------------------------------------------------------------------------------- postTargetProcess // Executes the logic once after processing the target data. public static void postTargetProcess(DMFDefinitionGroupExecution _dmfDefinitionGroupExecution) { if (_dmfDefinitionGroupExecution.StagingStatus == DMFBatchJobStatus::Finished) { MyStaging staging; ttsbegin; while select forupdate staging where staging.DefinitionGroup == _dmfDefinitionGroupExecution.DefinitionGroup && staging.ExecutionId == _dmfDefinitionGroupExecution.ExecutionId && staging.TransferStatus == DMFTransferStatus::Completed { staging.Field1 = staging.Field2 + '-' + staging.Field3; staging.Field4 = staging.Field5; staging.update(); } /*update_recordset staging setting OperationalEntityId = curExt() where staging.DefinitionGroup == _dmfDefinitionGroupExecution.DefinitionGroup && staging.ExecutionId == _dmfDefinitionGroupExecution.ExecutionId && staging.TransferStatus == DMFTransferStatus::Completed;*/ ttscommit; } --------------------------------------------------------------------------------- validateWrite // Validate the each line. // LedgerJournalEntity public boolean validateWrite() { boolean isValid = super(); // Your logic return isValid; } ------------------------------------------------------------------------------------------------------------- validateDelete // Validate the each line. // LedgerJournalEntity public boolean validateDelete() { boolean isValid = super(); // Your logic return isValid; } ------------------------------------------------------------------------------------------------------------- persistEntity //Skip validate field code written in this method //Reference : LogisticsPostalAddressElectronicContactV2Entity public void persistEntity(DataEntityRuntimeContext _entityCtx) { _entityCtx.getEntityRecord().skipDataSourceValidateField( fieldNum(ElectronicContactsEntity, Location), true); super(_entityCtx); } ------------------------------------------------------------------------------------------------------------- initValue // Assign default values // WE can assign number sequence also. // SMMContactPersonV2Entity public void initValue() { if (!this.skipNumberSequenceCheck()) { NumberSeqRecordFieldHandler::enableNumberSequenceControlForField( this, fieldNum(PIDInvestigatorContactPersonEntity, ContactPersonId), ContactPerson::numRefContactPersonId()); } this.ContactForParty = Parameters::find().ContactForParty; super(); } ------------------------------------------------------------------------------------------------------------- initializeEntityDataSource // Assign values to some fields based on some field values. //Reference : LogisticsPostalAddressElectronicContactV2Entity public void initializeEntityDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx) { if (_dataSourceCtx.name() == dataEntityDataSourceStr(MyEntity, MyDataSource)) { ContactPerson contactPerson = ContactPerson::find(this.contactPersonId); if (this.LocationId == '') { DirPartyLocation dirPartyLocation = DirPartyLocation::findOrCreate( contactPerson.party, false); LogisticsLocation logisticsLocation = LogisticsLocation::find( dirPartyLocation.Location); this.LocationId = logisticsLocation.LocationId; this.Location = logisticsLocation.RecId; this.Party = contactPerson.party; _dataSourceCtx.setBuffer(logisticsLocation);//set buffer } } if (_dataSourceCtx.name() == dataEntityDataSourceStr(MyEntity, MyDataSource1)) { DirPartyLocation dirPartyLocationNew = DirPartyLocation::findByPartyLocation(this.Party, this.Location); _dataSourceCtx.setBuffer(dirPartyLocationNew); } super(_entityCtx, _dataSourceCtx); } ------------------------------------------------------------------------------------------------------------- insertEntityDataSource // While inserting into target //Reference :InventOperationalSiteV2Entity public boolean insertEntityDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx) { boolean ret; if (_dataSourceCtx.name() == dataEntityDataSourceStr(InventOperationalSiteV2Entity, ReqSitePolicy)) { _dataSourceCtx.setDatabaseOperation(DataEntityDatabaseOperation::Insert); } ret = super(_entityCtx, _dataSourceCtx); return ret; } ------------------------------------------------------------------------------------------------------------- updateEntityDataSource: // While updating into target //Reference :InventOperationalSiteV2Entity public boolean updateEntityDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx) { boolean ret; ret = super(_entityCtx, _dataSourceCtx); return ret; }
Comments