USP_DATALIST_CONSTITUENTMEMBERSHIPINFOFORDUES
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENTMEMBERSHIPINFOFORDUES
(
@CONSTITUENTID uniqueidentifier,
@PDACCOUNTSYSTEMID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
declare @ISGROUP bit = 0;
select
@ISGROUP = ISGROUP
from dbo.CONSTITUENT
where
ID = @CONSTITUENTID;
declare @CURRENCYSETID uniqueidentifier
select @CURRENCYSETID = CURRENCYSETID
from dbo.PDACCOUNTSYSTEM
where ID = @PDACCOUNTSYSTEMID
declare @BASECURRENCYID uniqueidentifier
select
@BASECURRENCYID = CURRENCY.ID
from
dbo.CURRENCYSET
inner join dbo.CURRENCY on CURRENCY.ID = CURRENCYSET.BASECURRENCYID
where
CURRENCYSET.ID = coalesce(@CURRENCYSETID,dbo.UFN_CURRENCYSET_GETAPPUSERDEFAULTCURRENCYSET())
declare @CONSTITUENTS table (ID uniqueidentifier);
insert into @CONSTITUENTS
select @CONSTITUENTID as ID
union all
select ID from dbo.UFN_GROUP_GETCURRENTMEMBERS(@CONSTITUENTID, @CURRENTAPPUSERID, '3550edaf-780c-48c8-9700-f478eeac9e51', 0)
union all
select ID from dbo.UFN_CONSTITUENT_GETGROUPS(@CONSTITUENTID) where dbo.UFN_CONSTITUENT_ISHOUSEHOLD(ID) = 1;
declare @RESULTSTABLE table
(
MEMBERSHIPPROGRAMID uniqueidentifier,
MEMBERSHIPLEVELID uniqueidentifier,
MEMBERSHIPLEVELTERMID uniqueidentifier,
ISRENEWAL bit,
MEMBERSHIPNAME nvarchar(100),
EXPIRATIONDATE datetime,
HASCONTRIBUTORYPART bit,
MEMBERSHIPLEVELDESIGNATIONS xml,
MEMBERSHIPLEVELBENEFITS xml,
TAXDEDUCTIBLEAMOUNT money,
CANBEPAIDINFULL bit,
CANBEPLEDGED bit,
MEMBERSHIPID uniqueidentifier,
PLEDGEID uniqueidentifier,
PLEDGECURRENCY uniqueidentifier,
PLEDGEBALANCE money,
NEXTINSTALLMENTAMOUNT money,
NEXTINSTALLMENTDATE datetime,
EXPIRESONCODE tinyint,
CUTOFFDAY tinyint,
CUTOFFDAYFORYEAR UDT_MONTHDAY,
BASECURRENCYID uniqueidentifier,
PROGRAMTYPECODE tinyint,
ISRECURRINGGIFT bit,
RECURRINGGIFTCURRENCY uniqueidentifier,
NEXTRECURRINGGIFTINSTALLMENTDATE datetime,
NEXTRECURRINGGIFTAMOUNT money,
CONSTITUENTNAME nvarchar(300),
CONSTITUENTID uniqueidentifier,
DEDUCTIBILITYCODE tinyint,
RENEWALWINDOWEND tinyint,
RENEWALWINDOWREVENUETYPECODE tinyint,
NUMBEROFCHILDREN smallint,
RECURRINGGIFTISACTIVE bit,
INSTALLMENTS xml,
AUTOMATICALLYRENEWMEMBERSHIP bit,
CONTRIBUTIONBASEDEXPRIESONCODE tinyint,
ISCANCELLED bit,
PLEDGEPDACCOUNTSYSTEMID uniqueidentifier,
ISPENDING bit,
RECURRINGGIFTREMAININGBALANCE money,
HASTYPES bit,
CURRENTMEMBERSHIPTYPE uniqueidentifier,
ISUPGRADEABLE bit,
RENEWALSTARTDATE datetime,
CHILDRENALLOWED smallint,
MEMBERSALLOWED smallint,
MEMBERSHIPLEVELNAME nvarchar(100),
CANCELDATE datetime,
INSTALLMENTID uniqueidentifier,
RECURRINGGIFTID uniqueidentifier,
RECURRINGGIFTINSTALLMENTID uniqueidentifier,
COMMITMENTISPENDING bit,
MEMBERSHIPLEVELTERMNAME nvarchar(100),
NUMBEROFCARDSALLOWED smallint
)
insert into @RESULTSTABLE
(
MEMBERSHIPPROGRAMID,
MEMBERSHIPLEVELID,
MEMBERSHIPLEVELTERMID,
ISRENEWAL,
MEMBERSHIPNAME,
EXPIRATIONDATE,
HASCONTRIBUTORYPART,
MEMBERSHIPLEVELDESIGNATIONS,
MEMBERSHIPLEVELBENEFITS,
TAXDEDUCTIBLEAMOUNT,
CANBEPAIDINFULL,
CANBEPLEDGED,
MEMBERSHIPID,
EXPIRESONCODE,
CUTOFFDAY,
CUTOFFDAYFORYEAR,
BASECURRENCYID,
PROGRAMTYPECODE,
CONSTITUENTNAME,
CONSTITUENTID,
DEDUCTIBILITYCODE,
RENEWALWINDOWEND,
RENEWALWINDOWREVENUETYPECODE,
NUMBEROFCHILDREN,
AUTOMATICALLYRENEWMEMBERSHIP,
CONTRIBUTIONBASEDEXPRIESONCODE,
ISCANCELLED,
ISRECURRINGGIFT,
RECURRINGGIFTISACTIVE,
ISPENDING,
HASTYPES,
CURRENTMEMBERSHIPTYPE,
ISUPGRADEABLE,
RENEWALSTARTDATE,
CHILDRENALLOWED,
MEMBERSALLOWED,
MEMBERSHIPLEVELNAME,
CANCELDATE,
PLEDGEID,
RECURRINGGIFTID,
COMMITMENTISPENDING,
MEMBERSHIPLEVELTERMNAME,
NUMBEROFCARDSALLOWED
)
select
MEMBERSHIP.MEMBERSHIPPROGRAMID,
MEMBERSHIP.MEMBERSHIPLEVELID,
MEMBERSHIP.MEMBERSHIPLEVELTERMID,
case MEMBERSHIP.STATUSCODE
when 1 then 1
when 5 then 1
when 2 then 1
else
case MEMBERSHIPPROGRAM.PROGRAMTYPECODE
when 0 then
case
when dbo.UFN_MEMBERSHIP_HASOUTSTANDINGPLEDGE(MEMBERSHIP.ID) = 1 then 0
else 1
end
else 0
end
end as ISRENEWAL,
MEMBERSHIPPROGRAM.NAME as MEMBERSHIPNAME,
case
when MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 0 then
case when MEMBERSHIP.STATUSCODE = 2 then getdate() else MEMBERSHIP.EXPIRATIONDATE end
else null
end as EXPIRATIONDATE,
case when MEMBERSHIPPROGRAM.DEDUCTIBILITYCODE <> 2 and MEMBERSHIPPROGRAM.DUESTREATEDASCONTRIBUTION = 1 then 1 else 0 end as HASCONTRIBUTORYPART,
(select DESIGNATION.ID, DESIGNATION.NAME, MEMBERSHIPLEVELDESIGNATION.[PERCENT]
from dbo.MEMBERSHIPLEVELDESIGNATION
inner join dbo.DESIGNATION on MEMBERSHIPLEVELDESIGNATION.DESIGNATIONID = DESIGNATION.ID
where MEMBERSHIPLEVELDESIGNATION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
for xml raw('ITEM'),type,elements,root('MEMBERSHIPLEVELDESGINATIONS'),BINARY BASE64
) as MEMBERSHIPLEVELDESIGNATIONS,
(select
MEMBERSHIPLEVELBENEFIT.BENEFITID
, BENEFIT.NAME
, MEMBERSHIPLEVELBENEFIT.UNITVALUE
, MEMBERSHIPLEVELBENEFIT.BASECURRENCYID
, MEMBERSHIPLEVELBENEFIT.QUANTITY
, MEMBERSHIPLEVELBENEFIT.USEPERCENT
, MEMBERSHIPLEVELBENEFIT.VALUEPERCENT
, MEMBERSHIPLEVELBENEFIT.FREQUENCYCODE
, MEMBERSHIPLEVELBENEFIT.DETAILS
from dbo.MEMBERSHIPLEVELBENEFIT
inner join dbo.BENEFIT on MEMBERSHIPLEVELBENEFIT.BENEFITID = BENEFIT.ID
where MEMBERSHIPLEVELBENEFIT.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
order by MEMBERSHIPLEVELBENEFIT.SEQUENCE
for xml raw('ITEM'),type,elements,root('MEMBERSHIPLEVELBENEFITS'),BINARY BASE64
) as MEMBERSHIPLEVELBENEFITS,
coalesce(
case
-- Entire amount
when MEMBERSHIPPROGRAM.DEDUCTIBILITYCODE = 0 then
case
when MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 0 then MEMBERSHIPLEVEL.RECEIPTAMOUNT
else MEMBERSHIPLEVELTERM.AMOUNT
end
-- Portion
when MEMBERSHIPPROGRAM.DEDUCTIBILITYCODE = 1 then MEMBERSHIPLEVEL.RECEIPTAMOUNT
-- None
else 0
end, 0) as TAXDEDUCTIBLEAMOUNT,
MEMBERSHIPPROGRAM.ONEPAYMENTEACHTERM as CANBEPAIDINFULL,
MEMBERSHIPPROGRAM.MULTIPLEPAYMENTSEACHTERM as CANBEPLEDGED,
MEMBERSHIP.ID as MEMBERSHIPID,
MEMBERSHIPPROGRAM.EXPIRESONCODE,
MEMBERSHIPPROGRAM.CUTOFFDAY,
MEMBERSHIPPROGRAM.CUTOFFDATEFORYEAR,
MEMBERSHIPPROGRAM.BASECURRENCYID,
MEMBERSHIPPROGRAM.PROGRAMTYPECODE,
NF.NAME as CONSTITUENTNAME,
MEMBER.CONSTITUENTID as CONSTITUENTID,
MEMBERSHIPPROGRAM.DEDUCTIBILITYCODE,
MEMBERSHIPLEVEL.AFTEREXPIRATION as RENEWALWINDOWEND,
MEMBERSHIPPROGRAM.RENEWALWINDOWREVENUETYPECODE as RENEWALWINDOWREVENUETYPECODE,
MEMBERSHIP.NUMBEROFCHILDREN, -- Temporary workaround for children not implemented in 2012 Q1
coalesce(MEMBERSHIP.AUTOMATICALLYRENEWMEMBERSHIP,0),
coalesce(MEMBERSHIPPROGRAMCONTRIBUTION.WHATDATETOCALCULATEEXPIRATIONDATECODE, 0) as CONTRIBUTIONBASEDEXPIRESONCODE,
case MEMBERSHIP.STATUSCODE when 1 then 1 else 0 end as ISCANCELLED,
0 as ISRECURRINGGIFT,
0 as RECURRINGGIFTISACTIVE,
case MEMBERSHIP.STATUSCODE when 2 then 1 else 0 end as ISPENDING,
case when exists (select top 1 MEMBERSHIPLEVELTYPE.ID from dbo.MEMBERSHIPLEVELTYPE
inner join dbo.MEMBERSHIPLEVEL ML on ML.ID = MEMBERSHIPLEVEL.ID)
then 1
else 0
end as HASTYPES,
MEMBERSHIP.MEMBERSHIPLEVELTYPECODEID as CURRENTMEMBERSHIPTYPE,
MEMBERSHIPSTATE.UPGRADEABLESTATUS as ISUPGRADEABLE,
dbo.UFN_MEMBERSHIPLEVEL_CREATERENEWALBEFOREEXPIRATIONDATE(MEMBERSHIPLEVEL.ID, dbo.MEMBERSHIP.EXPIRATIONDATE) as RENEWALSTARTDATE,
MEMBERSHIPLEVEL.CHILDRENALLOWED,
MEMBERSHIPLEVEL.MEMBERSALLOWED,
MEMBERSHIPLEVEL.NAME as MEMBERSHIPLEVELNAME,
null as CANCELDATE,
dbo.UFN_MEMBERSHIP_GETPLEDGE(MEMBERSHIP.ID) as PLEDGEID,
dbo.UFN_MEMBERSHIP_GETRECURRINGGIFT(MEMBERSHIP.ID) as RECURRINGGIFTID,
0, --COMMITMENTISPENDING
case MEMBERSHIPPROGRAM.PROGRAMTYPECODE when 0 then cast(MEMBERSHIPLEVELTERM.TERMTIMELENGTH as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.TERMLENGTH
when 1 then MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTION
else case when MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTIONCODE = 0 then MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION
else cast(MEMBERSHIPLEVELTERM.LIFETIMENUMBEROFPAYMENTS as nvarchar(5)) + ' ' + MEMBERSHIPLEVELTERM.LIFETIMEPAYMENTOPTION + ' payments' end end as MEMBERSHIPLEVELTERMNAME,
MEMBERSHIPLEVEL.CARDSALLOWED
from dbo.MEMBER
inner join dbo.MEMBERSHIP on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIPPROGRAM.ID = MEMBERSHIP.MEMBERSHIPPROGRAMID
inner join @CONSTITUENTS C on C.ID = MEMBER.CONSTITUENTID
left join dbo.SITE on MEMBERSHIPPROGRAM.SITEID = SITE.ID
left outer join dbo.MEMBERSHIPPROGRAMCONTRIBUTION on MEMBERSHIPPROGRAMCONTRIBUTION.ID = MEMBERSHIPPROGRAM.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(MEMBER.CONSTITUENTID) NF
cross apply (
SELECT
case MEMBERSHIP.STATUSCODE
when 0 then
case
when MEMBERSHIPPROGRAM.PROGRAMTYPECODE IN (0,2) then
case
when dbo.UFN_MEMBERSHIP_HASOUTSTANDINGPLEDGE(MEMBERSHIP.ID) = 1 then 0
else 1
end
else 0
end
when 2 then 1
else 0
end as UPGRADEABLESTATUS
) as MEMBERSHIPSTATE
where
(-- Paying for existing membership or program is active
MEMBERSHIP.STATUSCODE = 2
or MEMBERSHIPPROGRAM.PROGRAMTYPECODE <> 0
or dbo.UFN_MEMBERSHIP_HASOUTSTANDINGPLEDGE(MEMBERSHIP.ID) = 1
or MEMBERSHIPPROGRAM.ISACTIVE = 1
)
and MEMBER.ISDROPPED = 0
and
(
MEMBERSHIPPROGRAM.PROGRAMTYPECODE <> 2 or
(
MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 2 and
(
( --cancelled with non-zero balance, for rejoin
MEMBERSHIP.STATUSCODE = 1 or
dbo.UFN_PLEDGE_GETBALANCE(dbo.UFN_MEMBERSHIP_GETPLEDGE(MEMBERSHIP.ID)) > 0
) or
( --active with zero balance, for upgrade
MEMBERSHIP.STATUSCODE = 0 or
dbo.UFN_PLEDGE_GETBALANCE(dbo.UFN_MEMBERSHIP_GETPLEDGE(MEMBERSHIP.ID)) = 0
)
)
)
)
and
(
MEMBERSHIPPROGRAM.PROGRAMTYPECODE <> 1 or
(
MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 1 and MEMBERSHIPPROGRAM.WHEREISREVENUETRACKEDCODE = 0
) or
(
MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 1 and MEMBERSHIPPROGRAM.WHEREISREVENUETRACKEDCODE = 1 and MEMBERSHIP.STATUSCODE = 1
)
)
update @RESULTSTABLE set
INSTALLMENTID = dbo.UFN_PLEDGE_GETNEXTINSTALLMENT(PLEDGEID, null),
RECURRINGGIFTINSTALLMENTID = dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENT(RECURRINGGIFTID, null)
where
PLEDGEID is not null
or RECURRINGGIFTID is not null;
update @RESULTSTABLE set
PLEDGEID = FINANCIALTRANSACTION.ID,
PLEDGECURRENCY = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
PLEDGEBALANCE = dbo.UFN_PLEDGE_GETBALANCE(FINANCIALTRANSACTION.ID),
NEXTINSTALLMENTAMOUNT = dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(INSTALLMENT.ID),
NEXTINSTALLMENTDATE = INSTALLMENT.DATE,
PLEDGEPDACCOUNTSYSTEMID = FINANCIALTRANSACTION.PDACCOUNTSYSTEMID,
COMMITMENTISPENDING = REVENUESCHEDULE.ISPENDING,
INSTALLMENTS =
(
select
SEQUENCE,
INSTALLMENT.AMOUNT,
isnull(SPLITAMOUNTS.DONATION, 0) as CONTRIBUTEDAMOUNT,
isnull((
select sum(INSTALLMENTSPLITPAYMENT.AMOUNT)
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
where
INSTALLMENTSPLITPAYMENT.PLEDGEID = FINANCIALTRANSACTION.ID and
INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
), 0) as PAID,
isnull((
select sum(INSTALLMENTSPLITWRITEOFF.AMOUNT)
from dbo.INSTALLMENTSPLIT
inner join dbo.INSTALLMENTSPLITWRITEOFF on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID
where
INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
), 0) as WRITTENOFF,
isnull(WRITTENOFFAMOUNTS.DONATION, 0) as CONTRIBUTEDWRITTENOFF,
isnull(PAIDAMOUNTS.DONATION, 0) as CONTRIBUTEDPAID,
isnull(SPLITAMOUNTS.MEMBERSHIP, 0) as EARNEDAMOUNT,
isnull(WRITTENOFFAMOUNTS.MEMBERSHIP, 0) as EARNEDWRITTENOFF,
isnull(PAIDAMOUNTS.MEMBERSHIP, 0) as EARNEDPAID,
isnull(SPLITAMOUNTS.ADDON, 0) as ADDONAMOUNT,
isnull(WRITTENOFFAMOUNTS.ADDON, 0) as ADDONWRITTENOFF,
isnull(PAIDAMOUNTS.ADDON, 0) as ADDONPAID
from dbo.INSTALLMENT
outer apply (
select
sum(AMOUNTS.DONATION) as DONATION,
sum(AMOUNTS.MEMBERSHIP) as MEMBERSHIP,
sum(AMOUNTS.ADDON) as ADDON
from dbo.INSTALLMENTSPLIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM on INSTALLMENTSPLIT.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
cross apply(
select
case when REVENUESPLIT_EXT.TYPECODE = 0 then INSTALLMENTSPLIT.AMOUNT else 0 end as DONATION,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 5 then INSTALLMENTSPLIT.AMOUNT else 0 end as MEMBERSHIP,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 18 then INSTALLMENTSPLIT.AMOUNT else 0 end as ADDON
) as AMOUNTS
where INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
) SPLITAMOUNTS
outer apply (
select
sum(AMOUNTS.DONATION) as DONATION,
sum(AMOUNTS.MEMBERSHIP) as MEMBERSHIP,
sum(AMOUNTS.ADDON) as ADDON
from dbo.INSTALLMENTSPLIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM on INSTALLMENTSPLIT.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
cross apply(
select
case when REVENUESPLIT_EXT.TYPECODE = 0 then INSTALLMENTSPLITPAYMENT.AMOUNT else 0 end as DONATION,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 5 then INSTALLMENTSPLITPAYMENT.AMOUNT else 0 end as MEMBERSHIP,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 18 then INSTALLMENTSPLITPAYMENT.AMOUNT else 0 end as ADDON
) as AMOUNTS
where
INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID and
INSTALLMENTSPLITPAYMENT.PLEDGEID = FINANCIALTRANSACTION.ID
) PAIDAMOUNTS
outer apply (
select
sum(AMOUNTS.DONATION) as DONATION,
sum(AMOUNTS.MEMBERSHIP) as MEMBERSHIP,
sum(AMOUNTS.ADDON) as ADDON
from dbo.INSTALLMENTSPLIT
inner join dbo.FINANCIALTRANSACTIONLINEITEM on INSTALLMENTSPLIT.REVENUESPLITID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.INSTALLMENTSPLITWRITEOFF on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID
cross apply(
select
case when REVENUESPLIT_EXT.TYPECODE = 0 then INSTALLMENTSPLITWRITEOFF.AMOUNT else 0 end as DONATION,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 5 then INSTALLMENTSPLITWRITEOFF.AMOUNT else 0 end as MEMBERSHIP,
case when REVENUESPLIT_EXT.APPLICATIONCODE = 18 then INSTALLMENTSPLITWRITEOFF.AMOUNT else 0 end as ADDON
) as AMOUNTS
where INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
) WRITTENOFFAMOUNTS
where
REVENUEID = FINANCIALTRANSACTION.ID
order by INSTALLMENT.SEQUENCE asc
for xml raw('ITEM'),type,elements,root('INSTALLMENTS'),BINARY BASE64
)
from @RESULTSTABLE MEMBERSHIPS
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = MEMBERSHIPS.PLEDGEID
inner join dbo.INSTALLMENT on INSTALLMENT.ID = MEMBERSHIPS.INSTALLMENTID
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
update @RESULTSTABLE set
ISRECURRINGGIFT = 1,
RECURRINGGIFTCURRENCY = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
NEXTRECURRINGGIFTINSTALLMENTDATE = RECURRINGGIFTINSTALLMENT.DATE,
NEXTRECURRINGGIFTAMOUNT = dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(RECURRINGGIFTINSTALLMENT.ID),
RECURRINGGIFTISACTIVE = case when dbo.UFN_RECURRINGGIFT_GETSTATUSCODE(FINANCIALTRANSACTION.ID) = 0 then 1 else 0 end,
RECURRINGGIFTREMAININGBALANCE = dbo.UFN_RECURRINGGIFT_GETREMAININGBALANCE(FINANCIALTRANSACTION.ID),
COMMITMENTISPENDING = REVENUESCHEDULE.ISPENDING
from @RESULTSTABLE MEMBERSHIPS
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = MEMBERSHIPS.RECURRINGGIFTID
inner join dbo.RECURRINGGIFTINSTALLMENT on RECURRINGGIFTINSTALLMENT.ID = MEMBERSHIPS.RECURRINGGIFTINSTALLMENTID
inner join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
update @RESULTSTABLE set
CANCELDATE = (select top 1 MEMBERSHIPTRANSACTION.TRANSACTIONDATE
from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = RESULTSTABLE.MEMBERSHIPID and
RESULTSTABLE.ISCANCELLED = 1 and
MEMBERSHIPTRANSACTION.ACTIONCODE = 4
order by MEMBERSHIPTRANSACTION.TRANSACTIONDATE desc
)
from @RESULTSTABLE RESULTSTABLE
delete from @RESULTSTABLE
where ((PLEDGEID is null and BASECURRENCYID <> @BASECURRENCYID ) or (PLEDGEID is not null and @PDACCOUNTSYSTEMID <> PLEDGEPDACCOUNTSYSTEMID))
select
MEMBERSHIPPROGRAMID,
MEMBERSHIPLEVELID,
MEMBERSHIPLEVELTERMID,
ISRENEWAL,
MEMBERSHIPNAME,
EXPIRATIONDATE,
HASCONTRIBUTORYPART,
MEMBERSHIPLEVELDESIGNATIONS,
MEMBERSHIPLEVELBENEFITS,
TAXDEDUCTIBLEAMOUNT,
CANBEPAIDINFULL,
CANBEPLEDGED,
MEMBERSHIPID,
PLEDGEID,
PLEDGECURRENCY,
PLEDGEBALANCE,
NEXTINSTALLMENTAMOUNT,
NEXTINSTALLMENTDATE,
EXPIRESONCODE,
CUTOFFDAY,
CUTOFFDAYFORYEAR,
BASECURRENCYID,
PROGRAMTYPECODE,
ISRECURRINGGIFT,
RECURRINGGIFTCURRENCY,
NEXTRECURRINGGIFTINSTALLMENTDATE,
NEXTRECURRINGGIFTAMOUNT,
CONSTITUENTNAME,
CONSTITUENTID,
DEDUCTIBILITYCODE,
RENEWALWINDOWEND,
RENEWALWINDOWREVENUETYPECODE,
NUMBEROFCHILDREN,
RECURRINGGIFTISACTIVE,
INSTALLMENTS,
AUTOMATICALLYRENEWMEMBERSHIP,
CONTRIBUTIONBASEDEXPRIESONCODE,
ISCANCELLED,
ISPENDING,
RECURRINGGIFTREMAININGBALANCE,
HASTYPES,
CURRENTMEMBERSHIPTYPE,
ISUPGRADEABLE,
RENEWALSTARTDATE,
CHILDRENALLOWED,
MEMBERSALLOWED,
MEMBERSHIPLEVELNAME,
CANCELDATE,
COMMITMENTISPENDING,
MEMBERSHIPLEVELTERMNAME,
NUMBEROFCARDSALLOWED
from @RESULTSTABLE
return 0;