Project Item Journal D365FO
Dynamics technical consultants often times receive the requirements to create the journal using X++ where we couldn't use data entity for any reason.
So, In this article, I am writing the sample which may help you a lot to create a project Item journal easily.
public void
createProjectInventJournal(ProjectJournalContract   
_projectJournal)
    {
        InventDim                            inventDim;
        InventJournalName                    InventJournalName;
        InventJournalTable                   inventJournalTable;
        InventJournalTableData               journalTableData = JournalTableData::newTable(inventJournalTable);
        InventTable                          inventTable;
        ProjTable                               projTable;
        AWCFieldServIntegrtionMainAccount     ServiceOffsetAccount=this.findServiceMainAccount(AWCFieldServiceIntegrationType::ProjectItem);
        
         ProjectJournalTransContract  journalTransContract;
        if(_projectJournal.getProjectJournalTransCount()==0)
        {
            return;
        }
        
        journalTransContract =
_projectJournal.getProjectJournalTrans(0);
        select projTable
            where
projTable.ProjId==journalTransContract.ProjectId;
        select inventTable
            where
inventTable.itemId==journalTransContract.ItemId;
        select InventJournalName
            where InventJournalName.JournalType==InventJournalType::project
        &&
InventJournalName.isFSJournal==NoYes::Yes;
        inventJournalTable.JournalId =
journalTableData.nextJournalId();
        inventJournalTable.JournalType=InventJournalType::project;
       
       
journalTableData.initFromJournalName(InventJournalName);
      
        inventJournalTable.insert();
        InventJournalTrans          inventJournalTrans;
        InventJournalTransData      journalTransData =
journalTableData.journalStatic().newJournalTransData(inventJournalTrans,
journalTableData);
       
journalTransData.initFromJournalTable();
        inventJournalTrans.TransDate    = today();
        
        inventJournalTrans.ProjId               =journalTransContract.ProjectId;
       inventJournalTrans.ProjCategoryId       = journalTransContract.ProjectCateId;
       
inventJournalTrans.initFromProjTable(projTable);
        inventJournalTrans.initFromInventTable(inventTable);
        
        inventJournalTrans.Qty              = journalTransContract.QtyUsed;
        inventJournalTrans.PriceUnit        = journalTransContract.CostPrice;
      
        inventJournalTrans.ProjUnitID       = journalTransContract.Unit;
        inventJournalTrans.Worker           = HcmWorkerLookup::currentWorker();
        inventJournalTrans.LedgerDimension  = LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountRecId(MainAccount::findByMainAccountId(ServiceOffsetAccount.MainAccountId).RecId);
       
inventJournalTrans.activityNumberModified();
        inventDim.clear();
        inventDim.InventSiteId  = journalTransContract.Site;
        inventDim.InventLocationId
=journalTransContract.Location;
        inventDim.wMSLocationId =
journalTransContract.Warehouse;
        
        inventJournalTrans.InventDimId = inventDim::findOrCreate(inventDim).inventDimId;
        //other fields
        journalTransData.create();
    }
Support Faryal's Cusine