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;
}
...
...
...
我们必须为报表 "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;
}
...
...
...