USP_DATALIST_DEPOSITPAYMENTLINK_OPTIMIZED
This is used to show payments linked to this deposit.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DEPOSITID | uniqueidentifier | INOUT | |
@CONTEXTID | uniqueidentifier | IN | |
@BATCHID | uniqueidentifier | INOUT | |
@ADDEDBY | nvarchar(128) | INOUT | |
@PAYMENTMETHODCODE | tinyint | INOUT | |
@CARDTYPECODEID | uniqueidentifier | INOUT | |
@STARTDATE | datetime | INOUT | |
@ENDDATE | datetime | INOUT | |
@REFERENCE | nvarchar(255) | INOUT | |
@POSTSTATUSCODE | tinyint | INOUT | |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | INOUT | |
@APPLICATIONCODE | tinyint | IN | |
@MAXROWS | int | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_DEPOSITPAYMENTLINK_OPTIMIZED
(
@DEPOSITID uniqueidentifier = null output,
@CONTEXTID uniqueidentifier,
@BATCHID uniqueidentifier = null output,
@ADDEDBY nvarchar(128) = null output,
@PAYMENTMETHODCODE tinyint = null output,
@CARDTYPECODEID uniqueidentifier = null output,
@STARTDATE datetime = null output,
@ENDDATE datetime = null output,
@REFERENCE nvarchar(255) = '' output,
@POSTSTATUSCODE tinyint = null output,
@OTHERPAYMENTMETHODCODEID uniqueidentifier = null output,
@APPLICATIONCODE tinyint = null,
@MAXROWS int = 1000000,
@CURRENTAPPUSERID uniqueidentifier = null
)
with execute as owner
as
set nocount on;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BANKACCOUNTSYSTEMID uniqueidentifier;
declare @BATCHNUMBER nvarchar(100); --dbo.UFN_BATCH_GETBATCHNUMBER(@BATCHID)
select @BATCHNUMBER = BATCHNUMBER from dbo.BATCH where ID = @BATCHID;
set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE);
set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
select @BANKACCOUNTSYSTEMID = BA.PDACCOUNTSYSTEMID
,@TRANSACTIONCURRENCYID = D.TRANSACTIONCURRENCYID
,@POSTSTATUSCODE = BAT.POSTSTATUSCODE
from BANKACCOUNT BA
inner join dbo.BANKACCOUNTTRANSACTION BAT on BAT.BANKACCOUNTID = BA.ID
inner join dbo.BANKACCOUNTDEPOSIT D on D.ID = BAT.ID
where D.ID = @CONTEXTID
set @MAXROWS = COALESCE(@MAXROWS,100);
declare @ISSYSADMIN bit
set @ISSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID)
declare @SQLTOEXEC nvarchar(max) = 'select top(@MAXROWS)
[REVENUE].[ID]
,cast([REVENUE].[DATE] as datetime) as [TRANSACTIONDATE]
,REVENUEPAYMENTMETHOD.PAYMENTMETHOD
,[REVENUE].[BASEAMOUNT] as AMOUNT
,[REVENUE].TYPE as [TRANSACTIONTYPE]
,REVENUEREFERENCE.REFERENCE
,CONSTITUENT.NAME as CONSTITUENT
,T1.APPLCATION as [APPLICATION]
,[REVENUE].[TRANSACTIONAMOUNT]
,CREDITCARDPAYMENTMETHODDETAIL.AUTHORIZATIONCODE
from
dbo.FINANCIALTRANSACTION as REVENUE
join dbo.REVENUE_EXT as REVENUEREFERENCE on REVENUEREFERENCE.ID = REVENUE.ID
inner join dbo.REVENUEPAYMENTMETHOD on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on REVENUE.ID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.ADJUSTMENT on ADJUSTMENT.REVENUEID = REVENUE.ID and REVENUE.POSTSTATUSCODE = 2
left join dbo.SALESORDERPAYMENT on SALESORDERPAYMENT.PAYMENTID = REVENUE.ID
left join dbo.SALESORDER on SALESORDER.ID = SALESORDERPAYMENT.SALESORDERID
left join dbo.RECONCILIATION on SALESORDERPAYMENT.RECONCILIATIONID = RECONCILIATION.ID
left join dbo.OTHERPAYMENTMETHODDETAIL on OTHERPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
left join dbo.CONSTITUENT on REVENUE.CONSTITUENTID = CONSTITUENT.ID
left join dbo.CREDITCARDPAYMENTMETHODDETAIL on CREDITCARDPAYMENTMETHODDETAIL.ID = REVENUEPAYMENTMETHOD.ID
left join dbo.RESERVATIONSECURITYDEPOSITPAYMENT on RESERVATIONSECURITYDEPOSITPAYMENT.PAYMENTID = REVENUE.ID';
declare @WHERECLAUSE nvarchar(max) = ' where REVENUE.DELETEDON is null
and [BANKACCOUNTDEPOSITPAYMENT].[DEPOSITID] IS NULL AND [REVENUE].[TYPECODE] = 0
and [REVENUEPAYMENTMETHOD].[PAYMENTMETHODCODE] in (0,1,2,10)
and ((@POSTSTATUSCODE = 1 and REVENUE.POSTSTATUSCODE = 1)
or (@POSTSTATUSCODE = 2 and REVENUE.POSTSTATUSCODE = 3)
or (ADJUSTMENT.ID is not null and ADJUSTMENT.POSTSTATUSCODE = @POSTSTATUSCODE))
and (SALESORDERPAYMENT.ID is null or (RECONCILIATION.STATUSCODE = 3 and SALESORDERPAYMENT.DEPOSITED = 1) or (SALESORDERPAYMENT.DONOTRECONCILE = 1 and SALESORDER.STATUSCODE = 1))
and (NOT exists(select ID from dbo.NONDEPOSITABLEPAYMENTMETHOD where ID = OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID))
and ((RESERVATIONSECURITYDEPOSITPAYMENT.ID is null) or
(RESERVATIONSECURITYDEPOSITPAYMENT.RECONCILIATIONID is not null and RESERVATIONSECURITYDEPOSITPAYMENT.DEPOSITED = 1 and exists
(select 1 from dbo.RECONCILIATION REC where REC.STATUSCODE = 3 and REC.ID = RESERVATIONSECURITYDEPOSITPAYMENT.RECONCILIATIONID)
))';
if exists (select 1 from dbo.INSTALLEDPRODUCTLIST where id = '133F9BCA-00F1-4007-9792-586B931340C6')
begin
--set @SQLTOEXEC = @SQLTOEXEC + ' inner join dbo.PDACCOUNTSYSTEMFORREVENUE on PDACCOUNTSYSTEMFORREVENUE.ID = REVENUE.ID ';
set @WHERECLAUSE = @WHERECLAUSE + ' and REVENUE.PDACCOUNTSYSTEMID = @BANKACCOUNTSYSTEMID '
end
if (@ISSYSADMIN = 0)
begin
-- only show payments with designation sites that match the user's site
set @WHERECLAUSE = @WHERECLAUSE + ' and exists (select U.SITEID from dbo.UFN_SITEID_MAPFROM_APPUSERID(@CURRENTAPPUSERID) U inner join dbo.UFN_SITEID_MAPFROM_REVENUEID(REVENUE.ID) R on R.SITEID = U.SITEID or (R.SITEID is null and U.SITEID is null)) '
end
if exists (select 1 from dbo.INSTALLEDPRODUCTLIST where id = '97D98E59-5B0B-446F-BF48-DE8709F50AFE')
set @WHERECLAUSE = @WHERECLAUSE + ' and REVENUE.TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID '
if @BATCHID is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and REVENUEREFERENCE.BATCHNUMBER = @BATCHNUMBER ';
if @ADDEDBY is not null or len(@ADDEDBY) > 0
begin
set @SQLTOEXEC = @SQLTOEXEC + ' inner join dbo.CHANGEAGENT on CHANGEAGENT.ID = REVENUE.ADDEDBYID ';
set @WHERECLAUSE = @WHERECLAUSE + ' and CHANGEAGENT.USERNAME like ''%'' + @ADDEDBY + ''%'' ';
end
if @PAYMENTMETHODCODE is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and (REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = case
when @PAYMENTMETHODCODE = 1 then 1
when @PAYMENTMETHODCODE = 2 then 0
when @PAYMENTMETHODCODE = 8 then 2
when @PAYMENTMETHODCODE = 32 then 10
end) ';
if @CARDTYPECODEID is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID = @CARDTYPECODEID ';
if @STARTDATE is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and cast(REVENUE.DATE as datetime) >= @STARTDATE ';
if @ENDDATE is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and cast(REVENUE.DATE as datetime) <= @ENDDATE ';
if @REFERENCE is not null and len(@REFERENCE) > 0
set @WHERECLAUSE = @WHERECLAUSE + ' and REVENUEREFERENCE.REFERENCE like ''%'' + @REFERENCE + ''%'' ';
if @OTHERPAYMENTMETHODCODEID is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID ';
if @APPLICATIONCODE is not null
set @WHERECLAUSE = @WHERECLAUSE + ' and REVENUE.ID in (select REVENUEID from REVENUESPLIT where (APPLICATIONCODE = 3 and TYPECODE = 2 and @APPLICATIONCODE = 5) or (not (APPLICATIONCODE = 3 and TYPECODE = 2) and APPLICATIONCODE = @APPLICATIONCODE)) ';
set @SQLTOEXEC = @SQLTOEXEC + ' outer apply (select isnull((select MAX(case when T2.TYPECODE = 2 and T2.APPLICATIONCODE = 3 then ''Recurring membership'' else T2.APPLICATION end) from dbo.FINANCIALTRANSACTIONLINEITEM T3 inner join dbo.REVENUESPLIT_EXT T2 on T3.ID = T2.ID where T3.FINANCIALTRANSACTIONID = REVENUE.ID group by T3.FINANCIALTRANSACTIONID having COUNT(T3.FINANCIALTRANSACTIONID) = 1),''Multiple'') as APPLCATION) T1 ';
set @SQLTOEXEC = @SQLTOEXEC + @WHERECLAUSE + ' order by [REVENUE].[TYPE] asc, [REVENUE].[DATE] desc '
exec sp_executesql @SQLTOEXEC,
N'@MAXROWS int, @BANKACCOUNTSYSTEMID uniqueidentifier, @TRANSACTIONCURRENCYID uniqueidentifier, @POSTSTATUSCODE tinyint, @BATCHNUMBER nvarchar(100), @PAYMENTMETHODCODE tinyint, @CARDTYPECODEID uniqueidentifier, @STARTDATE datetime, @ENDDATE datetime,@OTHERPAYMENTMETHODCODEID uniqueidentifier,@APPLICATIONCODE tinyint, @REFERENCE nvarchar(255), @ADDEDBY nvarchar(128), @CURRENTAPPUSERID uniqueidentifier',
@MAXROWS=@MAXROWS,@BANKACCOUNTSYSTEMID=@BANKACCOUNTSYSTEMID,@TRANSACTIONCURRENCYID=@TRANSACTIONCURRENCYID,@POSTSTATUSCODE=@POSTSTATUSCODE,@BATCHNUMBER=@BATCHNUMBER, @PAYMENTMETHODCODE=@PAYMENTMETHODCODE,@CARDTYPECODEID=@CARDTYPECODEID,@STARTDATE=@STARTDATE,@ENDDATE=@ENDDATE,@OTHERPAYMENTMETHODCODEID=@OTHERPAYMENTMETHODCODEID,@APPLICATIONCODE=@APPLICATIONCODE, @REFERENCE=@REFERENCE, @ADDEDBY=@ADDEDBY,@CURRENTAPPUSERID=@CURRENTAPPUSERID
return 0;