JmgIpcLedgerEnter.checkForRepostings Method [AX 2012]

If the user has selected to repost indirect production costs and an already posted registration is found, the user is prompted if he is sure that he wants to repost.

private void checkForRepostings()

Run On

Called

If the user cancels the prompt, an error is thrown.

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: