USP_REPORT_PRINTMEMBERSHIPCARDSNOPICTURETWOPERPAGE_OUTPUT
Returns membership card data that can be used by 2 cards per page membership card report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REPORT_PRINTMEMBERSHIPCARDSNOPICTURETWOPERPAGE_OUTPUT
(
@ID uniqueidentifier
)
as
set nocount on;
declare @MEMBERSHIPCARDSTOBEPRINTED table (
MEMBERSHIPID uniqueidentifier,
MEMBERSHIPCARDID uniqueidentifier,
MEMBERSHIPPROGRAMNAME nvarchar(100),
MEMBERSHIPLEVELNAME nvarchar(100),
ORIGINALCARDNUMBER nvarchar(100),
CARDNUMBER nvarchar(100),
MEMBERSHIPLOOKUPID nvarchar(100),
NAMEONCARD nvarchar(700),
MEMBERSINCE int,
EXPIRATIONDATE datetime,
MEMBERSHIPCARDID2 uniqueidentifier,
MEMBERSHIPPROGRAMNAME2 nvarchar(100),
MEMBERSHIPLEVELNAME2 nvarchar(100),
ORIGINALCARDNUMBER2 nvarchar(100),
CARDNUMBER2 nvarchar(100),
MEMBERSHIPLOOKUPID2 nvarchar(100),
NAMEONCARD2 nvarchar(700),
MEMBERSINCE2 int,
EXPIRATIONDATE2 datetime
)
-- Table holds membership cards to be printed
insert into @MEMBERSHIPCARDSTOBEPRINTED (
MEMBERSHIPID,
MEMBERSHIPCARDID,
MEMBERSHIPPROGRAMNAME,
MEMBERSHIPLEVELNAME,
ORIGINALCARDNUMBER,
CARDNUMBER,
MEMBERSHIPLOOKUPID,
NAMEONCARD,
MEMBERSINCE,
EXPIRATIONDATE
)
-- Select membership cards, if membership has multiple members,
-- select the membership card with the smallest card number
select
MEMBERSHIP.ID, -- MEMBERSHIPID
MEMBERSHIPCARD.ID, -- MEMBERSHIPCARDID
dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID), -- MEMBERSHIPPROGRAMNAME
dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID), -- MEMBERSHIPLEVELNAME
MEMBERSHIPCARD.CARDNUMBER, -- ORIGINALCARDNUMBER
'*' + MEMBERSHIPCARD.CARDNUMBER + '*', -- CARDNUMBER
MEMBERSHIP.LOOKUPID, -- MEMBERSHIPLOOKUPID
MEMBERSHIPCARD.NAMEONCARD, -- NAMEONCARD
(select datepart(year, min(MEMBERSHIPTRANSACTION.TRANSACTIONDATE))
from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = MEMBERSHIP.ID and MEMBERSHIPTRANSACTION.ACTIONCODE = 0
), -- MEMBERSINCE
MEMBERSHIPCARD.EXPIRATIONDATE -- EXPIRATIONDATE
from dbo.MEMBERSHIPCARD
inner join dbo.MEMBER
on MEMBERSHIPCARD.MEMBERID = MEMBER.ID
inner join dbo.MEMBERSHIP
on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
where MEMBERSHIPCARD.PRINTMEMBERSHIPCARDSPROCESSSTATUSID = @ID
and MEMBERSHIP.ID in (
select MS.ID
from dbo.MEMBERSHIP MS
inner join dbo.MEMBER M
on MS.ID = M.MEMBERSHIPID
inner join dbo.MEMBERSHIPCARD MSC
on M.ID = MSC.MEMBERID
group by MS.ID
having MEMBERSHIPCARD.CARDNUMBER = min(MSC.CARDNUMBER)
)
-- Update the fields of the second card
update @MEMBERSHIPCARDSTOBEPRINTED
set
MEMBERSHIPCARDID2 = MEMBERSHIPCARD.ID,
MEMBERSHIPPROGRAMNAME2 = dbo.UFN_MEMBERSHIPPROGRAM_GETNAME(MEMBERSHIP.MEMBERSHIPPROGRAMID),
MEMBERSHIPLEVELNAME2 = dbo.UFN_MEMBERSHIPLEVEL_GETNAME(MEMBERSHIP.MEMBERSHIPLEVELID),
ORIGINALCARDNUMBER2 = MEMBERSHIPCARD.CARDNUMBER,
CARDNUMBER2 = '*' + MEMBERSHIPCARD.CARDNUMBER + '*',
MEMBERSHIPLOOKUPID2 = MEMBERSHIP.LOOKUPID,
NAMEONCARD2 = MEMBERSHIPCARD.NAMEONCARD,
MEMBERSINCE2 = (select datepart(year, min(MEMBERSHIPTRANSACTION.TRANSACTIONDATE))
from dbo.MEMBERSHIPTRANSACTION
where MEMBERSHIPTRANSACTION.MEMBERSHIPID = MEMBERSHIP.ID and MEMBERSHIPTRANSACTION.ACTIONCODE = 0
),
EXPIRATIONDATE2 = MEMBERSHIPCARD.EXPIRATIONDATE
from dbo.MEMBERSHIPCARD
inner join dbo.MEMBER
on MEMBERSHIPCARD.MEMBERID = MEMBER.ID
inner join dbo.MEMBERSHIP
on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
inner join @MEMBERSHIPCARDSTOBEPRINTED MSCPRINTED
on MSCPRINTED.MEMBERSHIPID = MEMBERSHIP.ID
where MEMBERSHIPCARD.PRINTMEMBERSHIPCARDSPROCESSSTATUSID = @ID
and MEMBERSHIP.ID in (
select MS.ID
from dbo.MEMBERSHIP MS
inner join dbo.MEMBER M
on MS.ID = M.MEMBERSHIPID
inner join dbo.MEMBERSHIPCARD MSC
on M.ID = MSC.MEMBERID
where MSC.CARDNUMBER not in (select ORIGINALCARDNUMBER from @MEMBERSHIPCARDSTOBEPRINTED)
group by MS.ID
having MEMBERSHIPCARD.CARDNUMBER = min(MSC.CARDNUMBER)
)
select * from @MEMBERSHIPCARDSTOBEPRINTED
return 0;