USP_REPORT_OPENTRANSACTIONS
Retrieves the data for the open transactions report
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATETYPE | smallint | IN | |
@DATE | datetime | IN | |
@TRANSACTIONQUERY | uniqueidentifier | IN | |
@VENDORID | uniqueidentifier | IN | |
@REPORTUSERID | nvarchar(128) | IN | |
@ALTREPORTUSERID | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_OPENTRANSACTIONS
(
@DATETYPE smallint = null,
@DATE datetime = null,
@TRANSACTIONQUERY uniqueidentifier = null,
@VENDORID uniqueidentifier = null,
@REPORTUSERID nvarchar(128) = null,
@ALTREPORTUSERID nvarchar(128) = null
)
with execute as owner
as
set nocount on;
declare @CURRENTAPPUSERID uniqueidentifier;
declare @ISADMIN bit;
declare @APPUSER_IN_NONRACROLE bit;
declare @APPUSER_IN_NOSECGROUPROLE bit;
set @CURRENTAPPUSERID = dbo.UFN_APPUSER_GETREPORTAPPUSERID(@REPORTUSERID, @ALTREPORTUSERID);
set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);
declare @SQLTOEXEC nvarchar(max);
declare @DBOBJECTNAME nvarchar(128);
declare @DBOBJECTTYPE smallint;
if @TRANSACTIONQUERY is not null begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @TRANSACTIONQUERY) raiserror('ID set does not exist in the database.', 15, 1);
select @DBOBJECTNAME = DBOBJECTNAME, @DBOBJECTTYPE = OBJECTTYPE from dbo.IDSETREGISTER where ID = @TRANSACTIONQUERY;
if @DBOBJECTTYPE = 1 set @DBOBJECTNAME = @DBOBJECTNAME + '()';
else if @DBOBJECTTYPE = 2 set @DBOBJECTNAME = @DBOBJECTNAME + '(''' + convert(nvarchar(36), @TRANSACTIONQUERY) + ''')';
end
set @SQLTOEXEC =
'select
''http://www.blackbaud.com?CONSTITUENTID='' + CONVERT(nvarchar(36),FT.CONSTITUENTID) as [CONSTITUENTID],
dbo.UFN_NAMEFORMAT_08(C.ID, C.KEYNAME, C.FIRSTNAME, C.MIDDLENAME, null, null, null, null, null, null, null) as [VENDORNAME],
FT.TYPE,
FT.USERDEFINEDID,
CASE WHEN FT.TYPECODE = 101 THEN ''http://www.blackbaud.com?INVOICEID='' + CONVERT(nvarchar(36), FT.ID) ELSE '''' END as [INVOICEID],
CASE WHEN FT.TYPECODE = 102 THEN ''http://www.blackbaud.com?CREDITMEMOID='' + CONVERT(nvarchar(36), FT.ID) ELSE '''' END as [CREDITMEMOID],
cast(FT.DATE as datetime) [DATE],
FT.POSTDATE,
CASE WHEN FT.TYPECODE=101 THEN FT.TRANSACTIONAMOUNT ELSE -1 * FT.TRANSACTIONAMOUNT END as [AMOUNT],
CASE WHEN FT.TYPECODE=101 THEN I.BALANCE ELSE -1 * CM.BALANCE END as [BALANCE],
CASE WHEN FT.TYPECODE=101 THEN I.DATEDUE ELSE cast(FT.DATE as datetime) END as [DUEDATE]
from dbo.FINANCIALTRANSACTION FT with (nolock)
inner join dbo.CONSTITUENT as C on FT.CONSTITUENTID = C.ID
left outer join dbo.ADDRESS as A on FT.CONSTITUENTID = A.CONSTITUENTID and A.ISPRIMARY = 1
left outer join dbo.INVOICE I on I.ID = FT.ID and FT.TYPECODE = 101
left outer join dbo.CREDITMEMO CM on CM.ID = FT.ID and FT.TYPECODE = 102 ' + nchar(13);
if @TRANSACTIONQUERY is not null
set @SQLTOEXEC = @SQLTOEXEC + 'inner join dbo.' + @DBOBJECTNAME + ' as SELECTION on FT.[ID] = SELECTION.[ID]' + nchar(13);
set @SQLTOEXEC = @SQLTOEXEC +
'where
((@DATETYPE = 0 and (FT.DATE <= GETDATE()) and ((FT.POSTDATE is null) or (FT.POSTDATE <= GETDATE())) or
(@DATETYPE = 1 and (FT.DATE <= DateAdd("d", -1, GETDATE())) and ((FT.POSTDATE is null) or (FT.POSTDATE <= DateAdd("d", -1, GETDATE())))) or
(@DATETYPE = 2 and (FT.DATE <= DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))) and ((FT.POSTDATE is null) or (FT.POSTDATE <= DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)))) or
(@DATETYPE = 3 and (FT.DATE <= @DATE) and ((FT.POSTDATE is null) or (FT.POSTDATE <= @DATE)))))
and (@VENDORID is null or FT.CONSTITUENTID = @VENDORID)
and (FT.TYPECODE = 101 or FT.TYPECODE = 102)
and isnull(I.ZEROBALANCE, CM.ZEROBALANCE) = 0 '
exec sp_executesql @SQLTOEXEC,
N'@DATETYPE smallint, @DATE datetime, @VENDORID uniqueidentifier, @ISADMIN bit, @APPUSER_IN_NONRACROLE bit, @APPUSER_IN_NOSECGROUPROLE bit, @CURRENTAPPUSERID uniqueidentifier',
@DATETYPE=@DATETYPE, @DATE=@DATE, @VENDORID=@VENDORID, @ISADMIN=@ISADMIN, @APPUSER_IN_NONRACROLE=@APPUSER_IN_NONRACROLE, @APPUSER_IN_NOSECGROUPROLE=@APPUSER_IN_NOSECGROUPROLE, @CURRENTAPPUSERID=@CURRENTAPPUSERID;