Interview Questions

Thursday, May 8, 2014

Ledger journal import using x++

static void GLImport(Args _args)
{

    AxLedgerJournalTable        header = new AxLedgerJournalTable();
    AxLedgerJournalTrans        trans = new AxLedgerJournalTrans();
    container                   ledgerDim, offsetDim;
    LedgerJournalNameId         ledgerJournalNameId = "GeneralJR";
    DimensionAttributeValueCombination  ledgerDimension;
    LedgerJournalACType         accType, offsetAccType;
    BankAccountTable            bankAccountTable;

    ;
    accType         = LedgerJournalACType::Ledger;
    offsetAccType   = LedgerJournalACType::Bank;

    header.parmJournalName(ledgerJournalNameId);
    header.save();

    trans.parmAccountType(accType);
    trans.parmJournalNum(header.ledgerJournalTable().JournalNum);

    //If account type is Ledger
    ledgerDim = ["142102-C-ADMIN","142102","C","ADMIN"];//First is Display value, followed by Main Account and then dimensions.

    //If account type is other than ledger then Switch case statement can be written to get RecId from DimensionAttributeValueCombination Table.
    trans.parmLedgerDimension(AxdDimensionUtil::getLedgerAccountId(ledgerDim));
    trans.parmAmountCurDebit(230);
    trans.parmOffsetAccountType(offsetAccType);

    switch(offsetAccType)
    {
        case    LedgerJournalACType::Bank   :   select firstOnly bankAccountTable
                                                    join RecId from ledgerDimension
                                                        where ledgerDimension.DisplayValue      == bankAccountTable.AccountID
                                                        &&    bankAccountTable.AccountID        == "ICICI Bank";
                                                trans.parmOffsetLedgerDimension(ledgerDimension.RecId);

        //Same cases has to be written for others like Vendor, Customer. Except Account type ledger
        //If offset account type is ledger then trans.parmOffsetLedgerDimension() will only be supported.
    }

    //trans.parmOffsetLedgerDimension(AxdDimensionUtil::getLedgerAccountId(offsetDim));
    trans.save();

}

No comments:

Post a Comment