通过SQL获取axapta中的当前帐户余额

时间:2018-02-14 12:38:26

标签: sql axapta dynamics-ax-2012

我正在试图弄清楚如何通过Axapta 2012表格中的SQL获取主要帐户的当前余额。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

getBalance的方法MainAccount似乎是一个很好的起点。不幸的是,此方法使用类LedgerBalanceMainAccountAmounts来计算余额。我认为在SQL中重新创建该类的逻辑是非常困难的。

根据您的要求,一种替代方法可能是在x ++中编写一个函数,将getBalance方法的结果写入新表,然后您可以使用SQL查询该新表。

但我建议您研究开箱即用的选项来分析主要客户数据,例如管理记者或商务智能。

答案 1 :(得分:0)

感谢。但我已经找到了解决方案。

在解决方案的另一个论坛上发表我的帖子。

https://community.dynamics.com/ax/f/33/p/268863/762367#762367

  

基本上我想要的是具有通过 - >定义的结构的主要帐户ID。 "传统财务报告" - > " Rowdefinition" - >   "结构设计师"。

     

有了这些帐户ID,我就进入了   [DIMENSIONATTRIBUTEVALUECOMBINATION]然后进入   [GENERALJOURNALACCOUNTENTRY]并进入[GENERALJOURNALENTRY]获得   "记录"在指定的时间范围内。

     

然后我将这些交易加起来以获得账户余额。

WITH mainaccs(recid, PARENTRECID,[Name]) AS (
  SELECT RecId,
         PARENTRECID,
         [Name]
  FROM   [LEDGERROWDEFLINE]
    where PARENTRECID = 0
  UNION ALL
  SELECT cur.RecId,
         cur.PARENTRECID,
         cur.[Name]
  FROM   [LEDGERROWDEFLINE] cur, mainaccs
  WHERE  cur.PARENTRECID = mainaccs.recid
)
SELECT 
    ma.MAINACCOUNTID,
    Sum(gjae.TRANSACTIONCURRENCYAMOUNT) amount
FROM  mainaccs maccs
    inner join [MAINACCOUNT] ma on ma.MainaccountId = maccs.Name
    inner join [DIMENSIONATTRIBUTEVALUECOMBINATION] davc on ma.RECID = davc.MAINACCOUNT
    inner join [GENERALJOURNALACCOUNTENTRY] gjae on gjae.LEDGERACCOUNT = davc.DISPLAYVALUE
    inner join [GENERALJOURNALENTRY] gje on gje.RecId = gjae.GENERALJOURNALENTRY
where YEAR(gje.ACCOUNTINGDATE) = 2017
group by ma.MAINACCOUNTID
order by ma.MAINACCOUNTID