Quantcast
Channel: Microsoft Dynamics 365 Community
Viewing all articles
Browse latest Browse all 58670

SQL View To Return Purchasing Transactions With Multicurrency

$
0
0

Microsoft Dynamics GPA client I was working with recently was using two SmartLists, one for Payables Transactions and the other from Purchase Order Transactions, to generate a listing of purchasing transactions. However, they had to do manual fiddling around in Excel to get some of the formatting correct and didn;t have all of the information they wanted. Always up for a challenge, I had a go at producing a view we could plug in using SmartList Designer which would give them the information they wanted in the format the needed.

The below is the SQL view which was produced. It includes the PO and Receipt Numbers as well as the Originating Currency (with symbol) and exchange rate; the Functional Currency was left without a symbol so it can be easily totalled in Excel. Where the transaction does not have an Originating Currency I am outputting the Functional Currency.

/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://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).
*/CREATE VIEW uv_AZRCRV_PurchasingTrxList ASSELECT
		PM.VCHRNMBR AS'Voucher Number',CASEWHEN PM.DOCTYPE = 1 THEN
			PM401.PMTRXDSC_1WHEN PM.DOCTYPE = 2 THEN
			PM401.PMTRXDSC_2WHEN PM.DOCTYPE = 3 THEN
			PM401.PMTRXDSC_3WHEN PM.DOCTYPE = 4 THEN
			PM401.PMTRXDSC_4WHEN PM.DOCTYPE = 5 THEN
			PM401.PMTRXDSC_5WHEN PM.DOCTYPE = 6 THEN
			PM401.PMTRXDSC_6WHEN PM.DOCTYPE = 7 THEN
			PM401.PMTRXDSC_7WHEN PM.DOCTYPE = 8 THEN
			PM401.PMTRXDSC_8ELSE'Unknown'ENDAS'Document Type',PM004.DOCTYPE,CASEWHEN PM004.DCSTATUS = 1 THEN'Work'WHEN PM004.DCSTATUS = 2 THEN'Open'WHEN PM004.DCSTATUS = 3 THEN'History'ELSE'Unknown'ENDAS'Document Status',PM004.DCSTATUS,PM.PORDNMBR AS'PO Number',ISNULL(POP303.POPRCTNM,'')AS'Receipt Number',PM.VENDORID AS'Creditor Name',PM002.VENDNAME AS'Creditor ID',CONVERT(VARCHAR,PM.DOCDATE,103)AS'Document Date',CASEWHEN PM.DOCTYPE  3 THEN''ELSE'-'END+ISNULL(RTRIM(MC402.CRNCYSYM),RTRIM(MC402F.CRNCYSYM))+CAST(CAST(ISNULL(MC.OPURAMT,PM.PRCHAMNT)ASDECIMAL(10,2))ASVARCHAR)AS'Originating Purchasing Amount',CASEWHEN PM.DOCTYPE  3 THEN''ELSE'-' END+ISNULL(RTRIM(MC402.CRNCYSYM),RTRIM(MC402F.CRNCYSYM))+CAST(CAST(ISNULL(MC.ORTAXAMT,PM.TAXAMNT)ASDECIMAL(10,2))ASVARCHAR)AS'Originating Tax Amount',CASEWHEN PM.DOCTYPE  3 THEN''ELSE'-'END+ISNULL(RTRIM(MC402.CRNCYSYM),RTRIM(MC402F.CRNCYSYM))+CAST(CAST(ISNULL(MC.ORDOCAMT,PM.DOCAMNT)ASDECIMAL(10,2))ASVARCHAR)AS'Originating Document Amount',CASEWHEN MC.XCHGRATE IS NULL THEN 0 ELSE MC.XCHGRATE ENDAS'Exchange Rate',CAST(CASEWHEN PM.DOCTYPE  3 THEN PM.PRCHAMNT ELSE PM.PRCHAMNT * -1 ENDASDECIMAL(10,2))AS'Functional Purchasing Amount',CAST(CASEWHEN PM.DOCTYPE  3 THEN PM.TAXAMNT ELSE PM.TAXAMNT * -1 ENDASDECIMAL(10,2))AS'Functional Tax Amount',CAST(CASEWHEN PM.DOCTYPE  3 THEN PM.DOCAMNT ELSE PM.DOCAMNT * -1 ENDASDECIMAL(10,2))AS'Functional Document Amount'FROM(-- Transaction HistorySELECT
			VCHRNMBR,DOCTYPE,DOCDATE,PORDNMBR,VENDORID,PRCHAMNT,TAXAMNT,DOCAMNTFROM
			PM30200 WITH(NOLOCK)UNIONALL-- Transaction OpenSELECT
				VCHRNMBR,DOCTYPE,DOCDATE,PORDNMBR,VENDORID,PRCHAMNT,TAXAMNT,DOCAMNTFROM
				PM20000 WITH(NOLOCK)UNIONALL-- Transaction WorkSELECT
				VCHRNMBR,DOCTYPE,DOCDATE,PORDNMBR,VENDORID,PRCHAMNT,TAXAMNT,DOCAMNTFROM
				PM10000 WITH(NOLOCK)UNIONALL-- Payment WorkSELECT
				VCHRNMBR,DOCTYPE,DOCDATE,'',VENDORID,0,0,CHEKTOTLFROM
				PM10300 WITH(NOLOCK)UNIONALL-- Manual Payment WorkSELECT
				VCHRNMBR,DOCTYPE,DOCDATE,'',VENDORID,0,0,DOCAMNTFROM
				PM10400 WITH(NOLOCK))AS PMINNER JOIN
		PM00400 PM004 WITH(NOLOCK)ON PM004.CNTRLNUM = PM.VCHRNMBR AND PM004.DOCTYPE = PM.DOCTYPEINNER JOIN
		PM00200 AS PM002 WITH(NOLOCK)ON PM002.VENDORID = PM.VENDORIDLEFT JOIN
		MC020103 AS MC WITH(NOLOCK)ON MC.VCHRNMBR = PM.VCHRNMBR AND MC.DOCTYPE = PM.DOCTYPELEFT JOIN
		POP30300 AS POP303 WITH(NOLOCK)ON POP303.VCHRNMBR = PM.VCHRNMBRLEFT JOIN
		DYNAMICS..MC40200 AS MC402 WITH(NOLOCK)ON MC402.CURRNIDX = MC.CURRNIDXINNER JOIN
		MC40000 AS MC400 WITH(NOLOCK)ON MC400.FUNLCURR = MC400.FUNLCURRINNER JOIN
		DYNAMICS..MC40200 AS MC402F WITH(NOLOCK)ON MC402F.CURRNIDX = MC400.FUNCRIDXINNER JOIN
		PM40100 AS PM401 WITH(NOLOCK)ON PM401.UNIQKEY = PM401.UNIQKEYORDER BY PM.DOCDATEGOGRANT SELECT ON uv_AZRCRV_PurchasingTrxList TO DYNGRPGO

Viewing all articles
Browse latest Browse all 58670

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>