Search your query

Monday, February 19, 2024

X++ code to create Ledger Journal Line (General Journal) for any ledger account type (Ledger, Vendor, Customer.. etc)

 Find below code will help you with Dimensions when you create GL Journal lines.

 

public void createJournalLines()

{

    LedgerJournalTrans                  ledgerJournalTrans;

    HcmWorker                           HcmWorker;

    Amount                              tmpAmount = 100;

    LedgerJournalTransTaxExtensionIN    ledgerJournalTransTaxExtensionIN;

    LedgerDimensionAccount              ledgerAccount;

    Boolean                             isLedgerTransaction = false;

    accountNum                          ledgerAccountNum_NonLedgerType;

    ledgerJournalCheckPost              ledgerJournalCheckPost;

 

    #ISOCountryRegionCodes

   

    ledgerJournalTrans.Voucher      = NumberSeq::newGetVoucherFromCode(numberSequenceTable.NumberSequence).voucher();

    ledgerJournalTrans.JournalNum   = headerJournal.JournalNum; //From Journal Header Table; //NumberSeq::newGetNum(LedgerParameters::numRefJournalNum()).num();        ledgerJournalTrans.CurrencyCode         = CompanyInfoHelper::standardCurrency();

    ledgerJournalTrans.ExchRate     = ExchangeRateHelper::exchRate(ledgerJournalTrans.CurrencyCode);

       

     //if (General Ledger Journal – Type is Ledger)

     {

         ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;

         isLedgerTransaction = Yes;

     }

     //else if (Customer, vendor)

     {

        ledgerJournalTrans.AccountType = LedgerJournalACType::Vendor; // select appropriate type based on input of Ledger dimension and account type of Posting profile.

        isLedgerTransaction = false;

    }

    ledgerJournalTrans.DefaultDimension     = // Input: Default dimension from Hcmworker in our example;

     if (isLedgerTransaction)

     {

            ledgerAccount = LedgerDimensionFacade::serviceCreateLedgerDimension(_ledgerJournalTrans.JournalNum, ledgerJournalTrans.DefaultDimension);

           ledgerJournalTrans.LedgerDimension = ledgerAccount;

     }

     else

     {

            ledgerAccountNum_ NonLedgerType  = LedgerDimensionFacade::getDisplayValueForLedgerDimension(ledgerAccount); // either vendor, customer or bank id

             ledgerAccount = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber(ledgerAccountNum, ledgerJournalTrans.AccountType);

      }

     //if (if Debit amount)

    {

        ledgerJournalTrans.AmountCurDebit   = CurrencyExchangeHelper::amount(100, ledgerJournalTrans.CurrencyCode);

    }

    // else -- if credit amount.

    {

        ledgerJournalTrans.AmountCurCredit  = CurrencyExchangeHelper::amount(100, ledgerjournalTrans.CurrencyCode);

    }

     ledgerJournalTrans.TransDate                = Today();

    ledgerJournalTrans.Txt                      = "Create a Journal Line";

    ledgerJournalTrans.BankNegInstRecipientName = HcmWorker.name();

    ledgerJournalTrans.insert();

    if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoIN]))

    {                           

                                       ledgerJournalTransTaxExtensionIN.TaxModelDocLineExtensionIN::initFromBaseTable (ledgerJournalTrans);

                    ledgerJournalTransTaxExtensionIN.TaxModelDocLineExtensionIN::initFromExtensionTable(LedgerJournalTransTaxExtensionIN::findByLedgerJournalTrans(ledgerJournalTrans.RecId));

    ledgerJournalTransTaxExtensionIN.insert();

}

       

    // If post this journal..

    //Post the Journal

    ledgerJournalCheckPost = ledgerJournalCheckPost::newLedgerJournalTable(ledgerJournalTable,NoYes::Yes); // Header Journal Table.

    ledgerJournalCheckPost.run();

}