USP_GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IDSETREGISTERID | uniqueidentifier | IN | |
@RECORDTYPECODE | tinyint | IN | |
@CHOSENITEMS | xml | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION
(
@IDSETREGISTERID uniqueidentifier = null,
@RECORDTYPECODE tinyint = 0,
@CHOSENITEMS xml = null output,
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output
)
as
/*
@RECORDTYPECODE
1 Designation. Maps to dbo.DESIGNATION
2 Purpose. Maps to dbo.DESIGNATIONLEVEL
@CHOSENITEMS
ID
0 (Purpose) Designation Level Category Code
1 (Purpose) SITE
2 (Purpose) Report 1 Code
3 (Purpose) Report 2 Code
4 (Designation) Report 1 Code
5 (Designation) Report 2 Code
6 (Designation) Is Revenue Designation
7 (Designation) Designation Use Code
8 (Designation) VSE Category
9 (Designation) VSE Subcategory
SELECTEDACTION
0 Set new value (used on bit fields)
1 Set value if no value exists
2 Set value if no value exists, or overwrite existing values
3 Set to null
*/
set nocount off
begin try
declare @ACTION table (
ID int,
SELECTEDACTION int,
NEWVALUE uniqueidentifier
);
declare @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION as table (ID uniqueidentifier primary key);
declare @UPDATED as table (ID uniqueidentifier);
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
insert into @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION(ID)
select distinct ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID)
where @IDSETREGISTERID is not null
union all
select ID from dbo.DESIGNATION
where @IDSETREGISTERID is null and @RECORDTYPECODE = 1
union all
select ID from dbo.DESIGNATIONLEVEL
where @IDSETREGISTERID is null and @RECORDTYPECODE = 2;
insert into @ACTION (ID,SELECTEDACTION,NEWVALUE)
select ID,SELECTEDACTION,NEWVALUE
from dbo.UFN_MANAGEPURPOSEDESIGNATIONINFORMATION_GETCHOSENITEMS_FROMITEMLISTXML(@CHOSENITEMS);
if (@RECORDTYPECODE = 1)
begin
update dbo.DESIGNATION
set DESIGNATION.DESIGNATIONREPORT1CODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 4
cross apply
(
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONREPORT1CODEID is null
union all
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONREPORT1CODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATION.DESIGNATIONREPORT1CODEID)
union all
select ID as DESIGNATIONID, null as NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONREPORT1CODEID is not null
) as NEWVALUE
where (DESIGNATION.ID = NEWVALUE.DESIGNATIONID)
and (exists (select ID from dbo.DESIGNATIONREPORT1CODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATION
set DESIGNATIONREPORT2CODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 5
cross apply
(
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONREPORT2CODEID is null
union all
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONREPORT2CODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATION.DESIGNATIONREPORT2CODEID)
union all
select ID as DESIGNATIONID, null as NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONREPORT2CODEID is not null
) as NEWVALUE
where (DESIGNATION.ID = NEWVALUE.DESIGNATIONID)
and (exists (select ID from dbo.DESIGNATIONREPORT2CODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATION
set ISREVENUEDESIGNATION = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 6
cross apply
(
select ID as DESIGNATIONID, case when ACTIONITEM.NEWVALUE = '00000000-0000-0000-0000-000000000001' then cast(1 as bit) else cast(0 as bit) end as NEWVALUE
from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 0
) as NEWVALUE
where DESIGNATION.ID = NEWVALUE.DESIGNATIONID
and DESIGNATION.ISREVENUEDESIGNATION <> NEWVALUE.NEWVALUE;
update dbo.DESIGNATION
set DESIGNATIONUSECODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 7
cross apply
(
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONUSECODEID is null
union all
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONUSECODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATION.DESIGNATIONUSECODEID)
union all
select ID as DESIGNATIONID, null as NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONUSECODEID is not null
) as NEWVALUE
where (DESIGNATION.ID = NEWVALUE.DESIGNATIONID)
and (exists (select ID from dbo.DESIGNATIONUSECODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATION
set VSECATEGORYID = NEWVALUE.NEWVALUE
,VSESUBCATEGORYID =
case
when (VSESUBCATEGORYID is not null and (ACTIONITEM.SELECTEDACTION = 3 or VSECATEGORYID <> NEWVALUE.NEWVALUE)) then null
else VSESUBCATEGORYID
end
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 8
cross apply
(
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 1
and VSECATEGORYID is null
union all
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 2
and (VSECATEGORYID is null
or ACTIONITEM.NEWVALUE <> dbo.DESIGNATION.VSECATEGORYID)
union all
select ID as DESIGNATIONID, null as NEWVALUE from DESIGNATION
where ACTIONITEM.SELECTEDACTION = 3
and VSECATEGORYID is not null
) as NEWVALUE
where DESIGNATION.ID = NEWVALUE.DESIGNATIONID
and (exists (select ID from dbo.VSECATEGORY where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATION
set VSESUBCATEGORYID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATION
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATION.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 9
cross apply
(
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 1
and VSESUBCATEGORYID is null
union all
select ID as DESIGNATIONID, ACTIONITEM.NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 2
and (VSESUBCATEGORYID is null
or ACTIONITEM.NEWVALUE <> DESIGNATION.VSESUBCATEGORYID)
union all
select ID as DESIGNATIONID, null as NEWVALUE from dbo.DESIGNATION
where ACTIONITEM.SELECTEDACTION = 3
and VSESUBCATEGORYID is not null
) as NEWVALUE
where DESIGNATION.ID = NEWVALUE.DESIGNATIONID
and (exists (select ID from dbo.VSESUBCATEGORY where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
end
else
begin
update DESIGNATIONLEVEL
set DESIGNATIONLEVELCATEGORYCODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATIONLEVEL
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATIONLEVEL.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 0
cross apply
(
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONLEVELCATEGORYCODEID is null
union all
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONLEVELCATEGORYCODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATIONLEVEL.DESIGNATIONLEVELCATEGORYCODEID)
union all
select ID as DESIGNATIONLEVELID, null as NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONLEVELCATEGORYCODEID is not null
) as NEWVALUE
where (DESIGNATIONLEVEL.ID = NEWVALUE.DESIGNATIONLEVELID)
and (exists (select ID from dbo.DESIGNATIONLEVELCATEGORYCODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATIONLEVEL
set SITEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATIONLEVEL
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATIONLEVEL.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 1
cross apply
(
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 1
and SITEID is null
union all
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 2
and (SITEID is null
or ACTIONITEM.NEWVALUE <> dbo.DESIGNATIONLEVEL.SITEID)
union all
select ID as DESIGNATIONLEVELID, null as NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 3
and SITEID is not null
) as NEWVALUE
where DESIGNATIONLEVEL.ID = NEWVALUE.DESIGNATIONLEVELID
and (exists (select ID from dbo.SITE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATIONLEVEL
set DESIGNATIONREPORT1CODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATIONLEVEL
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATIONLEVEL.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 2
cross apply
(
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONREPORT1CODEID is null
union all
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONREPORT1CODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATIONLEVEL.DESIGNATIONREPORT1CODEID)
union all
select ID as DESIGNATIONLEVELID, null as NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONREPORT1CODEID is not null
) as NEWVALUE
where (DESIGNATIONLEVEL.ID = NEWVALUE.DESIGNATIONLEVELID)
and (exists (select ID from dbo.DESIGNATIONREPORT1CODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
update dbo.DESIGNATIONLEVEL
set DESIGNATIONREPORT2CODEID = NEWVALUE.NEWVALUE
,CHANGEDBYID = @CHANGEAGENTID
,DATECHANGED = @CURRENTDATE
output
inserted.ID
into
@UPDATED(ID)
from dbo.DESIGNATIONLEVEL
inner join @GLOBALCHANGE_MANAGEPURPOSEDESIGNATIONINFORMATION MANAGEPURPOSEDESIGNATION on DESIGNATIONLEVEL.ID = MANAGEPURPOSEDESIGNATION.ID
inner join @ACTION as ACTIONITEM on ACTIONITEM.ID = 3
cross apply
(
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 1
and DESIGNATIONREPORT2CODEID is null
union all
select ID as DESIGNATIONLEVELID, ACTIONITEM.NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 2
and (DESIGNATIONREPORT2CODEID is null
or ACTIONITEM.NEWVALUE <> DESIGNATIONLEVEL.DESIGNATIONREPORT2CODEID)
union all
select ID as DESIGNATIONLEVELID, null as NEWVALUE from dbo.DESIGNATIONLEVEL
where ACTIONITEM.SELECTEDACTION = 3
and DESIGNATIONREPORT2CODEID is not null
) as NEWVALUE
where (DESIGNATIONLEVEL.ID = NEWVALUE.DESIGNATIONLEVELID)
and (exists (select ID from dbo.DESIGNATIONREPORT2CODE where ID = NEWVALUE.NEWVALUE) or (ACTIONITEM.SELECTEDACTION = 3));
end
set @NUMBEREDITED = (select count(distinct ID) from @UPDATED);
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch