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
CalledParameters
- _jobId
- Type: JmgJobId Extended Data Type
The job ID for which to retrieve the account information.
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: