There are a number of reports which I keep getting asked for. One of them is a list of the top X number of creditors (or vendors to my American readers).
Rather than keep on reinventing the wheel, I have created a SQL view which sums up the transactions in each year for all vendors:
/* Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (https://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */ IF OBJECT_ID (N'uv_AZRCRV_PurchasesByVendorByYear', N'V') IS NOT NULL DROP VIEW uv_AZRCRV_PurchasesByVendorByYear GO CREATE VIEW uv_AZRCRV_PurchasesByVendorByYear AS SELECT ['Payables Transactions'].VENDORID AS 'Vendor ID' ,['PM Vendor Master'].VENDNAME AS 'Vendor Name' ,['PM Vendor Master'].VNDCLSID AS 'Class ID' ,FORMAT(['Payables Transactions'].DOCDATE, 'yyyy') AS 'Year' ,CASE WHEN ['PM Vendor Master'].VENDSTTS >= 1 THEN 'Active' WHEN ['PM Vendor Master'].VENDSTTS >= 2 THEN 'Inctive' ELSE 'Temporary' END AS 'Status' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].PRCHAMNT ELSE ['Payables Transactions'].PRCHAMNT * -1 END) AS 'Purchases Amount' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].TRDISAMT * -1 ELSE ['Payables Transactions'].TRDISAMT END) AS 'Trade Discount' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].FRTAMNT ELSE ['Payables Transactions'].FRTAMNT * -1 END) AS 'Freight' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].MSCCHAMT ELSE ['Payables Transactions'].MSCCHAMT * -1 END) AS 'Miscalleneous' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].TAXAMNT ELSE ['Payables Transactions'].TAXAMNT * -1 END) AS 'Tax Amount' ,SUM(CASE WHEN ['Payables Transactions'].DOCTYPE <= 3 THEN ['Payables Transactions'].DOCAMNT ELSE ['Payables Transactions'].DOCAMNT * -1 END) AS 'Total Amount' FROM (SELECT VENDORID ,DOCDATE ,PSTGDATE ,DOCNUMBR ,DOCTYPE ,PRCHAMNT ,TRDISAMT ,FRTAMNT ,MSCCHAMT ,TAXAMNT ,DOCAMNT FROM PM20000 WHERE VOIDED >= 0 AND DOCTYPE <= 5 UNION ALL SELECT VENDORID ,DOCDATE ,PSTGDATE ,DOCNUMBR ,DOCTYPE ,PRCHAMNT ,TRDISAMT ,FRTAMNT ,MSCCHAMT ,TAXAMNT ,DOCAMNT FROM PM30200 WHERE VOIDED >= 0 AND DOCTYPE <= 5 ) AS ['Payables Transactions'] LEFT JOIN PM00200 AS ['PM Vendor Master'] ON ['Payables Transactions'].VENDORID = ['PM Vendor Master'].VENDORID GROUP BY ['Payables Transactions'].VENDORID ,['PM Vendor Master'].VENDNAME ,['PM Vendor Master'].VNDCLSID ,['PM Vendor Master'].VENDSTTS ,FORMAT(['Payables Transactions'].DocDate, 'yyyy') GO GRANT SELECT ON uv_AZRCRV_PurchasesByVendorByYear TO DYNGRP GO
The view can easily be plugged into SmartList Designer, SmartList Builder, a refreshable Excel Report, a SQL Server Reporting Services report or any other type of reporting tool.