Tag Archives: D365 Ops
Create Fixed Asset Journal using X++
In this blog article, we will see how we can create Fixed Asset Journal using X++. Write below code to create Journal Header in LedgerJournalTable Table and Lines record in LedgerJournalTrans and LedgerJournalTrans_Asset Tables. public void createFixedAssetJournal()    {              LedgerJournalTable ledgerJournalTable;        LedgerJournalTrans ledgerJournalTrans;        LedgerJournalTrans_Asset ledgerJournalTrans_Asset;        Assettable assetTable;        ledgerJournalTable.initValue();        ledgerJournalTable.JournalNum  = JournalTableData::newTable(ledgerJournalTable).nextJournalId();        ledgerJournalTable.Posted      = NoYes::No;        ledgerJournalTable.JournalName = ‘ACQUI’;        ledgerJournalTable.JournalType = LedgerJournalType::Assets;        ledgerJournalTable.initFromLedgerJournalName(ledgerJournalTable.JournalName);        ledgerJournalTable.insert();        ledgerjournalTrans.initValue();        ledgerJournalTrans.CurrencyCode     = Ledger::accountingCurrency(CompanyInfo::find().RecId);        ledgerJournalTrans.AccountType      = LedgerJournalACType::FixedAssets;        ledgerJournalTrans.TransactionType  = LedgerTransType::FixedAssets;        ledgerJournalTrans.Approved         = NoYes::Yes;        ledgerJournalTrans.Approver         = HcmWorker::userId2Worker(curuserid());           ledgerJournalTrans.LineNum                             = LedgerJournalTrans::lastLineNum(ledgerJournalTrans.JournalNum) + 1;        ledgerJournalTrans.TransDate                           = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());        ledgerJournalTrans.LedgerDimension                     = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(AssetTable.AssetId,LedgerJournalACType::FixedAssets);                 ledgerJournalTrans.accountName();              ledgerJournalTrans.AmountCurDebit                      = ’45’;        ledgerJournalTrans.OffsetAccountType                   = LedgerJournalACType::Ledger;        ledgerJournalTrans.OffsetLedgerDimension               = ledgerJournalTrans.getOffsetLedgerDimensionForLedgerType(AssetLedgerAccounts::assetOffsetLedgerDimension(AssetTable.AssetId, AssetTable.assetBookCurrent().BookId, AssetTransType::Acquisition),curExt());        ledgerJournalTrans.insert();        ledgerJournalTrans_Asset.initValue();        ledgerJournalTrans_Asset.RefRecId                      = ledgerJournalTrans.RecId;        ledgerJournalTrans_Asset.AssetId                       = assetTable.assetId;        ledgerJournalTrans_Asset.TransType                     = AssetTransTypeJournal::Acquisition;        ledgerJournalTrans_Asset.BookId                        = AssetTable.assetBookCurrent().BookId;        ledgerJournalTrans_asset.insert();        ttsbegin;        LedgerJournalTable.selectForUpdate(true);        LedgerJournalTable.numOfLines = LedgerJournalTable.numOfLines();        LedgerJournalTable.update();        ttscommit; }
Fetch FormControl and value of different type in Event Handler of D365 Operations
Introduction: In this blog article, we will see how we can fetch Form Control and its value which is of different datatype in EventHandler in D365 Operations Scenario: I am working on Global Address Book functionality for checking Duplicate values for PartyID (String), Tax Id (CheckBox) and Tax Id Type (ComboBox). I am using Event Handler of form method to enable a button based on value of above three fields. Steps: Create Event Handler with below code: [PostHandlerFor(formStr(DirPartyCheckDuplicate), formMethodStr(DirPartyCheckDuplicate, enableSearch))] public static void DirPartyCheckDuplicate_Post_enableSearch(XppPrePostArgs args) { FormRun formRun = args.getThis() as FormRun; FormCheckBoxControl TaxId = formRun.design(0).controlName(“TaxId”) as FormCheckBoxControl; FormStringControl PartyNumber = formRun.design(0).controlName(“DirPartyTable_PartyNumber”) as FormStringControl; FormComboBoxControl TaxIdType = formRun.design(0).controlName(“TaxIdType”) as FormComboBoxControl; FormControl searchBtn = formRun.design(0).controlName(“searchBtn”); if(TaxId.value() || PartyNumber.valueStr() || TaxIdType.valueStr()) { searchBtn.enabled(true); } else { searchBtn.enabled(false); } }
