USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPPROGRAMBENEFIT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CARDFORMAT | nvarchar(255) | IN | |
@NAMEFORMAT | uniqueidentifier | IN | |
@LEVELS | xml | IN | |
@BENEFITS | xml | IN | |
@DEDUCTIBILITYCODE | tinyint | IN | |
@PROGRAMBASEDONCODE | tinyint | IN | |
@PROGRAMTYPECODE | tinyint | IN | |
@TERMCOUNT | int | IN | |
@REPORTCATALOGID | uniqueidentifier | IN | |
@LETTERTEMPLATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MEMBERSHIPPROGRAMBENEFIT (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CARDFORMAT nvarchar(255),
@NAMEFORMAT uniqueidentifier,
@LEVELS xml,
@BENEFITS xml,
@DEDUCTIBILITYCODE tinyint,
@PROGRAMBASEDONCODE tinyint,
@PROGRAMTYPECODE tinyint,
@TERMCOUNT integer,
@REPORTCATALOGID uniqueidentifier,
@LETTERTEMPLATEID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @CARDFORMATTEXT nvarchar(255)
set @CARDFORMATTEXT = (select NAME from dbo.REPORTCATALOG where ID=@REPORTCATALOGID)
begin try
-- handle updating the data
-- If not tax deductible, delete all associated contribution designations
if @DEDUCTIBILITYCODE = 2
begin
update dbo.MEMBERSHIPPROGRAM
set
DUESTREATEDASCONTRIBUTION = 0
where
ID = @ID
delete from
dbo.MEMBERSHIPPROGRAMDESIGNATION
where
MEMBERSHIPPROGRAMID = @ID
delete from dbo.MEMBERSHIPLEVELDESIGNATION
from dbo.MEMBERSHIPLEVELDESIGNATION
inner join MEMBERSHIPLEVEL on MEMBERSHIPLEVELDESIGNATION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
where
MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = @ID
end
update dbo.MEMBERSHIPPROGRAM set
DEDUCTIBILITYCODE = @DEDUCTIBILITYCODE,
CARDFORMAT = ISNULL(@CARDFORMATTEXT, ''),
NAMEFORMATID = @NAMEFORMAT,
REPORTCATALOGID = @REPORTCATALOGID,
LETTERTEMPLATEID = @LETTERTEMPLATEID
where
ID = @ID
update dbo.MEMBERSHIPLEVEL set
RECEIPTAMOUNT = T.c.value('(PRICE)[1]','money')
from
@LEVELS.nodes('/LEVELS/ITEM') T(c)
where
MEMBERSHIPLEVEL.ID = T.c.value('(ID)[1]','uniqueidentifier')
delete from
dbo.MEMBERSHIPLEVELBENEFIT
where
ID in (
select
MLB.ID
from
dbo.MEMBERSHIPLEVELBENEFIT MLB
inner join dbo.MEMBERSHIPLEVEL ML on MLB.MEMBERSHIPLEVELID = ML.ID
where
ML.MEMBERSHIPPROGRAMID = @ID
and MLB.ID not in (
select
T.c.value('(ID)[1]','uniqueidentifier')
from
@BENEFITS.nodes('/BENEFITS/ITEM') T(c)
where
T.c.value('(ID)[1]','uniqueidentifier') is not null
)
)
--Save benefits
insert into dbo.MEMBERSHIPLEVELBENEFIT
(
ID, MEMBERSHIPLEVELID, BENEFITID,
QUANTITY, UNITVALUE, DETAILS,
ADDEDBYID, CHANGEDBYID, DATEADDED,
DATECHANGED, USEPERCENT, VALUEPERCENT,
BASECURRENCYID, FREQUENCYCODE, NUMBERTOOFFERCODE
)
select
newid(), T.c.value('(MEMBERSHIPLEVELID)[1]','uniqueidentifier'), T.c.value('(BENEFITID)[1]','uniqueidentifier'),
T.c.value('(QUANTITY)[1]','int'), T.c.value('(UNITVALUE)[1]','money'), T.c.value('(DETAILS)[1]','nvarchar(255)'),
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE,
@CURRENTDATE, T.c.value('(USEPERCENT)[1]','bit'), T.c.value('(VALUEPERCENT)[1]','decimal'),
BENEFIT.BASECURRENCYID, T.c.value('(FREQUENCY)[1]','tinyint'), T.c.value('(NUMBERTOOFFER)[1]','tinyint')
from
@BENEFITS.nodes('/BENEFITS/ITEM') T(c)
inner join dbo.BENEFIT on BENEFIT.ID = T.c.value('(BENEFITID)[1]','uniqueidentifier')
where
T.c.value('(ID)[1]','uniqueidentifier') is null
update dbo.MEMBERSHIPLEVELBENEFIT
set
BENEFITID = T.c.value('(BENEFITID)[1]','uniqueidentifier'),
QUANTITY = T.c.value('(QUANTITY)[1]','int'),
UNITVALUE = T.c.value('(UNITVALUE)[1]','money'),
DETAILS = T.c.value('(DETAILS)[1]','nvarchar(255)'),
DATECHANGED = @CURRENTDATE,
USEPERCENT = T.c.value('(USEPERCENT)[1]','bit'),
VALUEPERCENT = T.c.value('(VALUEPERCENT)[1]','decimal'),
BASECURRENCYID = BENEFIT.BASECURRENCYID,
FREQUENCYCODE = T.c.value('(FREQUENCY)[1]','tinyint'),
NUMBERTOOFFERCODE = T.c.value('(NUMBERTOOFFER)[1]','tinyint')
from
@BENEFITS.nodes('/BENEFITS/ITEM') T(c)
inner join dbo.BENEFIT on BENEFIT.ID = T.c.value('(BENEFITID)[1]','uniqueidentifier')
where
MEMBERSHIPLEVELBENEFIT.ID = T.c.value('(ID)[1]','uniqueidentifier')
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;