JmgIpcLedgerEnter.getAccountInfo Method [AX 2012]

Gets the account information for a given job ID depending on the job type.

private container getAccountInfo(JmgJobId _jobId)

Run On

Called

Parameters

_jobId
Type: JmgJobId Extended Data Type
The job ID for which to retrieve the account information.

Return Value

Type: container
Container with account number and offset account number.

The following example demonstrates the use of this method.

public void run()
{
    int                     cnt;

    JmgIpcLedgerJournal     jmgIpcLegerJournal;
    JmgIpcLedgerTrans       jmgIpcLedgerTrans;

    LedgerJournalTable      ledgerJournalTable;
    LedgerJournalTrans      ledgerJournalTrans;
    Voucher                 voucher;

    JmgStampTrans           jmgStampTrans;

    Query                   query;
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;

    LedgerDimensionDefaultAccount       accountNum;
    LedgerDimensionDefaultAccount       offsetAccountNum;
    DimensionAttributeValueCombination  dimAttrValueCombo;
    DimensionAttributeValueCombination  offsetDimAttrValueCombo;
    DimensionValidationStatus           dimensionValidationStatus;
    DimensionValidationStatus           offsetDimensionValidationStatus;
    boolean                             dimensionsAreValid = true;

    jmgIpcLegerJournal.query2Log(qrIPCLedger);

    query           = qrIPCLedger.query();
    query.dataSourceNo(1).update(true);
    qbds            = query.dataSourceTable(tablenum(JmgStampTrans));
    qbr             = qbds.addRange(fieldnum(JmgStampTrans,Module));
    qbr.value(enum2str(JmgModuleEnum::IPC));

    if (repost)
    {
        if (!fromDate || ! toDate)
        {
            throw error("@SYS39545");
        }
    }
    else
    {
        if (!fromDate)
        {
            fromDate = str2date(#minDate, 123);
        }
        if (!toDate)
        {
            toDate = maxdate();
        }
        qbr             = qbds.addRange(fieldnum(JmgStampTrans,Voucher));
        qbr.value(queryValue(''));
    }

    if (fromDate > toDate)
    {
        throw error("@SYS16982");
    }
    qbr = qbds.addRange(fieldnum(JmgStampTrans, ProfileDate));
    qbr.value(queryRange(fromDate, toDate));

    this.checkForRepostings();

    qrIPCLedger.query(query);

    this.progressInit("@SYS39074", SysQuery::countTotal(qrIPCLedger), #AviUpdate);

    if (! transDate)
        transDate = systemdateget();

    ttsbegin;
    ledgerJournalTable.clear();
    ledgerJournalTable.initValue();
    ledgerJournalTable.JournalName  = JmgParameters::find().JournalName;
    ledgerJournalTable.Name         = "@SYS39074";
    ledgerJournalTable.insert();

    voucher = new JournalVoucherNum(JournalTableData::newTable(ledgerJournalTable)).getNew(false);
    jmgIpcLegerJournal.Voucher      = voucher;
    jmgIpcLegerJournal.TransDate    = transDate;
    jmgIpcLedgerTrans.Voucher       = voucher;

    this.clearVoucherNum(voucher);

    jmgIpcLegerJournal.insert();

    while (qrIPCLedger.next())
    {
        jmgStampTrans                                   = qrIPCLedger.get(tablenum(JmgStampTrans));

        progress.setText(HcmWorker::worker2Name(jmgStampTrans.Worker));

        if (jmgStampTrans.JourRegType == JmgJourRegTypeEnum::Absence)
        {
            [accountNum, offsetAccountNum]                  = this.getAccountInfo(jmgStampTrans.JobIDAbs);
        }
        else
        {
            [accountNum, offsetAccountNum]                  = this.getAccountInfo(jmgStampTrans.JobId);
        }

        if (accountNum && offsetAccountNum)
        {
            jmgStampTrans.Voucher                       = jmgIpcLegerJournal.Voucher;

            jmgIpcLedgerTrans.LedgerDimension           = DimensionDefaultingService::serviceCreateLedgerDimension(accountNum, jmgStampTrans.DefaultDimension);
            jmgIpcLedgerTrans.OffsetLedgerDimension     = DimensionDefaultingService::serviceCreateLedgerDimension(offsetAccountNum, jmgStampTrans.DefaultDimension);
            jmgIpcLedgerTrans.Price                     = Currency::amount(jmgStampTrans.HourPrice * jmgStampTrans.secondsReal());
            jmgIpcLedgerTrans.StampTransRecId           = jmgStampTrans.RecId;

            // we need to call this validation for cases when the account structure defines rules for valid dimensions
            // message is handled by the validate method
            dimensionValidationStatus = DimensionValidation::validateByTree(jmgIpcLedgerTrans.LedgerDimension, transDate, true, true);
            offsetDimensionValidationStatus = DimensionValidation::validateByTree(jmgIpcLedgerTrans.OffsetLedgerDimension, transDate, true, true);
            if (dimensionValidationStatus != DimensionValidationStatus::Valid ||
                offsetDimensionValidationStatus != DimensionValidationStatus::Valid)
            {
                dimensionsAreValid = false;
                warning(strfmt("@SYS328784", HcmWorker::worker2Name(jmgStampTrans.Worker), jmgStampTrans.ProfileDate, jmgStampTrans.JourRegType));
                continue; // we don't stop because we want to validate all the lines
            }

            if (jmgIpcLedgerTrans.Price)
            {
                select forupdate ledgerJournalTrans
                    where ledgerJournalTrans.JournalNum         == ledgerJournalTable.JournalNum              &&
                          ledgerJournalTrans.TransDate          == transDate                                  &&
                          ledgerJournalTrans.Voucher            == voucher                                    &&
                          ledgerJournalTrans.AccountType        == LedgerJournalACType::Ledger                &&
                          ledgerJournalTrans.OffsetAccountType  == LedgerJournalACType::Ledger                &&
                          ((ledgerJournalTrans.DefaultDimension == jmgStampTrans.DefaultDimension) ||
                           (groupTransInDimensions              == NoYes::No))
                    join RecId from dimAttrValueCombo where
                        dimAttrValueCombo.RecId == ledgerJournalTrans.LedgerDimension
                    join RecId from offsetDimAttrValueCombo where
                        offsetDimAttrValueCombo.RecId == ledgerJournalTrans.OffsetLedgerDimension;

                if (! ledgerJournalTrans)
                {
                    ledgerJournalTrans.clear();
                    ledgerJournalTrans.initValue();
                }
                ledgerJournalTrans.JournalNum           = ledgerJournalTable.JournalNum;
                ledgerJournalTrans.TransDate            = transDate;
                ledgerJournalTrans.Voucher              = voucher;
                ledgerJournalTrans.parmLedgerDimension(jmgIpcLedgerTrans.LedgerDimension);
                ledgerJournalTrans.AmountCurDebit      += jmgIpcLedgerTrans.Price;
                ledgerJournalTrans.parmOffsetLedgerDimension(jmgIpcLedgerTrans.OffsetLedgerDimension);
                ledgerJournalTrans.Txt                  = "@SYS39079";
                if (groupTransInDimensions)
                {
                    ledgerJournalTrans.DefaultDimension = jmgStampTrans.DefaultDimension;
                }
                // sum on 1 trans
                if (! ledgerJournalTrans)
                    ledgerJournalTrans.insert();
                else
                   ledgerJournalTrans.update();

                jmgIpcLedgerTrans.insert();
                jmgStampTrans.update();
            }
        }

        cnt++;
        progress.setCount(cnt);
    }

    if (! (select firstonly ledgerJournalTrans
               where ledgerJournalTrans.JournalNum  == ledgerJournalTable.JournalNum &&
                     ledgerJournalTrans.TransDate   == transDate                     &&
                     ledgerJournalTrans.Voucher     == voucher                       &&
                     ((ledgerJournalTrans.AmountCurCredit) ||
                      (ledgerJournalTrans.AmountCurDebit )   )                         ).RecId)
    {
        ttsabort;
        warning("@SYS39160");
    }
    else if (!dimensionsAreValid)
        ttsabort;
    else
        ttscommit;
}

Community Additions

ADD
Show: