Wednesday, August 13, 2025

Create general journal using x++ D365FO

 LedgerJournalTable ledgerJournalTable ;

LedgerJournalTrans ledgerJournalTrans;

ledgerJournalTable .JournalName = "WriteOff";

ledgerJournalTable .defaultRow();

if (ledgerJournalTable .validateWrite())

{

    ledgerJournalTable .insert();

}

LedgerJournalEngine ledgerJournalEngine = LedgerJournalEngine_Daily::construct();

ledgerJournalEngine.ledgerJournalTable(ledgerJournalTable );

ledgerJournalEngine.newJournalActive(ledgerJournalTable );

ledgerJournalTrans.clear();

ledgerJournalEngine.preCreate(ledgerJournalTrans);

ledgerJournalTrans.initValue();

ledgerJournalEngine.initValue(ledgerJournalTrans);

ledgerJournalTrans.LineNum = 0;

ledgerJournalTrans.TransactionType   = LedgerTransType::WriteOff;

ledgerJournalTrans.TransDate         = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());

ledgerJournalTrans.AccountType       = LedgerJournalACType::Ledger;

ledgerJournalTrans.LedgerDimension   = 0;

ledgerJournalTrans.DefaultDimension  = 0;

ledgerJournalEngine.accountModified(ledgerJournalTrans);

ledgerJournalTrans.CurrencyCode = 'USD';

ledgerJournalEngine.currencyModified(ledgerJournalTrans);

ledgerJournalTrans.amountCur2DebCred(200);

reasonTable = ReasonTable::find("Test");

ledgerJournalTrans.ReasonRefRecID = ReasonTableRef::createReasonTableRef(reasonTable.Reason, reasonTable.Description);

ledgerJournalTrans.Txt = "Test"; 

ledgerJournalTrans.SkipBlockedForManualEntryCheck = NoYes::Yes;

// Set the offset account type

ledgerJournalTrans.OffsetAccountType     = LedgerJournalACType::Ledger;

ledgerJournalTrans.OffsetLedgerDimension = 0;

ledgerJournalTrans.OffsetDefaultDimension = ledgerJournalTrans.DefaultDimension;

ledgerJournalEngine.offsetAccountModified(ledgerJournalTrans);

ledgerJournalTrans.TaxGroup       = '';

ledgerJournalTrans.TaxItemGroup   = '';

ledgerJournalTrans.PaymMode       = '';

ledgerJournalTrans.PaymSpec       = '';

ledgerJournalTrans.Prepayment     = 0;

ledgerJournalTrans.BankTransType  = '';

ledgerJournalTrans.TransactionType         = LedgerTransType::GeneralJournal;

ledgerJournalTrans.insert();

ledgerJournalEngine.voucherTotals(ledgerJournalTrans, true);

// post journal

LedgerJournalCheckPost ledgerJournalCheckPost = LedgerJournalCheckPost::newLedgerJournalTable(ledgerJournalTable, NoYes::Yes,NoYes::Yes );

ledgerJournalCheckPost.run();


Call API using x++ D365FO

 System.Net.HttpWebRequest    request; System.Net.HttpWebResponse   response; System.IO.Stream             dataStream; System.IO.StreamReade...