UFN_SMARTQUERY_SPONSORSHIPDELINQUENCY
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SPONSORSELECTIONID | uniqueidentifier | IN | |
@SPONSORSHIPSELECTIONID | uniqueidentifier | IN | |
@SPONSORSHIPPROGRAMID | uniqueidentifier | IN | |
@FREQUENCYCODE | tinyint | IN | |
@PASTDUEINSTALLMENTS | smallint | IN | |
@PASTDUEAMOUNT | money | IN | |
@LASTPAYMENTCRITERIA | tinyint | IN | |
@LASTPAYMENTXMONTHSAGO | smallint | IN | |
@LASTPAYMENTDATE | date | IN | |
@PASTDUESINCECRITERIA | tinyint | IN | |
@PASTDUESINCEXMONTHSAGO | smallint | IN | |
@PASTDUESINCEDATE | date | IN | |
@CURRENCIES | uniqueidentifier | IN | |
@MAXROWS | int | IN |
Definition
Copy
create function dbo.UFN_SMARTQUERY_SPONSORSHIPDELINQUENCY
(
@SPONSORSELECTIONID uniqueidentifier = null,
@SPONSORSHIPSELECTIONID uniqueidentifier = null,
@SPONSORSHIPPROGRAMID uniqueidentifier = null,
@FREQUENCYCODE tinyint = null,
@PASTDUEINSTALLMENTS smallint = null,
@PASTDUEAMOUNT money = null,
@LASTPAYMENTCRITERIA tinyint = null,
@LASTPAYMENTXMONTHSAGO smallint = null,
@LASTPAYMENTDATE date = null,
@PASTDUESINCECRITERIA tinyint = null,
@PASTDUESINCEXMONTHSAGO smallint = null,
@PASTDUESINCEDATE date = null,
@CURRENCIES uniqueidentifier = null,
@MAXROWS int = null
)
returns @T table
(
ID uniqueidentifier not null,
SPONSORNAME nvarchar(154),
SPONSORSHIPPROGRAM nvarchar(100),
OPPORTUNITYNAME nvarchar(154),
OPPORTUNITYLOCATION nvarchar(200),
FREQUENCY nvarchar(15),
AMOUNT money,
PASTDUEINSTALLMENTS smallint,
PASTDUEAMOUNT money,
LASTPAYMENTDATE date,
PASTDUESINCE date,
TRANSACTIONCURRENCYID uniqueidentifier
)
as
begin
declare @CURRENTDATE date;
set @CURRENTDATE = getdate();
if @LASTPAYMENTCRITERIA = 0
set @LASTPAYMENTDATE = dateadd(month,-@LASTPAYMENTXMONTHSAGO,@CURRENTDATE);
if @PASTDUESINCECRITERIA = 0
set @PASTDUESINCEDATE = dateadd(month,-@PASTDUESINCEXMONTHSAGO,@CURRENTDATE);
if @CURRENCIES is null
set @CURRENCIES = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
/* WI # 359044 AlexLa On the edit form, previously, if you don't select a value, it still comes in with a default value so that it appears as though there is criteria set in the UI when there is not.
For instance, you may have set past due amount to a number that shouldn't cause anyone to come up, yet Past due installments comes in as 0 when not selected so this statement
PASTDUESUMMARY.AMOUNT >= @PASTDUEAMOUNT is always true.
Without changing the function's signature, I think this change will work because if the @value is the default they either a)Did not check the box or
b) the UI will enforce that they put something other than the default if the checkbox is checked.
*/
if @PASTDUEINSTALLMENTS = 0
set @PASTDUEINSTALLMENTS = null;
if @PASTDUEAMOUNT = 0.00
set @PASTDUEAMOUNT = null;
if @LASTPAYMENTDATE = '01/01/0001'
set @LASTPAYMENTDATE = null;
insert into @T
select top(@MAXROWS) SPONSORSHIP.ID,
NF.NAME,
SPONSORSHIPPROGRAM.NAME,
dbo.UFN_SPONSORSHIPOPPORTUNITY_TRANSLATIONFUNCTION(SPONSORSHIP.SPONSORSHIPOPPORTUNITYID),
dbo.UFN_SPONSORSHIPLOCATION_GETFULLNAME(SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID),
REVENUESCHEDULE.FREQUENCY,
REVENUESPLIT.TRANSACTIONAMOUNT as AMOUNT,
PASTDUESUMMARY.NUMINSTALLMENTS,
PASTDUESUMMARY.AMOUNT as PASTDUEAMOUNT,
LASTPAYMENT.DATE,
PASTDUESUMMARY.SINCEDATE,
REVENUESPLIT.TRANSACTIONCURRENCYID
from dbo.SPONSORSHIP
left join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SPONSORSELECTIONID) INCLUDESPONSORS on SPONSORSHIP.CONSTITUENTID = INCLUDESPONSORS.ID
left join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@SPONSORSHIPSELECTIONID) INCLUDESPONSORSHIPS on SPONSORSHIP.ID = INCLUDESPONSORSHIPS.ID
left join dbo.REVENUESPLIT on REVENUESPLIT.ID = SPONSORSHIP.REVENUESPLITID
left join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = REVENUESPLIT.REVENUEID
left join
(
select
WRITEOFFINSTALLMENTS.REVENUEID,
count(*) NUMINSTALLMENTS,
sum(WRITEOFFINSTALLMENTS.BALANCE) AMOUNT,
min(WRITEOFFINSTALLMENTS.DATE) SINCEDATE
from
dbo.UFN_RECURRINGGIFTINSTALLMENT_GETWRITEOFFINSTALLMENTS_BULK() as WRITEOFFINSTALLMENTS
where
WRITEOFFINSTALLMENTS.STATUSCODE = 1
group by
WRITEOFFINSTALLMENTS.REVENUEID
) PASTDUESUMMARY on REVENUESPLIT.REVENUEID = PASTDUESUMMARY.REVENUEID
left join
(
select
RECURRINGGIFTACTIVITY.SOURCEREVENUEID,
max(PAYMENT.DATE) DATE
from
dbo.RECURRINGGIFTACTIVITY
inner join dbo.REVENUESPLIT PAYMENTSPLIT on PAYMENTSPLIT.ID = RECURRINGGIFTACTIVITY.PAYMENTREVENUEID
inner join dbo.REVENUE PAYMENT on PAYMENT.ID = PAYMENTSPLIT.REVENUEID
group by
RECURRINGGIFTACTIVITY.SOURCEREVENUEID
) LASTPAYMENT on REVENUESPLIT.REVENUEID = LASTPAYMENT.SOURCEREVENUEID
left join dbo.SPONSORSHIPPROGRAM on SPONSORSHIPPROGRAM.ID = SPONSORSHIP.SPONSORSHIPPROGRAMID
left join dbo.SPONSORSHIPOPPORTUNITY on SPONSORSHIPOPPORTUNITY.ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(REVENUE.CONSTITUENTID) NF
where (@SPONSORSELECTIONID is null or INCLUDESPONSORS.ID is not null)
and (@SPONSORSHIPSELECTIONID is null or INCLUDESPONSORSHIPS.ID is not null)
and (@SPONSORSHIPPROGRAMID is null or SPONSORSHIP.SPONSORSHIPPROGRAMID = @SPONSORSHIPPROGRAMID)
and (@FREQUENCYCODE is null or REVENUESCHEDULE.FREQUENCYCODE = @FREQUENCYCODE)
and ((@PASTDUEINSTALLMENTS is not null and PASTDUESUMMARY.NUMINSTALLMENTS >= @PASTDUEINSTALLMENTS) or
(@PASTDUEAMOUNT is not null and PASTDUESUMMARY.AMOUNT >= @PASTDUEAMOUNT and REVENUESPLIT.TRANSACTIONCURRENCYID = @CURRENCIES) or
(@LASTPAYMENTDATE is not null and (LASTPAYMENT.DATE <= @LASTPAYMENTDATE or LASTPAYMENT.DATE is null)) or
(@PASTDUESINCEDATE is not null and PASTDUESUMMARY.SINCEDATE <= @PASTDUESINCEDATE))
and SPONSORSHIP.STATUSCODE = 1
return;
end;