USP_HOUSEHOLDRECOGNITIONS_MEMBERSPECIFIEDMEMBERSUPDATE
Update the specified member to member recognition defaults.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GROUPID | uniqueidentifier | IN | |
@MEMBERSPECIFIEDMEMBERS | xml | IN | |
@CHANGEDATE | datetime | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_HOUSEHOLDRECOGNITIONS_MEMBERSPECIFIEDMEMBERSUPDATE
(
@GROUPID uniqueidentifier,
@MEMBERSPECIFIEDMEMBERS xml,
@CHANGEDATE datetime,
@CHANGEAGENTID uniqueidentifier
)
as
set nocount on
-- This stored procedure is used rather than the one that can be generated off a function
-- since the parent ID (GROUPID) doesn't belong to the source table (REVENUERECOGNITIONDEFAULT).
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @TempTbl table (
[ID] uniqueidentifier,
[MATCHFACTOR] decimal(5, 2),
[RECIPIENTCONSTITUENTID] uniqueidentifier,
[SOURCECONSTITUENTID] uniqueidentifier,
[REVENUERECOGNITIONTYPECODEID] uniqueidentifier)
insert into @TempTbl select
[ID],
[MATCHFACTOR],
[RECIPIENTCONSTITUENTID],
[SOURCECONSTITUENTID],
[REVENUERECOGNITIONTYPECODEID]
from dbo.UFN_HOUSEHOLDRECOGNITIONS_GETMEMBERSPECIFIEDMEMBERS_FROMITEMLISTXML(@MEMBERSPECIFIEDMEMBERS)
update @TempTbl set ID = newid() where (ID is null) or (ID = '00000000-0000-0000-0000-000000000000')
-- delete any items that no longer exist in the XML table
delete from dbo.REVENUERECOGNITIONDEFAULT where REVENUERECOGNITIONDEFAULT.ID in
(select ID from dbo.UFN_HOUSEHOLDRECOGNITIONS_GETMEMBERSPECIFIEDMEMBERS(@GROUPID)
EXCEPT select ID from @TempTbl)
-- update the items that exist in the XML table and the db
update REVENUERECOGNITIONDEFAULT
set
REVENUERECOGNITIONDEFAULT.[ID]=temp.[ID],
REVENUERECOGNITIONDEFAULT.[MATCHFACTOR]=temp.[MATCHFACTOR],
REVENUERECOGNITIONDEFAULT.[RECIPIENTCONSTITUENTID]=temp.[RECIPIENTCONSTITUENTID],
REVENUERECOGNITIONDEFAULT.[SOURCECONSTITUENTID]=temp.[SOURCECONSTITUENTID],
REVENUERECOGNITIONDEFAULT.CHANGEDBYID = @CHANGEAGENTID,
REVENUERECOGNITIONDEFAULT.DATECHANGED = @CHANGEDATE
from dbo.REVENUERECOGNITIONDEFAULT inner join @TempTbl as [temp] on REVENUERECOGNITIONDEFAULT.ID = [temp].ID
where
(REVENUERECOGNITIONDEFAULT.[ID]<>temp.[ID]) or
(REVENUERECOGNITIONDEFAULT.[ID] is null and temp.[ID] is not null) or
(REVENUERECOGNITIONDEFAULT.[ID] is not null and temp.[ID] is null) or
(REVENUERECOGNITIONDEFAULT.[MATCHFACTOR]<>temp.[MATCHFACTOR]) or
(REVENUERECOGNITIONDEFAULT.[MATCHFACTOR] is null and temp.[MATCHFACTOR] is not null) or
(REVENUERECOGNITIONDEFAULT.[MATCHFACTOR] is not null and temp.[MATCHFACTOR] is null) or
(REVENUERECOGNITIONDEFAULT.[REVENUERECOGNITIONTYPECODEID]<>temp.[REVENUERECOGNITIONTYPECODEID]) or
(REVENUERECOGNITIONDEFAULT.[REVENUERECOGNITIONTYPECODEID] is null and temp.[REVENUERECOGNITIONTYPECODEID] is not null) or
(REVENUERECOGNITIONDEFAULT.[REVENUERECOGNITIONTYPECODEID] is not null and temp.[REVENUERECOGNITIONTYPECODEID] is null) or
(REVENUERECOGNITIONDEFAULT.[RECIPIENTCONSTITUENTID]<>temp.[RECIPIENTCONSTITUENTID]) or
(REVENUERECOGNITIONDEFAULT.[RECIPIENTCONSTITUENTID] is null and temp.[RECIPIENTCONSTITUENTID] is not null) or
(REVENUERECOGNITIONDEFAULT.[RECIPIENTCONSTITUENTID] is not null and temp.[RECIPIENTCONSTITUENTID] is null) or
(REVENUERECOGNITIONDEFAULT.[SOURCECONSTITUENTID]<>temp.[SOURCECONSTITUENTID]) or
(REVENUERECOGNITIONDEFAULT.[SOURCECONSTITUENTID] is null and temp.[SOURCECONSTITUENTID] is not null) or
(REVENUERECOGNITIONDEFAULT.[SOURCECONSTITUENTID] is not null and temp.[SOURCECONSTITUENTID] is null)
-- insert new items
insert into REVENUERECOGNITIONDEFAULT
(
[ID],
[MATCHFACTOR],
[REVENUERECOGNITIONTYPECODEID],
[RECIPIENTCONSTITUENTID],
[SOURCECONSTITUENTID],
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select
[ID],
[MATCHFACTOR],
[REVENUERECOGNITIONTYPECODEID],
[RECIPIENTCONSTITUENTID],
[SOURCECONSTITUENTID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
from @TempTbl as [temp]
where not exists (select ID from dbo.REVENUERECOGNITIONDEFAULT as data where data.ID = [temp].ID)