USP_CONSTITUENTUPDATEBATCH_ADJUSTCONSTITUENCYDATERANGE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHCONSTITUENTUPDATEID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@CONSTITUENCIES | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure USP_CONSTITUENTUPDATEBATCH_ADJUSTCONSTITUENCYDATERANGE
(
@BATCHCONSTITUENTUPDATEID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@CONSTITUENCIES xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime = getdate();
--Defaulting DATETO for constituencies
declare @INPUTDATETO table
(
ID uniqueidentifier,
CONSTITUENCYCODEID uniqueidentifier,
STARTDATE date,
ISSYSTEM bit
);
-- Populate temp table with selected data
insert into @INPUTDATETO
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
T.c.value('(CONSTITUENCYCODEID)[1]','uniqueidentifier') AS 'CONSTITUENCYCODEID',
T.c.value('(DATEFROM)[1]','date') AS 'DATEFROM',
T.c.value('(ISSYSTEM)[1]','bit') AS 'ISSYSTEM'
from @CONSTITUENCIES.nodes('/CONSTITUENCIES/ITEM') T(c)
order by T.c.value('(DATEFROM)[1]','date');
--Defaulting DATETO for constituencies
declare @INPUTDATEFROM table
(
ID uniqueidentifier,
CONSTITUENCYCODEID uniqueidentifier,
ENDDATE date,
ISSYSTEM bit
);
-- Populate temp table with selected data
insert into @INPUTDATEFROM
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
T.c.value('(CONSTITUENCYCODEID)[1]','uniqueidentifier') AS 'CONSTITUENCYCODEID',
T.c.value('(DATETO)[1]','date') AS 'DATETO',
T.c.value('(ISSYSTEM)[1]','bit') AS 'ISSYSTEM'
from @CONSTITUENCIES.nodes('/CONSTITUENCIES/ITEM') T(c)
order by T.c.value('(DATETO)[1]','date');
begin try
--Defaulting user defined DATETO
with UPDATEROWS_USERDEFINDED_DATETO as
(
select
ROW_NUMBER() over (partition by BATCHCONSTITUENTUPDATE.PRIMARYRECORDID, BATCHCONSTITUENTUPDATECONSTITUENCIES.CONSTITUENCYCODEID order by BATCHCONSTITUENTUPDATECONSTITUENCIES.DATEFROM desc) as ROWNUMBER,
BATCHCONSTITUENTUPDATECONSTITUENCIES.ID as BATCHCONSTITUENTUPDATECONSTITUENCIESID,
INPUT.STARTDATE
from @INPUTDATETO INPUT
inner join dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES on INPUT.CONSTITUENCYCODEID = BATCHCONSTITUENTUPDATECONSTITUENCIES.CONSTITUENCYCODEID
inner join dbo.BATCHCONSTITUENTUPDATE on BATCHCONSTITUENTUPDATE.ID = BATCHCONSTITUENTUPDATECONSTITUENCIES.BATCHCONSTITUENTUPDATEID
where
BATCHCONSTITUENTUPDATE.PRIMARYRECORDID = @CONSTITUENTID
and BATCHCONSTITUENTUPDATECONSTITUENCIES.DATEFROM < INPUT.STARTDATE
and BATCHCONSTITUENTUPDATECONSTITUENCIES.DATETO is null
and INPUT.ISSYSTEM = 0 and BATCHCONSTITUENTUPDATE.ID = @BATCHCONSTITUENTUPDATEID
)
update dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES
set
DATETO = dateadd(day, -1, UPDATEROWS_USERDEFINDED_DATETO.STARTDATE),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from UPDATEROWS_USERDEFINDED_DATETO
where
BATCHCONSTITUENTUPDATECONSTITUENCIES.ID = UPDATEROWS_USERDEFINDED_DATETO.BATCHCONSTITUENTUPDATECONSTITUENCIESID
and UPDATEROWS_USERDEFINDED_DATETO.ROWNUMBER = 1;
--Defaulting system defined DATETO
with UPDATEROWS_SYSTEMDEFINDED_DATETO as
(
select
ROW_NUMBER() over (partition by BATCHCONSTITUENTUPDATE.PRIMARYRECORDID, BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.CONSTITUENCYCODEID order by BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATEFROM desc) as ROWNUMBER,
BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.ID as BATCHCONSTITUENTUPDATECONSTITUENCIESID,
INPUT.STARTDATE
from @INPUTDATETO INPUT
inner join dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM on INPUT.CONSTITUENCYCODEID = BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.CONSTITUENCYCODEID
inner join dbo.BATCHCONSTITUENTUPDATE on BATCHCONSTITUENTUPDATE.ID = BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.BATCHCONSTITUENTUPDATEID
where
BATCHCONSTITUENTUPDATE.PRIMARYRECORDID = @CONSTITUENTID
and BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATEFROM < INPUT.STARTDATE
and BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATETO is null
and INPUT.ISSYSTEM = 1 and BATCHCONSTITUENTUPDATE.ID = @BATCHCONSTITUENTUPDATEID
)
update dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM
set
DATETO = dateadd(day, -1, UPDATEROWS_SYSTEMDEFINDED_DATETO.STARTDATE),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from UPDATEROWS_SYSTEMDEFINDED_DATETO
where
BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.ID = UPDATEROWS_SYSTEMDEFINDED_DATETO.BATCHCONSTITUENTUPDATECONSTITUENCIESID
and UPDATEROWS_SYSTEMDEFINDED_DATETO.ROWNUMBER = 1;
--Defaulting user defined - DATEFROM
with UPDATEROWS_USERDEFINED_DATEFROM as
(
select
ROW_NUMBER() over (partition by BATCHCONSTITUENTUPDATE.PRIMARYRECORDID, BATCHCONSTITUENTUPDATECONSTITUENCIES.CONSTITUENCYCODEID order by BATCHCONSTITUENTUPDATECONSTITUENCIES.DATEFROM desc) as ROWNUMBER,
BATCHCONSTITUENTUPDATECONSTITUENCIES.ID as BATCHCONSTITUENTUPDATECONSTITUENCIESID,
INPUT.ENDDATE
from @INPUTDATEFROM INPUT
inner join dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES on INPUT.CONSTITUENCYCODEID = BATCHCONSTITUENTUPDATECONSTITUENCIES.CONSTITUENCYCODEID
inner join dbo.BATCHCONSTITUENTUPDATE on BATCHCONSTITUENTUPDATE.ID = BATCHCONSTITUENTUPDATECONSTITUENCIES.BATCHCONSTITUENTUPDATEID
where
BATCHCONSTITUENTUPDATE.PRIMARYRECORDID = @CONSTITUENTID
and BATCHCONSTITUENTUPDATECONSTITUENCIES.DATETO > INPUT.ENDDATE
and BATCHCONSTITUENTUPDATECONSTITUENCIES.DATEFROM is null
and INPUT.ISSYSTEM = 0 and BATCHCONSTITUENTUPDATE.ID = @BATCHCONSTITUENTUPDATEID
)
update dbo.BATCHCONSTITUENTUPDATECONSTITUENCIES
set
DATEFROM = dateadd(day, 1, UPDATEROWS_USERDEFINED_DATEFROM.ENDDATE),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from UPDATEROWS_USERDEFINED_DATEFROM
where
BATCHCONSTITUENTUPDATECONSTITUENCIES.ID = UPDATEROWS_USERDEFINED_DATEFROM.BATCHCONSTITUENTUPDATECONSTITUENCIESID
and UPDATEROWS_USERDEFINED_DATEFROM.ROWNUMBER = 1;
--Defaulting system defined - DATEFROM
with UPDATEROWS_SYSTEMDEFINED_DATEFROM as
(
select
ROW_NUMBER() over (partition by BATCHCONSTITUENTUPDATE.PRIMARYRECORDID, BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.CONSTITUENCYCODEID order by BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATEFROM desc) as ROWNUMBER,
BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.ID as BATCHCONSTITUENTUPDATECONSTITUENCIESID,
INPUT.ENDDATE
from @INPUTDATEFROM INPUT
inner join dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM on INPUT.CONSTITUENCYCODEID = BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.CONSTITUENCYCODEID
inner join dbo.BATCHCONSTITUENTUPDATE on BATCHCONSTITUENTUPDATE.ID = BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.BATCHCONSTITUENTUPDATEID
where
BATCHCONSTITUENTUPDATE.PRIMARYRECORDID = @CONSTITUENTID
and BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATETO > INPUT.ENDDATE
and BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.DATEFROM is null
and INPUT.ISSYSTEM = 1 and BATCHCONSTITUENTUPDATE.ID = @BATCHCONSTITUENTUPDATEID
)
update dbo.BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM
set
DATEFROM = dateadd(day, 1, UPDATEROWS_SYSTEMDEFINED_DATEFROM.ENDDATE),
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from UPDATEROWS_SYSTEMDEFINED_DATEFROM
where
BATCHCONSTITUENTUPDATECONSTITUENCIESSYSTEM.ID = UPDATEROWS_SYSTEMDEFINED_DATEFROM.BATCHCONSTITUENTUPDATECONSTITUENCIESID
and UPDATEROWS_SYSTEMDEFINED_DATEFROM.ROWNUMBER = 1;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end