AX 报表主账户期初余额数据集

AX Report Mainaccount Opening Balance Dataset

我们必须为报表 "LedgerAccountStatementPerCurrency" (AX 2012) 开发一些功能。

其中一个功能是,在报告中显示每个主账户的期初余额(交易货币)。

我很久以前在 SQL 服务器上写了一个存储过程,它给我这个 return 值。参数是 mainaccountid、datefrom 和 dateto。

我的问题是是否可以使用这个存储过程? class "LedgerAccountStatementPerCurrencyDP" 上的报表依赖项,我可以实现,对于系统提供给报表的每个主帐户,我调用我的存储过程并在另一个字段中返回余额?

这种情况怎么办?

对于此报告,您有此信息。检查 LedgerAccountStatementPerCurrencyDP class processReport 方法。在while (queryRun.next())之后你可以看到这个标准代码来计算期初余额

在接下来的代码中找到这个标签 //Here OpeningBalance

代码在这里

...
...
...
queryRun = new QueryRun(query);
while (queryRun.next())
{
    generalJournalAccountEntry = queryRun.get(tableNum(GeneralJournalAccountEntry)) as GeneralJournalAccountEntry;
    generalJournalEntry = queryRun.get(tableNum(GeneralJournalEntry)) as GeneralJournalEntry;
    fiscalCalendarPeriod = queryRun.get(tableNum(FiscalCalendarPeriod)) as FiscalCalendarPeriod;
    dimAttrValueCombo = queryRun.get(tableNum(DimensionAttributeValueCombination)) as DimensionAttributeValueCombination;

    if (dimAttrValueCombo.MainAccount != prevMainAccount)
    {
        mainAccount = MainAccount::find(dimAttrValueCombo.MainAccount);
        localizedName = mainAccount.localizedName();
    }

    ledgerAccountStatementPerCurrencyTmp.clear();
    ledgerAccountStatementPerCurrencyTmp.MainAccountId = mainAccount.MainAccountId;
    ledgerAccountStatementPerCurrencyTmp.AccountName = localizedName;

    if (dimAttrValueCombo.MainAccount != prevMainAccount)
    {
        if (mainAccount && ledgerBalanceOpening)
        {
        //Here OpeningBalance
            ledgerBalanceOpening.calculateBalance(mainAccount);
            openingBalance = ledgerBalanceOpening.getAccountingCurrencyBalance();
        //Here OpeningBalance END
        }
        else
        {
            openingBalance = 0;
        }

        ledgerAccountStatementPerCurrencyTmp.OpeningBalance = openingBalance;
        ledgerAccountStatementPerCurrencyTmp.insert();

        prevMainAccount = dimAttrValueCombo.MainAccount;
    }
...
...
...