Hi all
Today, I am going to post a script which allows you to analyze budgets vs. actuals for Microsoft Dynamics GP. There is an inquiry window available in Dynamics GP for viewing the budgets vs. actuals analysis. But this has to be inquired account by account and there is no out of the box report for viewing the budget analysis for a range of accounts. This query addresses this issue and helps users analyze budget details for all accounts together.
SELECT Y.* FROM ( SELECT Z.GPACCOUNTNO AS GPACCOUNTNO , RTRIM(Z.GPACCTDESC) AS GPACCTDESC , Z.YEAR1 AS FISCALYEAR , Z.PERNAME AS PERIODNAME , LTRIM(RTRIM(STR(Z.YEAR1))) + '::' + REPLICATE('0', ( 2 - LEN(Z.PERIODID) )) + LTRIM(RTRIM(STR(Z.PERIODID))) AS FISCALPERIOD , Z.BUDGETID AS BUDGETID , Z.BUDGETAMT AS BUDGETAMOUNT , Z.ACTUALAMOUNT AS ACTUALAMOUNT , ( Z.ACTUALAMOUNT - Z.BUDGETAMT ) AS VARIANCE , ROUND(CASE WHEN Z.BUDGETAMT = 0 THEN 0 WHEN Z.ACTUALAMOUNT = 0 AND ( Z.ACTUALAMOUNT - Z.BUDGETAMT ) < 0 THEN -1 WHEN Z.ACTUALAMOUNT = 0 AND ( Z.ACTUALAMOUNT - Z.BUDGETAMT ) > 0 THEN 1 ELSE ( ( Z.ACTUALAMOUNT - Z.BUDGETAMT ) / Z.BUDGETAMT ) END, 4) AS VARIANCEPERCENT FROM ( SELECT A.BUDGETID , B.YEAR1 , A.PERIODID , E.PERNAME , A.ACTINDX , RTRIM(C.ACTNUMST) AS GPACCOUNTNO , RTRIM(D.ACTDESCR) AS GPACCTDESC , A.BUDGETAMT , ISNULL(( SELECT SUM(DEBITAMT - CRDTAMNT) FROM dbo.GL20000 T WHERE T.ACTINDX = A.ACTINDX AND E.PERIODDT <= T.TRXDATE AND E.PERDENDT >= T.TRXDATE ), 0) AS ACTUALAMOUNT FROM dbo.GL01201 A INNER JOIN dbo.GL00200 B ON A.BUDGETID = B.BUDGETID INNER JOIN dbo.GL00105 C ON C.ACTINDX = A.ACTINDX INNER JOIN dbo.GL00100 D ON D.ACTINDX = A.ACTINDX INNER JOIN dbo.SY40100 E ON E.YEAR1 = B.YEAR1 AND E.PERIODID = A.PERIODID WHERE E.SERIES = 0 ) Z ) Y ORDER BY Y.GPACCOUNTNO , Y.GPACCTDESC , Y.FISCALYEAR , Y.PERIODNAME , Y.FISCALPERIOD , Y.BUDGETID
This query can be modified to include additional information for analysis purposes.
Hope this helps… Until next post…
Pingback: DynamicAccounting.net