✏️ Explanatory Question

Using Aggregate functions in Query::insert_recordset using code in D365 FO

👁 1 Views
📘 Detailed Answer
🟢 Easy
1
Total Views
4
Related Qs
0%
Progress
💡

Answer with Explanation


Public class FixedAssetRegisterReportingCurrency
{
FixedAssetRegisterTransTmp assetRegisterTransTmp;
TransDate toDate;
Query                           query;
QueryBuildDataSource            qbdsAssetTrans;
QueryBuildFieldList             qbfsAssetTransFieldList;
Map                             fieldMapping;
 
public FixedAssetRegisterTransTmp run(TransDate _todate)
{
 
    query           = new Query();
    qbdsAssetTrans  = query.addDataSource(tableNum(AssetTrans));
    query.clearAllFields();
 
    this.fieldListAssetTrans(qbdsAssetTrans);
    qbdsAssetTrans.addGroupByField(fieldNum(AssetTrans, AssetId));
    qbdsAssetTrans.addGroupByField(fieldNum(AssetTrans, BookId));
    qbdsAssetTrans.addSelectionField(fieldNum(AssetTrans, ReportingCurrencyAmount), SelectionField::Sum);
 
    qbdsAssetTrans.clearRanges();
    qbdsAssetTrans.addRange(fieldNum(AssetTrans, TransDate)).value(strFmt("< %1", toDate + 1));
 
    fieldMapping = new Map(Types::String, Types::Container);
 
    fieldMapping.insert(fieldStr(FixedAssetRegisterTransTmp, FixedAssetId), [qbdsAssetTrans.uniqueId(), fieldStr(AssetTrans, AssetId)]);
    fieldMapping.insert(fieldStr(FixedAssetRegisterTransTmp, BookId), [qbdsAssetTrans.uniqueId(), fieldStr(AssetTrans, BookId)]);
    fieldMapping.insert(_fieldName, [qbdsAssetTrans.uniqueId(), 'SUM(' + fieldStr(AssetTrans, ReportingCurrencyAmount) + ')']);
 
     Query::insert_recordset(assetRegisterTransTmp, fieldMapping, query);
 }
 
 
public void fieldListAssetTrans(QueryBuildDataSource    _qbdsAssetTrans)
{
    QueryBuildFieldList qbflAssetTrans = _qbdsAssetTrans.fields();
 
    qbflAssetTrans.dynamic(QueryFieldListDynamic::No);
    qbflAssetTrans.addField(fieldNum(AssetTrans, AssetId));
    qbflAssetTrans.addField(fieldNum(AssetTrans, BookId));
    qbflAssetTrans.addField(fieldNum(AssetTrans, ReportingCurrencyAmount));
}

}