USP_FENXT_SYNCHRONIZE_PROJECTS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@LASTUPDATETIME | datetime | IN | |
@APPUSERID | uniqueidentifier | IN | |
@DEFAULTPURPOSETYPEID | uniqueidentifier | IN | |
@ROWSAFFECTED | int | INOUT | |
@BUSINESSPROCESSSTATUSID | uniqueidentifier | IN |
Definition
Copy
CREATE proc dbo.USP_FENXT_SYNCHRONIZE_PROJECTS
(
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@LASTUPDATETIME datetime = '17530101',
@APPUSERID uniqueidentifier = null,
@DEFAULTPURPOSETYPEID uniqueidentifier = null,
@ROWSAFFECTED int OUTPUT,
@BUSINESSPROCESSSTATUSID uniqueidentifier = null
)
as
set nocount on
set @ROWSAFFECTED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
select
USERID
into #USERIDGROUP
from dbo.DESIGNATIONLEVEL
union
select
USERID
from dbo.DESIGNATION;
create table #TEMPDESIGNATIONSTOSYNC
(ID uniqueidentifier,
DESIGNATIONID uniqueidentifier,
DESIGNATIONNAME nvarchar(255));
insert into #TEMPDESIGNATIONSTOSYNC
(ID,
DESIGNATIONID,
DESIGNATIONNAME)
select
FENXTPROJECTFILTERED.ID,
isnull(DESIGNATIONALTLOOKUPID.DESIGNATIONID, DESIGNATION.ID),
FENXTPROJECTFILTERED.DESCRIPTION
from
(select ID, DESCRIPTION, UIPROJECTID, TYPE, STARTDATE, ENDDATE, DESIGNATIONID
from dbo.FENXTPROJECT
where PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID) as FENXTPROJECTFILTERED
left join dbo.DESIGNATIONALTLOOKUPID
on FENXTPROJECTFILTERED.UIPROJECTID = DESIGNATIONALTLOOKUPID.ALTLOOKUPID
and DESIGNATIONALTLOOKUPID.ALTLOOKUPIDTYPECODEID = 'E5837E89-B51A-4BAD-8E06-50D515DC64A2'
left join dbo.DESIGNATION
on FENXTPROJECTFILTERED.UIPROJECTID = DESIGNATION.USERID
where FENXTPROJECTFILTERED.DESIGNATIONID is null
and (FENXTPROJECTFILTERED.TYPE <> '' or @DEFAULTPURPOSETYPEID is not null);
if @DEFAULTPURPOSETYPEID is null
insert into dbo.DESIGNATIONLEVELTYPE
(ID,
DESCRIPTION,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select
newid(),
FENXTPROJECTTYPEFILTERED.TYPE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
(select distinct FENXTPROJECT.TYPE
from #TEMPDESIGNATIONSTOSYNC inner join dbo.FENXTPROJECT on #TEMPDESIGNATIONSTOSYNC.ID = FENXTPROJECT.ID
where #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID is null
and not exists(select 1 from DESIGNATIONLEVELTYPE where DESIGNATIONLEVELTYPE.DESCRIPTION = FENXTPROJECT.TYPE)) as FENXTPROJECTTYPEFILTERED;
declare PROJECTCURSOR cursor local fast_forward for
select
#TEMPDESIGNATIONSTOSYNC.ID,
#TEMPDESIGNATIONSTOSYNC.DESIGNATIONNAME,
FENXTPROJECT.UIPROJECTID,
FENXTPROJECT.STARTDATE,
FENXTPROJECT.ENDDATE,
isnull(@DEFAULTPURPOSETYPEID, DESIGNATIONLEVELTYPE.ID) as PURPOSETYPEID
from #TEMPDESIGNATIONSTOSYNC
inner join dbo.FENXTPROJECT on #TEMPDESIGNATIONSTOSYNC.ID = FENXTPROJECT.ID
left join dbo.DESIGNATIONLEVELTYPE on FENXTPROJECT.TYPE = DESIGNATIONLEVELTYPE.DESCRIPTION
left join dbo.DESIGNATIONLEVEL on FENXTPROJECT.DESCRIPTION = DESIGNATIONLEVEL.NAME and isnull(@DEFAULTPURPOSETYPEID, DESIGNATIONLEVELTYPE.ID) = DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID
where #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID is null
and FENXTPROJECT.UIPROJECTID not in (select USERID from #USERIDGROUP);
declare @PROJECTID uniqueidentifier;
declare @PROJECTDESCRIPTION nvarchar(255);
declare @UIPROJECTID nvarchar(100);
declare @STARTDATE date;
declare @ENDDATE date;
declare @PURPOSETYPEID as uniqueidentifier;
open PROJECTCURSOR
fetch next from PROJECTCURSOR into @PROJECTID, @PROJECTDESCRIPTION, @UIPROJECTID, @STARTDATE, @ENDDATE, @PURPOSETYPEID
while @@fetch_status = 0
begin
declare @ID uniqueidentifier = newid()
-- Update the PROJECTDESCRIPTION (designation/purpose name) in order to avoid a duplicate record DESIGNATIONLEVEL error
if exists (select 1 from dbo.DESIGNATIONLEVEL where DESIGNATIONLEVEL.NAME = @PROJECTDESCRIPTION and DESIGNATIONLEVEL.DESIGNATIONLEVELTYPEID = @PURPOSETYPEID)
set @PROJECTDESCRIPTION = @PROJECTDESCRIPTION + '_' + @UIPROJECTID;
exec dbo.USP_DATAFORMTEMPLATE_ADD_PURPOSEANDDESIGNATION
@ID=@ID,
@DESIGNATIONLOOKUPID = @UIPROJECTID,
@DESIGNATIONVANITYNAME = @PROJECTDESCRIPTION,
@PURPOSENAME = @PROJECTDESCRIPTION,
@PURPOSETYPEID = @PURPOSETYPEID,
@PURPOSELOOKUPID = @UIPROJECTID,
@PURPOSEVANITYNAME = @PROJECTDESCRIPTION,
@STARTDATE = @STARTDATE,
@ENDDATE = @ENDDATE,
@ISREVENUEDESIGNATION = 1,
@INITIALPARENTDESIGNATIONID = null,
@CURRENTAPPUSERID = @APPUSERID,
@CHANGEAGENTID = @CHANGEAGENTID,
@ISENDOWED = 0,
@ISFULLYFUNDED = 0,
@ISINCOMETOPRINCIPAL = 0,
@STATEMENTWORDING = '';
update #TEMPDESIGNATIONSTOSYNC
set DESIGNATIONID = @ID
where ID = @PROJECTID;
fetch next from PROJECTCURSOR into @PROJECTID, @PROJECTDESCRIPTION, @UIPROJECTID, @STARTDATE, @ENDDATE, @PURPOSETYPEID
end
close PROJECTCURSOR;
deallocate PROJECTCURSOR;
insert into dbo.DESIGNATIONALTLOOKUPID
(DESIGNATIONID,
ALTLOOKUPIDTYPECODEID,
ALTLOOKUPID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select
#TEMPDESIGNATIONSTOSYNC.DESIGNATIONID,
'E5837E89-B51A-4BAD-8E06-50D515DC64A2',
FENXTPROJECT.UIPROJECTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from #TEMPDESIGNATIONSTOSYNC
inner join FENXTPROJECT on #TEMPDESIGNATIONSTOSYNC.ID = FENXTPROJECT.ID
where not exists (select 1 from DESIGNATIONALTLOOKUPID where DESIGNATIONALTLOOKUPID.DESIGNATIONID = #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID and DESIGNATIONALTLOOKUPID.ALTLOOKUPIDTYPECODEID = 'E5837E89-B51A-4BAD-8E06-50D515DC64A2')
and #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID is not null;
update dbo.FENXTPROJECT
set DESIGNATIONID = #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.FENXTPROJECT
inner join #TEMPDESIGNATIONSTOSYNC on FENXTPROJECT.ID = #TEMPDESIGNATIONSTOSYNC.ID;
select @ROWSAFFECTED = @@ROWCOUNT;
update dbo.DESIGNATION
set ISACTIVE = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.DESIGNATION
inner join dbo.FENXTPROJECT on DESIGNATION.ID = FENXTPROJECT.DESIGNATIONID
where FENXTPROJECT.DATEMODIFIED > @LASTUPDATETIME
and (FENXTPROJECT.POSTINGDATE is null or FENXTPROJECT.PREVENTPOSTINGAFTER = 0)
and DESIGNATION.ISACTIVE = 0
and FENXTPROJECT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID;
select @ROWSAFFECTED += @@ROWCOUNT;
update dbo.DESIGNATION
set ISACTIVE = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from dbo.DESIGNATION inner join dbo.FENXTPROJECT on DESIGNATION.ID = FENXTPROJECT.DESIGNATIONID
where FENXTPROJECT.PREVENTPOSTINGAFTER = 1
and FENXTPROJECT.POSTINGDATE < dateadd(d,1,convert(date,@CURRENTDATE))
and DESIGNATION.ISACTIVE = 1
and FENXTPROJECT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID;
select @ROWSAFFECTED += @@ROWCOUNT;
--will gather any exceptions from process of creating the designations from the FENXTPROJECT staging table
insert into dbo.FENXTSYNCPROCESSEXCEPTIONS(
PDACCOUNTSYSTEMID,
BUSINESSPROCESSSTATUSID,
SYNCOPERATIONTYPECODE,
RAISERRORID,
EXCEPTIONRECORDID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED)
select
FENXTPROJECT.PDACCOUNTSYSTEMID,
@BUSINESSPROCESSSTATUSID,
2,
'UC_DESIGNATION_PURPOSE_USERID',
FENXTPROJECT.ID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from #TEMPDESIGNATIONSTOSYNC
inner join dbo.FENXTPROJECT on #TEMPDESIGNATIONSTOSYNC.ID = FENXTPROJECT.ID
where #TEMPDESIGNATIONSTOSYNC.DESIGNATIONID is null
and FENXTPROJECT.UIPROJECTID in (select USERID from #USERIDGROUP);
select @ROWSAFFECTED -= @@ROWCOUNT;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
if(('tempdb..#USERIDGROUP') is not null)
begin
drop table #USERIDGROUP;
end