USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPPROGRAMDUESBASEDRULES_2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DUESTREATEDASCONTRIBUTION | bit | IN | |
@DUESONEPAYMENTEACHTERM | bit | IN | |
@DUESMULTIPLEPAYMENTSEACHTERM | bit | IN | |
@DESIGNATIONSFORCONTRIBUTEDPORTION | xml | IN | |
@MEMBERSHIPLEVELDESIGNATIONS | xml | IN | |
@PROGRAMTYPECODE | tinyint | IN | |
@DISCOUNTSFORPROGRAM | xml | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@DEDUCTIBILITYCODE | tinyint | IN | |
@DUESINSTALLMENTPOSTSTATUSCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPPROGRAMDUESBASEDRULES_2
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@DUESTREATEDASCONTRIBUTION bit,
@DUESONEPAYMENTEACHTERM bit,
@DUESMULTIPLEPAYMENTSEACHTERM bit,
@DESIGNATIONSFORCONTRIBUTEDPORTION xml,
@MEMBERSHIPLEVELDESIGNATIONS xml,
@PROGRAMTYPECODE tinyint,
@DISCOUNTSFORPROGRAM xml,
@BASECURRENCYID uniqueidentifier,
@DEDUCTIBILITYCODE tinyint,
@DUESINSTALLMENTPOSTSTATUSCODE tinyint
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime = getdate();
begin try
update dbo.MEMBERSHIPPROGRAM
set
DUESTREATEDASCONTRIBUTION = @DUESTREATEDASCONTRIBUTION,
ONEPAYMENTEACHTERM = @DUESONEPAYMENTEACHTERM,
MULTIPLEPAYMENTSEACHTERM = @DUESMULTIPLEPAYMENTSEACHTERM,
INSTALLMENTPOSTSTATUSCODE =
case
--Only change dues installment post code for annual memberships
when MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 0 and isnull(@DUESINSTALLMENTPOSTSTATUSCODE,0) <> 0 then @DUESINSTALLMENTPOSTSTATUSCODE
else INSTALLMENTPOSTSTATUSCODE
end
from dbo.MEMBERSHIPPROGRAM
where ID = @ID;
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if @CHANGEAGENTID is not null
set CONTEXT_INFO @CHANGEAGENTID;
--delete designations
delete from dbo.MEMBERSHIPPROGRAMDESIGNATION
where ID in
(
select ID
from dbo.MEMBERSHIPPROGRAMDESIGNATION
where
MEMBERSHIPPROGRAMDESIGNATION.MEMBERSHIPPROGRAMID = @ID and
MEMBERSHIPPROGRAMDESIGNATION.ID not in
(
select T.c.value('(ID)[1]','uniqueidentifier')
from @DESIGNATIONSFORCONTRIBUTEDPORTION.nodes('/DESIGNATIONSFORCONTRIBUTEDPORTION/ITEM') T(c)
where T.c.value('(ID)[1]','uniqueidentifier') is not null
)
);
if @contextCache is not null
set CONTEXT_INFO @contextCache;
-- If NOT tax deductible, don't resave designations
if @DEDUCTIBILITYCODE <> 2
begin
--Save designations
insert into dbo.MEMBERSHIPPROGRAMDESIGNATION
(
ID,
DESIGNATIONID,
MEMBERSHIPPROGRAMID,
[PERCENT],
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
T.c.value('(ID)[1]','uniqueidentifier'),
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'),
@ID,
T.c.value('(PERCENT)[1]','decimal(20,4)'),
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @DESIGNATIONSFORCONTRIBUTEDPORTION.nodes('/DESIGNATIONSFORCONTRIBUTEDPORTION/ITEM') T(c)
where T.c.value('(ID)[1]','uniqueidentifier') not in (select ID from MEMBERSHIPPROGRAMDESIGNATION where MEMBERSHIPPROGRAMID = @ID);
update dbo.MEMBERSHIPPROGRAMDESIGNATION
set
DESIGNATIONID = T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID,
[PERCENT] = T.c.value('(PERCENT)[1]','decimal(20,4)')
from @DESIGNATIONSFORCONTRIBUTEDPORTION.nodes('/DESIGNATIONSFORCONTRIBUTEDPORTION/ITEM') T(c)
where MEMBERSHIPPROGRAMDESIGNATION.ID = T.c.value('(ID)[1]','uniqueidentifier');
end
if @CHANGEAGENTID is not null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.MEMBERSHIPLEVELDESIGNATION
where ID in
(
select MEMBERSHIPLEVELDESIGNATION.ID
from dbo.MEMBERSHIPLEVELDESIGNATION
inner join MEMBERSHIPLEVEL on MEMBERSHIPLEVELDESIGNATION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where
MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @ID and
MEMBERSHIPLEVELDESIGNATION.ID not in
(
select T.c.value('(ID)[1]','uniqueidentifier')
from @MEMBERSHIPLEVELDESIGNATIONS.nodes('/MEMBERSHIPLEVELDESIGNATIONS/ITEM') T(c)
where T.c.value('(ID)[1]','uniqueidentifier') is not null
)
);
if @contextCache is not null
set CONTEXT_INFO @contextCache;
-- If NOT tax deductible, so don't resave designations
if @DEDUCTIBILITYCODE <> 2
begin
insert into dbo.MEMBERSHIPLEVELDESIGNATION
(
ID,
DESIGNATIONID,
MEMBERSHIPLEVELID,
[PERCENT],
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
newid(),
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'),
T.c.value('(LEVELID)[1]','uniqueidentifier'),
T.c.value('(PERCENT)[1]','decimal(20,4)'),
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @MEMBERSHIPLEVELDESIGNATIONS.nodes('/MEMBERSHIPLEVELDESIGNATIONS/ITEM') T(c)
where
T.c.value('(ID)[1]','uniqueidentifier') not in
(
select MEMBERSHIPLEVELDESIGNATION.ID
from MEMBERSHIPLEVELDESIGNATION
inner join MEMBERSHIPLEVEL on MEMBERSHIPLEVELDESIGNATION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @ID
);
update dbo.MEMBERSHIPLEVELDESIGNATION set
DESIGNATIONID = T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID,
[PERCENT] = T.c.value('(PERCENT)[1]','decimal(20,4)')
from @MEMBERSHIPLEVELDESIGNATIONS.nodes('/MEMBERSHIPLEVELDESIGNATIONS/ITEM') T(c)
where MEMBERSHIPLEVELDESIGNATION.ID = T.c.value('(ID)[1]','uniqueidentifier')
end
if @CHANGEAGENTID is not null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.MEMBERSHIPPROMOAVAILABILITY
where ID in
(
select ID
from dbo.MEMBERSHIPPROMOAVAILABILITY
where
MEMBERSHIPPROMOAVAILABILITY.MEMBERSHIPPROGRAMID = @ID and
MEMBERSHIPPROMOAVAILABILITY.ID not in
(
select T.c.value('(MEMBERSHIPPROMOAVAILABILITYID)[1]','uniqueidentifier')
from @DISCOUNTSFORPROGRAM.nodes('/DISCOUNTSFORPROGRAM/ITEM') T(c)
where
T.c.value('(APPLY)[1]','bit') = 1 and
T.c.value('(MEMBERSHIPPROMOAVAILABILITYID)[1]','uniqueidentifier') is not null
)
);
if @contextCache is not null
set CONTEXT_INFO @contextCache;
insert into dbo.MEMBERSHIPPROMOAVAILABILITY
(
ID,
MEMBERSHIPPROMOID,
MEMBERSHIPPROGRAMID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
T.c.value('(MEMBERSHIPPROMOAVAILABILITYID)[1]','uniqueidentifier'),
T.c.value('(ID)[1]','uniqueidentifier'),
@ID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from @DISCOUNTSFORPROGRAM.nodes('/DISCOUNTSFORPROGRAM/ITEM') T(c)
where
T.c.value('(APPLY)[1]','bit') = 1 and
T.c.value('(MEMBERSHIPPROMOAVAILABILITYID)[1]','uniqueidentifier') not in (select ID from MEMBERSHIPPROMOAVAILABILITY where MEMBERSHIPPROGRAMID = @ID);
update dbo.MEMBERSHIPPROMOAVAILABILITY
set
MEMBERSHIPPROMOID = T.c.value('(ID)[1]','uniqueidentifier'),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from @DISCOUNTSFORPROGRAM.nodes('/DISCOUNTSFORPROGRAM/ITEM') T(c)
where
T.c.value('(APPLY)[1]','bit') = 1 and
MEMBERSHIPPROMOAVAILABILITY.ID = T.c.value('(MEMBERSHIPPROMOAVAILABILITYID)[1]','uniqueidentifier') and
MEMBERSHIPPROMOAVAILABILITY.MEMBERSHIPPROGRAMID = @ID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;