USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMEMBERSHIP_PRELOAD
The load procedure used by the edit dataform template "Sales Order Item Membership Add Data Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SALESORDERID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@ORDERCONSTITUENTID | uniqueidentifier | INOUT | |
@ORDERCONSTITUENTNAME | nvarchar(154) | INOUT | |
@MEMBERSHIPS | xml | INOUT | |
@TRANSACTIONDATE | datetime | INOUT | Transaction date |
@INITIALMEMBERSHIPID | uniqueidentifier | INOUT | |
@GIFTMEMBERSHIPRECIPIENTID | uniqueidentifier | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SALESORDERITEMMEMBERSHIP_PRELOAD
(
@SALESORDERID uniqueidentifier,
@ORDERCONSTITUENTID uniqueidentifier = null output,
@ORDERCONSTITUENTNAME nvarchar(154) = null output,
@MEMBERSHIPS xml = null output,
@TRANSACTIONDATE datetime = null output,
@INITIALMEMBERSHIPID uniqueidentifier = null output,
@GIFTMEMBERSHIPRECIPIENTID uniqueidentifier = null output
)
as
set nocount on;
declare @MEMBERSHIPPROGRAMID uniqueidentifier;
set @TRANSACTIONDATE = getdate();
if @ORDERCONSTITUENTID is null
select
@ORDERCONSTITUENTID = CONSTITUENT.ID,
@ORDERCONSTITUENTNAME = CONSTITUENT.NAME
from
dbo.SALESORDER
inner join
dbo.CONSTITUENT on SALESORDER.CONSTITUENTID = CONSTITUENT.ID
where
SALESORDER.ID = @SALESORDERID;
else
select @ORDERCONSTITUENTNAME = CONSTITUENT.NAME
from dbo.CONSTITUENT
where CONSTITUENT.ID = @ORDERCONSTITUENTID;
if (select count(ID) from dbo.MEMBERSHIPPROGRAM) = 1
select @MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAMID from dbo.MEMBERSHIP;
set @MEMBERSHIPS = (
select
@ORDERCONSTITUENTID [ORDERCONSTITUENTID],
*,
case MEMBERSHIP.ID
when '00000000-0000-0000-0000-000000000000' then
case
when @ORDERCONSTITUENTID is not null then
(
select
newid() [ID],
null [MEMBERID],
@ORDERCONSTITUENTID [CONSTITUENTID],
1 [ISPRIMARY],
(
select
newid() [ID],
null [MEMBERSHIPCARDID],
@ORDERCONSTITUENTNAME [NAMEONCARD],
null [EXPIRATIONDATE]
for xml raw('ITEM'),type,elements,root('MEMBERSHIPCARDS'),binary base64
),
0 [ISCAREGIVER]
for xml raw('ITEM'),type,elements,root('MEMBERS'),binary base64
)
else
null
end
else
(
select
newid() [ID],
MEMBER.ID [MEMBERID],
MEMBER.CONSTITUENTID,
MEMBER.ISPRIMARY,
case when exists(select * from dbo.MEMBERSHIPCARD
where MEMBER.ID = MEMBERSHIPCARD.MEMBERID
and MEMBERSHIPCARD.STATUSCODE <> 2)
then
(
select
newid() [ID],
MEMBERSHIPCARD.ID [MEMBERSHIPCARDID],
MEMBERSHIPCARD.NAMEONCARD [NAMEONCARD],
MEMBERSHIPCARD.EXPIRATIONDATE [EXPIRATIONDATE]
from
dbo.MEMBERSHIPCARD
where
MEMBER.ID = MEMBERSHIPCARD.MEMBERID
and MEMBERSHIPCARD.STATUSCODE <> 2
for xml raw('ITEM'),type,elements,root('MEMBERSHIPCARDS'),binary base64
)
else
(
select
newid() [ID],
null [MEMBERSHIPCARDID],
case
when MEMBER.CONSTITUENTID = @ORDERCONSTITUENTID then @ORDERCONSTITUENTNAME
else (select top 1 name from dbo.UFN_CONSTITUENT_DISPLAYNAME(MEMBER.CONSTITUENTID))
end as [NAMEONCARD],
null [EXPIRATIONDATE]
for xml raw('ITEM'),type,elements,root('MEMBERSHIPCARDS'),binary base64
)
end,
MEMBER.ISCAREGIVER
from
dbo.MEMBER
where
MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
and MEMBER.ISDROPPED = 0
for xml raw('ITEM'),type,elements,root('MEMBERS'),binary base64
)
end,
(
select
MEMBERSHIPLEVEL.ID,
dbo.UFN_MEMBERSHIPTRANSACTION_DETERMINEACTIONCODE(MEMBERSHIP.ID, MEMBERSHIPLEVEL.ID, @TRANSACTIONDATE) [ACTIONCODE]
from
dbo.MEMBERSHIPLEVEL
where
MEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
for xml raw('ITEM'),type,elements,root('MEMBERSHIPLEVELS'),binary base64
)
from (
select
MEMBERSHIP.ID,
dbo.UFN_MEMBERSHIP_GETDESCRIPTION(MEMBERSHIP.ID) [DESCRIPTION],
MEMBERSHIP.MEMBERSHIPPROGRAMID,
MEMBERSHIP.MEMBERSHIPLEVELID,
MEMBERSHIP.MEMBERSHIPLEVELTERMID,
MEMBERSHIP.MEMBERSHIPLEVELTYPECODEID,
MEMBERSHIP.EXPIRATIONDATE,
MEMBERSHIP.NUMBEROFCHILDREN,
MEMBERSHIP.COMMENTS,
0 [ISGIFT],
MEMBERSHIP.SENDRENEWALCODE,
null [GIVENBYID],
MEMBERSHIP.STATUSCODE,
MEMBERSHIP.NUMBEROFADDONADULTS,
MEMBERSHIP.NUMBEROFADDONGUESTS
from
dbo.MEMBERSHIP
inner join
dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID
where
MEMBER.CONSTITUENTID = @ORDERCONSTITUENTID
and MEMBER.ISDROPPED = 0
union all
select
MEMBERSHIP.ID,
dbo.UFN_CONSTITUENT_BUILDNAME(MEMBER.CONSTITUENTID) + ': ' + dbo.UFN_MEMBERSHIP_GETDESCRIPTION(MEMBERSHIP.ID) [DESCRIPTION],
MEMBERSHIP.MEMBERSHIPPROGRAMID,
MEMBERSHIP.MEMBERSHIPLEVELID,
MEMBERSHIP.MEMBERSHIPLEVELTERMID,
MEMBERSHIP.MEMBERSHIPLEVELTYPECODEID,
MEMBERSHIP.EXPIRATIONDATE,
MEMBERSHIP.NUMBEROFCHILDREN,
MEMBERSHIP.COMMENTS,
case
when @ORDERCONSTITUENTID is null then
0
else
1
end [ISGIFT],
MEMBERSHIP.SENDRENEWALCODE,
@ORDERCONSTITUENTID [GIVENBY],
MEMBERSHIP.STATUSCODE,
MEMBERSHIP.NUMBEROFADDONADULTS,
MEMBERSHIP.NUMBEROFADDONGUESTS
from
dbo.MEMBERSHIP
inner join
dbo.MEMBER on MEMBERSHIP.ID = MEMBER.MEMBERSHIPID and MEMBER.ISPRIMARY = 1
where
MEMBERSHIP.GIVENBYID = @ORDERCONSTITUENTID
and @ORDERCONSTITUENTID not in (select CONSTITUENTID from dbo.MEMBER where MEMBERSHIPID = MEMBERSHIP.ID)
union all
select
'00000000-0000-0000-0000-000000000000' [ID],
'<New membership>' [DESCRIPTION],
@MEMBERSHIPPROGRAMID [MEMBERSHIPPORGRAMID],
null [MEMBERSHIPLEVELID],
null [MEMBERSHIPLEVELTERMID],
null [MEMBERSHIPLEVELTYPECODEID],
null [EXPIRATIONDATE],
0 [NUMBEROFCHILDREN],
'' [COMMENTS],
0 [ISGIFT],
1 [SENDRENEWALCODE],
null [GIVENBYID],
0 [STATUSCODE],
0 [NUMBEROFADDONADULTS],
0 [NUMBEROFADDONGUESTS]
) [MEMBERSHIP]
for xml raw('ITEM'),type,elements,root('MEMBERSHIPS'),binary base64
);
select top 1
@INITIALMEMBERSHIPID = MEMBERSHIPID
from
dbo.MEMBER
where
CONSTITUENTID = @ORDERCONSTITUENTID
and ISDROPPED = 0;
if @INITIALMEMBERSHIPID is null
set @INITIALMEMBERSHIPID = '00000000-0000-0000-0000-000000000000';
return 0;