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.
What should we write about next?
If there is a topic which fits the typical ones of this site, which you would like to see me write about, please use the form, below, to submit your idea.
Looking for support or consultancy with Microsoft Dynamics GP?
I no longer work with Microsoft Dynamics GP, but the last company I worked for was ISC Software in the UK; if you’re looking for support or consultancy services with Microsoft Dynamics GP you can contact them here.
5 thoughts on “SQL View to Return Purchases By Vendor By Year”